FFTの実行

次に生成したsine波のFFT実行を行います。

■FFTの実行
scilabでのFFTの実行は以下にて行います。

-->fft_out = fft(sine)
 fft_out  =


        column 1 to 7

  - 3.216D-16  - 4.189D-16 + 1.064D-16i  
- 1.034D-15 - 4.i    5.591D-16 - 5.965D-16i    
1.225D-16  - 3.142D-16 - 3.515D-16i    4.098D-16


fft関数の出力値は、複素数となります。
これらを周波数のレベルとするには
各要素の絶対値を取る必要があります。

各要素の絶対値取得にはabs関数を利用します。

-->fft_abs = abs(fft_out)
 fft_abs  =

         column  1 to 11

3.216D-16    4.322D-16    4.    8.176D-16    
1.225D-16    4.715D-16    4.098D-16    6.782D-16    
5.666D-16    6.782D-16    9.371D-16

■FFTの表示

FFT結果の表示を行います。

-->plot(fft_abs)

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (fft_result_raw.png)


■FFT結果の補正
FFT結果を見ますとx=3,x=15が4.0となっています。
実際にはx=3, y =4の値が信号(周波数1250H、波高値0.5)
を表していまして、その結果を得るには補正が必要です。

○FFTの解析周波数分解能
FFTの解析周波数分解能は
FFTを実行するサンプリング数に比例します。

FFTresolution = FS/N
FS : サンプリング周波数
N : FFT実行のサンプル数

今回の例では
FS = 10kHz, N = 16ですから
FFT周波数分解能 = 10k/16 = 625 [Hz]
となります。
よって、信号は
0[Hz], 625[Hz], 1250[Hz], 1875[Hz] ・・ 9375[Hz]
の周波数成分としてFFT解析されます。

また、scilabはベクトル変数は"1"から始まるため
"x=3"のところが"周波数1250[Hz]"を表します。



○FFTレベルの補正
FFTの結果を見ますと
1250[Hz]のレベルが4.0、
また、8750[Hz]のレベルも4.0となってます。

入力信号の1250[Hz]レベルは0.5で生成しましたから
結果が実際の値と一致していませんね。
これに対応するには以下の補正をすることが必要です。

  • FFTポイント数(FFTサンプル数)に依存する補正
  • 折り返し歪み対応による補正

①FFTポイント数(FFTサンプル数)に依存する補正
FFT結果のレベルはFFTポイント数"N"だった場合"1/N"します。

今回の例では、N = 16ですのでFFTポイント数の補正値は
1/N = 1/16 = 0.25となります。

②折り返し歪み対応による補正
解析信号がACの場合、
そのエネルギーが折り返し歪みの信号に分散してしまい
波高値が1/2となりますので
折り返し歪みの補正値は"2"となります。
この補正値はFFTポイント数に依存しません。

ちなみに、
折り返し歪みの周波数はサンプリング周波数から信号周波数を
引くことで求められ、今回の例では
10,000[Hz] - 1,250[Hz] = 8,750[Hz]
から、8750[Hz]の信号が折り返し歪みとなります。
グラフからも、折り返し歪みのレベルが信号と同じであることが
分かります。


最後にFFTの結果に①②の補正をかけグラフ表示をします。
期待通りのFFT結果が得られます。


-->fft_correction = fft_abs * 2/16
 fft_correction  =


         column  1 to 11

    4.020D-17    5.403D-17    0.5    1.022D-16    
1.531D-17    5.894D-17    5.122D-17    8.477D-17    
7.082D-17    8.477D-17    1.171D-16


-->xplot = 0 : 625 : 9375
 xplot  =


         column  1 to 15

    0.    625.    1250.    1875.    2500.    
3125.    3750.    4375.    5000.    5625.    6250.    
6875.    7500.    8125.    8750.


-->plot(xplot, fft_correction) 

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (fft_result_correction.png)
最終更新:2009年07月26日 18:32
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。