Goertzelアルゴリズムを使用すると、実際により良い周波数分解能が得られますか?


19

私はこの記事を読んでいますが、著者がGoertzelアルゴリズムに関して「周波数分解能」を自由に使用していることに少し混乱しています。

基本的な質問:Goertzelアルゴリズムを使用すると、実際に特定の対象帯域でより多くの周波数分解能得られますか、それとも特定の対象帯域のみでFFTを効率的に計算しますか?サンプルの?

たとえば、が100 KHz(固定)であり、データサンプル数が10000であるとしう(また固定)。FFTの長さもである通常のFFTを計算する場合、周波数分解能は予想どおりであり、10 Hzに等しくなります。これは、私のビンが-50,000 Hz〜50,000 Hzの10 Hzで区切られていることを意味します。FsNNFsN

次に、Geortzelアルゴリズムを使用して、たとえば20,000〜21,000 Hzの範囲の周波数のみを表示したいとします。サンプル数に同じを使用し、FFTサイズに同じを使用する場合、周波数分解能はどうなりますか?まだ10 Hzですか?それとも Hzですか?NN21,00020,00010000=0.1

0〜50,000の場合と同じ inを使用して21,000〜20,000の周波数を評価することにより、メインローブ上のポイントを単純に補間するだけでは、周波数分解能を実際に向上させていないように感じます。N

これは正しい理解ですか?

回答:


18

あなたの理解は正しいです。

Goertzelアルゴリズムは、同じ長さまたはサンプル数のDFTまたはFFTの1ビンとほぼ同じ結果をもたらします(FFT回転因子はトリガー再帰によって生成されます)。ゲルツェルの長さ。しかし、多くの形式のGoertzelアルゴリズムは、振幅のみを提供し、FFT 1ビンの結果の複雑な結果や位相は提供しません。また、計算上、一般的なGoertzelは一般的なFFTよりも数値的にわずかに安定性が低い場合があります。非整数周期の開口周波数の場合、結果は同じ長さのDFTまたはFFTのビン間のsinc補間に相当します(FFT結果のより一般的な放物線補間よりも補間の精度がわずかに高い場合があります) )。

補間は、グラフィカルな意味(より多くのプロットポイント)で解像度を高める、または情報理論的な意味ではなく、最大値を視覚的に見つけやすくする、または2つの別々のピークとして2つの近い間隔のスペクトル線をより良く分離するために言われるかもしれません。


3
2番目の段落:hotpaw2は非常によく言いました。これは多くの人を混乱させると思います。はい、Goertzel Algoは選択サブバンドでFFTを計算する高速な方法であり、ビルトインFドメイン補間もスローされるようです。 FFT。
スペイシー

1

私はあなたが言及した記事にアクセスすることができませんでしたが、私はあなたが見つけるかもしれないと思うこの1つは非常に興味深いです。著者は、与えられた信号の基本周波数の非整数倍の周波数で振幅と位相を見つけるために使用できるGoertzelアルゴリズムのバージョンを提示しました。つまり、彼らのアルゴリズムは周波数分解能を改善します。この記事には、数学的な証明とアルゴリズムのコードが含まれています。

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