1

10+-0.05Hz 前後のサンプリング レート (新しいサンプルを取得するたびに変化) を持つ信号を FFT するために fftw を使用しています。私の入力信号には 200 個のサンプルがあります。100個の複雑な番号の出力を取得しています。ここで、fft の解像度を取得し、evry ビンに対応する周波数を取得するために、これを使用します。

sampFreq = (float)numFrames*1000000/diffT;
a=sampFreq/numFrames;           //freq resolution of each fft bin
b=a/2;
freq = a*index + b;            // where index is the index of output bin

numFrames は、出力サイズではなく、fft (200) への初期入力サイズです。私はそれを正しくやっていますか、それとも2の係数がありませんか? また、この場合にウィンドウ処理を使用する必要がありますか (~10Hz および 200 フレームでのサンプリングのように)

また、fftw のドキュメントによると、サンプルは必ずしも 2 だけではなく、より小さな素数の倍数である可能性があるため、信号をゼロでパディングしていないことに注意してください。

4

2 に答える 2

4

ウィンドウ処理は、メイン ローブが広くて太いため、周波数分解能を低下させますが、各 DFT/FFT ビン フィルターの阻止帯域の減衰がはるかに低いため、干渉とノイズの影響を軽減します。どちらの効果が悪いかは、信号対雑音比および/または分析中の信号の干渉の種類によって異なります。ウィンドウは、予想されるノイズまたは干渉レベルが高いほど有用である可能性が高くなります。

高品質の補間カーネルを使用することで、ノイズ フロアよりもはるかに高い分離されたスペクトル ピークの周波数分解能を、1 DFT/FFT ビン幅よりもはるかに細かくすることができます。最小 3 dB の分離ギャップで 2 つの個々のピークを分離する分解能は、使用するウィンドウ処理に応じて、おおよそ 2 ~ 3.5 DFT/FFT ビン幅です。ウィンドウなし (例: 長方形ウィンドウ) では、2 つの近接したスペクトル ピークをゼロ ノイズで解決する最高の解像度が得られます。

于 2012-10-22T16:50:41.350 に答える
4

はい、FFT の前にウィンドウ関数を使用する必要があります。そうしないと、スペクトルの漏れが発生します (スペクトルが不鮮明になります)。

スペクトルの解像度は Fs / N = 10 / 200 = 0.05 Hz なので、100 ポイントのスペクトルは、0 Hz (DC) から 5.0 Hz (ナイキスト) までの周波数を表し、各「ビン」の幅は 0.05 Hz です。

サンプルレートのジッターは、結果のスペクトルにいくぶん予測できない影響を与えることに注意してください。少なくとも、多少不正確になり、解像度が低下する可能性があります。

于 2012-10-22T15:32:36.513 に答える