フーリエ変換またはSTFTでウィンドウを狭くすると、周波数分解能が低下するのはなぜですか?


7

FT(フーリエ変換)とSTFT(短時間フーリエ変換)の理論では、 「ウィンドウが広いと周波数分解能は高くなりますが、時間分解能は低くなります。ウィンドウが狭いと時間分解能は高くなりますが周波数分解能は低くなります」

誰かが狭いウィンドウが低い周波数分解能を与える理由を説明できますか?

回答:



4

他の答えは良いですが、私は直感的/視覚的な男なので、もっと直感的/視覚的な答えを出そうとするつもりでした。

下の図は、ほぼ同じ周波数の2つのトーンのプロットです。1つのトーンは赤でプロットされ、もう1つのトーンは青でプロットされます。

短いウィンドウ

次のコードでMatlabで画像を生成しました:

tone1 = sin(2*pi*.05 * (0:99));
tone2 = sin(2*pi*.0501 * (0:99));
plot(tone1)
hold on
plot(tone2, 'r')

画像とコードの両方からわかるように、2つのトーンの周波数は非常に接近しています。彼らはこの短いウィンドウの終わりに向かって少し離れ始めていますが、DFTがそれらを区別できなかった点まで、それらはまだ非常に似ています。

同じ周波数で同じトーンを作成する場合、ウィンドウを長くするだけです(今回は100ではなく5000サンプル)、大きく異なる画像が得られます。明らかに、各トーンにはより多くのサイクルがあります...

長い窓

...しかし、それは興味深い部分ではありません。ウィンドウの最後にズームインすると、興味深い部分が表示されます。

長いウィンドウのズーム

2つのトーンがウィンドウの端で180度位相がずれていることがわかります。これにより、2つのトーンを簡単に区別できます。では、5000個のサンプルを選択する方法を教えてください。2つのトーンの違いはなので、サンプルラジアンです。.0002πradassaメートルple5000.0002πradassaメートルple=π

別の答えが述べたように、DFTの解像度は、サンプル周波数をサンプル数(つまり、ウィンドウ長)で割ったものです。私は暗黙的にサンプル周波数を1にしたので、1を5000(サンプル数)で割ると、分解能は.0002 Hzになります。実際のトーンは.0001 Hz異なります。これは、tone2が、tone1のビンとその隣のビンの両方でエネルギーを持っていることを意味します(他のすべてのビンでも少しだけですが、それは別の話です)。


3

DFTの周波数分解能またはビン幅を計算する場合、式は次のとおりです。

frequency_resolution = sample_rate/fft_size

たとえば、サンプルレートが8000 Hzのオーディオ信号があり、本当に高い周波数分解能が必要だとします。1秒間に8000サンプルしかありませんが、本当に高い周波数分解能を得るために32K FFTを取得したいとします。8000サンプルのシーケンスの32K FFTを取得する場合、FFTを満たすためにシーケンスに0トンを埋め込む必要があります。これを行うことによる付加価値はないので、周波数領域で高解像度を得る一方で、サンプルのサポートが不十分であるため、補間されたデータです。周波数領域のプロットは滑らかで補間されています。

今、あなたはたくさんのデータを持っているが、たくさんのデータがFFTレジスターを満たすのに時間がかかると言います。たとえば、サンプルレートが8000であるのに、本当に高い解像度が必要で、それを待つとします。その32K FFTを満たすまで4秒待ちます。これで、そのFFTを実行するときに、ゼロを埋めるための余分なパディングはありません。したがって、プロットを見ると、これらのビンは内挿されていませんが、それを待っているため、多くのデータによってサポートされています。

それが違いです。サンプルサポートが少ない長いFFTを使用すると、補間されたデータが得られます。つまり、それはあなたが言う時間と周波数のトレードオフです。高解像度が必要な場合は、それをサポートするデータが必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.