0

MATLAB がそのスペクトログラム関数 (および specgram や Octave の stft などの関連関数) の短時間フーリエ変換をどのように行うかを理解しようとしています。私にとって興味深いのは、ウィンドウの長さと FFT の長さ (出力周波数の数) を個別に指定できるように見えることですが、これら 2 つが等しいと予想していたのに (FFT された信号の長さは元の信号の長さと同じです)。私が何を意味するかを説明するために、ここに関数呼び出しがあります:

[S,F,T]=スペクトログラム(シグナル,winSize,overlapSize,fftSize,レート);

winSize は (個別に) FFT されるサブインターバルの長さであり、fftSize は出力で与えられる周波数成分の数です。これらが等しくない場合、Matlab は必要な数の周波数ビンを生成するために補間を行いますか?

最終的に知りたい理由は、周波数の適切な単位とスケーリングを決定できるようにするためです。

乾杯

4

1 に答える 1

1

信号のウィンドウ化されたセグメントは、より長い FFT を使用するために、より長いベクトルにゼロ パディングすることができます。周波数スケーリングは、FFT の長さ (および信号のサンプル レート) によって決まります。ウィンドウ サイズとウィンドウ式によって、ピーク分離能力の観点から有効な分離能が決まります。

なぜこれを行うのですか?一部の FFT サイズは、他のサイズよりも効率的に計算できます (使用する FFT ライブラリに応じて、わずかまたは多く)。また、長い FFT はより多くのポイントまたはビンを計算するため、補間されたポイントの密度が高くなり、スペクトル結果がより滑らかになる可能性があります。

于 2014-05-01T23:46:19.110 に答える