2012-03-28 8 views
-1

FFT(高速フーリエ変換)の決定は、しばしば時間 - 周波数トレードオフです。より長い時間(15〜20秒)にわたってFFTを計算すると、より正確な周波数を得ることができますが、その数は非常に少なくなります。より短い時間間隔の場合、周波数はしばしば急激な変化を示す。 十分な数の周波数ポイントで信頼性の高いデータを取得するのに最適な時間間隔はどのくらいですか?Javaでの所定の時間における周波数の決定

+2

「十分な数の周波数ポイント」 - 何には十分ですか? –

+0

という2つのサンプルを照合するのに十分です:)。 – sumit

+2

理論的には、処理するサンプルの数を増やすと精度が向上し、唯一の「コスト」は処理時間/スペースになります。もっと頻繁に測定する必要がある場合は、スライディングウィンドウを使用してください。ここでは、2000サンプルごとに8000サンプルの「ウィンドウ」を処理し、すでに処理したサンプル(6000)を再処理します。しかし、「正しい」時間間隔は、あなたのニーズに最も適したもので、1秒に10回、1分に10回になる可能性があります。 –

答えて

1

これは、お使いのオーディオの種類によって異なります。たぶんウェーブレット解析の使用を検討する必要があります。これにより、低周波の認識を失うことなく、非常に正確な高周波を抽出することができます。

+0

私はマイクからの入力を受けています。オーディオ形式は次のとおりです。 float sampleRate = 44100; int sampleSizeInBits = 8; int channels = 1; \tブール値signed = true; \t boolean bigEndian = true; – sumit

+0

人間が聞くことができるすべてのもの(2Hz〜22,5Khz)を与える1sec FFTのようなものはありませんか?その後、1秒のfftsの結果をミックス*します。私は完全に間違っていますか?私は問題を見ることができません(他の手段で減らすことができる低振幅のノイズを除いて) – user978548

1

は、Nysquist-Shannon Sampling Theoremの読み取り値を持ちます.1/2Bでサンプリングします。ここで、Bは信号の最大周波数で、データ損失なしで再構成できるようにします。

これは、試料中の最小周波数の2倍の周期のためにサンプリングすることにより、信号のために良い十分なFFTを得ることができるように私には意味 - サンプルが周期的である場合はつまり、私は、推測:P

+1

Bが最大周波数である場合、半分ではなく、少なくとも2倍のサイズが必要です。 –

1

「ベスト」はあなたのニーズに依存します。

時間の分解能が重要な場合は、ポイントの数を減らす方が良い場合があります。

周波数分解能がより多くの点より重要である場合は、より良い場合があります。

ノイズフロアが高い場合は、さらに多くのポイントが良いかもしれません。

気にしない場合は、短いFFTを使用して計算時間とエネルギーを節約してください。 (または、FFTを気にせず、/ dev/randomからいくつかの結果を取るだけです)。

関心のある信号が静止していない場合(時間が経って変化するなど)、FFTを短くして、個々のスペクトルイベントをそれぞれFFTウィンドウに分けることができます。

スペクトル信号のピークと隣接するノイズのピークを明確に分離できる周波数分解能が必要な場合は、分離したいピーク間の最小デルタ周波数で除したサンプルレートの2倍以上のFFT長を必要とします。あなたが窓ならば。この精度が必要ない場合は、FFTを短くしてください。

ノイズレベルと干渉が目的の信号と比較して十分に低い場合は、はるかに短いFFTを使用して分離されたピークから、またはFFTなしで、周波数推定値を補間できます。 1つの正弦波に対してノイズがゼロの場合、わずか3または4の非エイリアスサンプルポイントが可能です。

関連する問題