周波数が200Hzから10kHzに変化する時変信号のスペクトル分析を行っています。信号の周波数成分の分析にFFTを使用しています。私の質問は:
- 信号の周波数分解能とウィンドウ幅を決定する方法は?
- 時変信号にはどのタイプの窓関数が適していますか?
- FFTに最適なサイズは何ですか?
信号のサンプリングレートは44.1kHzです。
周波数が200Hzから10kHzに変化する時変信号のスペクトル分析を行っています。信号の周波数成分の分析にFFTを使用しています。私の質問は:
信号のサンプリングレートは44.1kHzです。
回答:
固定サンプルレートで作業しているため、FFT長(ウィンドウを同じ幅にする必要があります)により、周波数分解能が向上します。より細かい周波数分解能を持つことの利点は2つあります。明らかに1つは、周波数分解能がより細かく、周波数が非常に近い2つの信号を区別できる可能性があることです。2つ目は、周波数分解能が高いほど、FFTノイズフロアが低くなることです。システムのノイズは固定パワーであり、FFTのポイント数とは関係ありません。そのパワーは(ホワイトノイズの場合)すべての周波数成分に均等に分配されます。したがって、より多くの周波数成分を持つことは、周波数ビンの個々のノイズの寄与が低下することを意味しますが、統合されたノイズの合計は同じままです。その結果、ノイズフロアが低くなります。これにより、より高いダイナミックレンジを区別できます。
ただし、より長いFFTを使用することには欠点があります。1つ目は、より多くの処理能力が必要になることです。FFTはO(NlogN)アルゴリズムで、Nはポイント数です。ナイーブなDFTほど劇的ではないかもしれませんが、特に組み込みシステムの範囲で作業している場合は、Nの増加によってプロセッサが出血し始めます。次に、Nを大きくすると、周波数分解能が向上し、時間分解能が低下します。Nが大きいと、周波数領域の結果に到達するためにより多くのサンプルを取得する必要があります。つまり、より長い時間サンプルを取得する必要があります。より高いダイナミックレンジとより細かい周波数分解能を検出できるようになりますが、スプリアスを探している場合、スプリアスが正確に発生した時期についてはあまり明確ではありません。
使用する必要があるウィンドウのタイプは、まったく別の主題です。私は、どちらが優れているかについての回答を提供することは知らされていません。ただし、ウィンドウが異なれば、出力特性も異なります。そのほとんど(すべてではないにしても)は、FFTの結果を後処理して元に戻すことができます。一部のウィンドウでは、周波数成分がサイドビンに流出する場合があります(私が間違っていない場合は、ハニングウィンドウによってコンポーネントが3つのビンに表示されます)。他のウィンドウでは、コンポーネントにゲインエラーが発生する一方で、周波数精度が向上します。これは、達成しようとしている結果の性質に完全に依存しているため、特定のアプリケーションに最適なものを見つけるために、いくつかの調査(またはシミュレーション)を行います。
したがって、まず最初に、サンプリング周波数は信号の最大周波数の少なくとも2倍でなければなりません(44.1kHz> 2x10kHz)。次に、時間領域のウィンドウの長さがTの場合、FFTでの周波数分解能は正確に1 / Tです。FFTを使用した周波数領域の分解能は、時間領域のサンプリング周波数とは関係ありません。ただし、前の回答で指摘したように、一時的にポップアップするスプリアス信号に関する情報が失われるため、時間領域ウィンドウは大きすぎてはなりません。したがって、周波数分解能とスプリアス信号の検出の間には妥協が必要です。最後に、FFTは、信号を時間領域から周波数領域に取得する唯一のアルゴリズムではありません。時間領域のサンプル数が限られている周波数領域で高分解能を探している場合は、MUSICやESPIRITなどの高分解能スペクトル推定手法を使用できます。これらは、スペクトル推定問題と非常によく似た到来方向(DOA)推定にも使用されます。