1

私は.NETでセンサーから信号をリアルタイムで取得し、その信号のFFTをリアルタイムで取得する小さなソフトウェアを開発しています。

FFT 関数には alglib ライブラリを使用しました。ここでの目的は、ある特定の周波数の強度を時間内に観察することです。

ソフトウェアを確認するために、入力に周波数 1 Hz の正弦波を入力しました。次の画像は、ソフトウェアからのスクリーン ショットを示しています。上のグラフは、1 Hz でピークを示す周波数スペクトルを示しています。しかし、このピークが時間的に観測されると、下のグラフに示すように、強度は正弦波のように振る舞います。

ここに画像の説明を入力

私のサンプリング周波数は 30kHz です。私が理解していないのは、このサイン信号をどのように取得しているのか、そして周波数の大きさがこのように振る舞うのはなぜですか?

4

1 に答える 1

4

これはWindowingの効果の例です。これは、完全に周期的な信号を扱う場合を除いて、FFT が正確な操作ではないという事実に由来します。信号をウィンドウ処理すると、完全に繰り返されない可能性のある小さなチャンクに変換されます。FFT アルゴリズムは、無限に繰り返されるこのオーディオ チャンクのスペクトルを計算します。これは完全な正弦波ではないため、結果の正確な値は得られません。さらに、ウィンドウが信号周波数の倍数と完全に一致しない場合、ウィンドウは信号に対して位相シフトし、ウィンドウは信号のわずかに異なるチャンクをキャプチャし、FFT は異なるスペクトル無限に繰り返される信号。考えてみると、ウィンドウが信号の次の周期に追いつくため、この位相差も当然周期的になります。

ただし、これは強度の小さな変動を説明するだけです。下のグラフの軸に正しいラベルを使用したと仮定すると (再確認する必要があります)、別の何かが間違っています。ウィンドウが小さすぎる可能性があります (ただし、スペクトルブリーディングが増えるため、そうではないと思います)。私が思いついた別の可能性は、マグニチュードではなく、FFT の部をプロットしているだけかもしれないということです。位相が変化すると、実数部分と複素数部分が変化する可能性がありますが、大きさはほぼ同じままであると予想されます。

于 2013-02-26T17:49:29.627 に答える