0

FFT を実装しようとしていますが、私が行っていることが正しいかどうかを尋ねたいと思います。FFT関数にはGSL(GNU Science Library)を使用しています。FFT に関するチュートリアルを読んできましたが、正しい方向に進んでいることを誰かに確認してもらいたいと思います。

これが私がウェブ資料を介して思いついた方法です:

The input is a list of the amplitudes of a sin wave generated 
in audacity at 440Hz (A).  

The sample rate is 44100

# FFT points: 1024

誰かがFFTポイントの数を選択する方法を説明できますか? または、それがまったく重要かどうか。見落としているかもしれませんが、この番号を選択する方法が見つからないようです。
編集: この FFT ウィンドウに名前を付ける方が適切だと思います。周波数を見つけるためにサンプル全体でウィンドウを 1024 ポイントスライドさせるためです。

 bin size = 44100 / 1024 = 43.066

FFT を実行した後、振幅の別のリストがあり、それらがどのビンにあるかに基づいて、それが検出されている周波数です。正しいですか? 生成された信号の周波数を見つけるために、最高のピークを見つけたいですか?

A bin is defined as a peak if and only if the bin has an amplitude greater than 
2 bins to the left and 2 bins to the right.

この方法は、入力信号の周波数を取得するための正しい軌道に乗っていますか?

4

1 に答える 1

2

ピッチはピーク周波数とは異なる場合があるため、FFT だけではピッチを確実に認識できません。ピッチについては、プロセスの一部として FFT を使用するものもあれば、使用しないものもあるピッチ推定アルゴリズムを調査する必要があります。

スペクトル推定に FFT を使用する場合、FFT が長いほど周波数の FFT ビン間隔が近くなります。これは、推定される周波数がウィンドウの持続時間の間静止している場合に役立ちます。

于 2012-03-05T08:31:03.290 に答える