4

fft と解像度に関するウィキペディアの記事とスタックオーバーフローの記事をすべて読みました。ただし、大きな遅延の問題を発生させずに高解像度の周波数を取得する方法を学ぶのに役立つものは何もありません.

信号処理を正しく理解している場合:

サンプリング レートは 44,100 で、ブロック数は 256 です。その場合、周波数分解能は、FFT を使用した周波数ビンごとに 44,100/2/256 = 86.1 Hz になります。

http://www.tunelab-world.com/http://www.spectraplus.com/のような、周波数を 0.01 Hz まで測定できる例をよく見かけます。

上記の方法でそれを行った場合、そのような解像度を得るには 4410,000 個のビンが必要になります。44,100 のサンプリング レートでは、入力からデータを入力するのに 100 秒かかります。

私は何かが欠けていることを知っていますが、何がわかりません。

どうすれば信号を取得し、膨大な数のビンを取得したり、永遠に待機したりすることなく、そのような精度でグラフを描画したり、ピークの周波数を表示したりできますか?

よろしくお願いします。

4

3 に答える 3

3

高い周波数分解能の FFT 出力が必要な場合は、多くのサンプルに対して FFT を実行する必要があります。単純にそれを回避する方法はありません。

おそらく他のアプリケーションで見られるものは重複しています。最初のデータセットで 4096 ポイントの FFT を実行し、次に 256 サンプルに沿って移動し、別の 4096 ポイントの FFT を実行する場合があります (既に使用したサンプルの 3840 に加えて、新しい256 サンプル)。

これにより、細かい周波数解像度で定期的な (異なる) 更新を表示できます。トランジェント信号のキャプチャには適していませんが、アクティブなディスプレイでは見栄えがします。

于 2011-07-24T23:00:06.363 に答える
2

より高い精度が得られる理由は、周波数推定問題が他の多くの推定問題よりも高い精度で解かれやすいからです。

精度の Cramer-Rao Lower Bound (CRLB) は次の式で与えられます。

ここに画像の説明を入力

これは、周波数推定値の分散 (予想される誤差の尺度) が、測定の持続時間であるTの 3 乗として減少することを意味します。「通常の」推定問題では、この測定値がTの 2 乗になる傾向があります。

FFT マキシマイザー (最大ピークのビン) を使用すると、Tの 2 乗のみが得られます。

Adrian Taylor が言うように、あなたが挙げた例は、おそらくより多くのサンプルから始まり、より短い期間で更新されています。

キックについては、興味深い周波数推定アルゴリズムがいくつかあります。FFT よりも高速で、より正確です。

于 2011-07-25T00:19:46.833 に答える
1

SpectraPlus は、「最大 1,048,576 pts の高解像度 FFT 分析」と述べています。これでは、44.1 kHz で 0.01 Hz の解像度にはなりません。

TuneLab は 0.01 セントまで下がるようですが、「スペクトル表示」は 440 Hz で約 2.5 Hz の解像度を持っているようです。「位相表示」は特別なものではありません。

あなたは何をしようとしているのですか?単にギター チューナーを実装したいだけなら、FFT は必要ありません (おそらく必要ありません)。よくわからないので、PLLに行きます。

于 2011-07-25T00:19:26.253 に答える