Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

fft

iddata オブジェクトの高速フーリエ変換 (FFT)

説明

datf = fft(data) は高速フーリエ変換 (FFT) アルゴリズムを使用して、時間領域 iddata オブジェクト データを周波数領域 iddata オブジェクト datf に変換します。data は実数値信号を含み、定数のサンプル時間 Ts をもちます。datf は、0 からナイキスト周波数までの均等に分布した周波数値をもちます。ナイキスト周波数は、信号長が偶数の場合は含まれますが、信号長が奇数の場合は含まれません。信号強度とノイズ レベルを保持するために、FFT は各変換を信号長の平方根で除算して正規化されます。

datf = fft(data,N) は、変換の長さ N を指定します。既定では、変換の長さは信号長によって決まります。N を含めると、FFT の変換において、data の信号の方が N より短い場合はゼロでパディングされ、それ以外の場合は信号が切り捨てられます。したがって、実数信号の場合の周波数の数は、N が偶数の場合は (N/2)+1N が奇数の場合は (N+1)/2 になります。data に複数の実験が含まれる場合は、N を対応する長さの行ベクトルにすることができます。

datf = fft(data,N,'complex') は、負の周波数を含めるように指定します。実数信号の場合、既定では datf に非負の周波数のみが含まれますが、複素数値信号の場合は常に負の周波数が含まれます。実数の場合に負の周波数を強制するには、'complex' を追加します。

すべて折りたたむ

300 のサンプルが含まれる時間領域データ z1 を読み込んでプロットします。

load iddata1 z1;
plot(z1)

Figure contains 2 axes objects. Axes object 1 with title y1 contains an object of type line. This object represents z1. Axes object 2 with title u1 contains an object of type line. This object represents z1.

データを周波数領域に変換してプロットします。

datf = fft(z1);
plot(datf)

Figure contains 4 axes objects. Axes object 1 with title y1 contains an object of type line. This object represents datf. Axes object 2 contains an object of type line. This object represents datf. Axes object 3 with title u1 contains an object of type line. This object represents datf. Axes object 4 contains an object of type line. This object represents datf.

データを読み込みます。fft を使用し、変換の長さ N100 にして時間領域データ z1 を周波数領域に変換します。

load iddata1 z1;
datf = fft(z1, 100);
plot(datf)

Figure contains 4 axes objects. Axes object 1 with title y1 contains an object of type line. This object represents datf. Axes object 2 contains an object of type line. This object represents datf. Axes object 3 with title u1 contains an object of type line. This object represents datf. Axes object 4 contains an object of type line. This object represents datf.

データを読み込みます。負の周波数を含める zf2 を作成するときに 'complex' を使用して、2 周波数領域オブジェクト zf1 および zf2 を作成します。

結果を比較します。

load iddata1 z1
zf1 = fft(z1,300);
zf2 = fft(z1,300,'complex');
h = plot(zf2,zf1);
legend('zf2','zf1')
opt = getoptions(h);
opt.FreqScale = 'linear';
opt.PhaseMatching = 'on';
setoptions(h,opt)
xlim([-32 32])

Figure contains 4 axes objects. Axes object 1 with title y1 contains 2 objects of type line. These objects represent zf2, zf1. Axes object 2 contains 2 objects of type line. These objects represent zf2, zf1. Axes object 3 with title u1 contains 2 objects of type line. These objects represent zf2, zf1. Axes object 4 contains 2 objects of type line. These objects represent zf2, zf1.

入力引数

すべて折りたたむ

時間領域データ。iddata オブジェクトとして指定します。

変換の長さ。スカラー整数として、または、複数実験データの場合は整数の行ベクトルとして指定します。既定では、N の各要素は、その対応する信号長に等しくなります。

出力引数

すべて折りたたむ

周波数領域データ。iddata オブジェクトとして返されます。

ヒント

fft は、ベース MATLAB® 関数 fft と同じ値を返しません。

  • 実数信号の場合、既定では fft は周波数範囲の正の部分のみの FFT を計算します。MATLAB fft は周波数範囲全体の FFT を計算します。

  • fft1/sqrt(N) で結果をスケーリングします。ここで、N はデータ長です。MATLAB fft はスケーリングを適用しません。

バージョン履歴

R2007a で導入