2012-03-04 5 views
0

私はFFTを実装しようとしています。私がやっていることが正しいかどうか尋ねたいと思います。私はGSL(GNU Science Library)をFFT関数に使用しています。私はFFTのチュートリアルを読んできましたが、私は正しい方向に進んでいることを誰かに確認するよう依頼したいと思います。ここで入力信号を正しく識別するために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ポイントのサンプルをスライドさせます。 FFTを実行した後

bin size = 44100/1024 = 43.066 

、私は、振幅の別のリストを持っており、彼らが何であるかのビンに基づいて、それは、正しい検出された周波数のですか?だから、生成された信号の周波数を見つけるために、私は最高のピークを見つけたいですか?

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. 

入力信号の周波数を得るために正しい方法でこの方法はありますか?

+0

FFTウィンドウのサイズは、お客様のニーズに応じて異なります。どれくらい正確にする必要がありますか?ビンが小さくなればなるほどビンはより正確になり、取得するには数が増えます。 – Brad

+0

申し訳ありませんが、私はそれが誰かの声のピッチを認識できるようにする必要があります。リアルタイムで行うことが望ましいと思います。 –

答えて

2

ピッチがピーク周波数と異なる可能性があるため、FFT単独でもピッチを確実に認識できません。ピッチについては、ピッチ推定アルゴリズムを研究したいが、そのうちのいくつかはプロセスの一部としてFFTを使用するが、多くはそうしない。

スペクトル推定にFFTを使用する場合、FFTが長くなればなるほどFFTビン間隔は周波数に近くなります。推定される周波数がウィンドウの期間中静止している場合に便利です。

関連する問題