ウィンドウ関数とその使用法を理解するために、まず、有限長サンプルの DFT を取得したときに何が起こるかを見てみましょう。離散フーリエ変換の定義では、考慮している有限の長さの信号が周期的であるという仮定が暗示されています。
全周期がキャプチャされるようにサンプリングされた正弦波を考えてみましょう。信号が複製されると、信号が途切れることなく定期的に継続することがわかります。結果の DFT には非ゼロ成分が 1 つだけあり、それは正弦波の周波数にあります。

次に、部分的な周期のみがキャプチャされるようにサンプリングされた、異なる周期の余弦波を考えます。信号を複製すると、赤でマークされた信号の不連続が表示されます。スムーズな遷移がなくなるため、以下に示すように、他の周波数で漏れが発生します。

このスペクトル漏れは、サイドローブを通じて発生します。これについてさらに理解するには、sinc 関数とそのフーリエ変換であるRectangle 関数についても読む必要があります。有限サンプル シーケンスは、矩形関数を乗算した無限シーケンスと見なすことができます。発生する漏れは、sinc 関数のサイド ローブに関連しています (sinc と方形は自己双対空間に属し、互いの FT です)。これについては、上記でリンクしたスペクトル リーケージの記事で詳しく説明しています。
ウィンドウ関数
ウィンドウ関数は、信号処理でスペクトル リーケージの影響を最小限に抑えるために使用されます。基本的に、ウィンドウ関数が行うことは、有限の長さのシーケンスを端で先細りにすることです。これにより、タイル化されたときに不連続のない周期構造が得られ、スペクトルの漏れが少なくなります。
一般的なウィンドウには、Hanning、Hamming、Blackman、Blackman-Harris、Kaiser-Bessel などがあります。Wiki リンクから詳細を読むことができます。対応する MATLAB コマンドはhann
、hamming
、blackman
、blackmanharris
およびkaiser
です。さまざまなウィンドウの小さなサンプルを次に示します。

なぜこんなに多くの異なるウィンドウ関数があるのか不思議に思うかもしれません。その理由は、これらのそれぞれが非常に異なるスペクトル特性を持ち、メイン ローブの幅とサイド ローブの振幅が異なるためです。フリーランチなどというものはありません。優れた周波数分解能が必要な場合 (メインローブが薄い場合) は、サイドローブが大きくなり、その逆も同様です。両方を持つことはできません。多くの場合、ウィンドウ関数の選択は特定のニーズに依存し、常に妥協することになります。これは、ウィンドウ関数の使用について説明している非常に優れた記事であり、ぜひ一読してください。
ここで、ウィンドウ関数を使用すると、先細りの端では情報が少なくなります。したがって、これを修正する 1 つの方法は、以下に示すように、オーバーラップのあるスライディング ウィンドウを使用することです。まとめると、元のシーケンスを可能な限り近似するという考え方です (つまり、一番下の行はできるだけ平坦な値 1 に近づける必要があります)。アプリケーションに応じて、典型的な値は 33% から 50% の間で変化します。

MATLAB のスペクトログラムの使用
構文は次のとおりです。spectrogram(x,window,overlap,NFFT,fs)
どこ
x
データベクトル全体です
window
あなたのウィンドウ関数です。たとえば、数値のみを入力するとW
(整数である必要があります)、MATLAB はデータをW
それぞれのサンプルのチャンクに分割し、そこからスペクトログラムを形成します。これは、長さW
サンプルの長方形ウィンドウを使用することと同じです。別のウィンドウを使用する場合は、hann(W)
任意のウィンドウを指定してください。
overlap
オーバーラップする必要があるサンプルの数です。したがって、50% のオーバーラップが必要な場合、この値はW/2
. floor(W/2)
or ceil(W/2)
ifを使用すると、W
奇数値を取ることができます。これは単なる整数です。
NFFT
FFTの長さ
fs
は、データ ベクトルのサンプリング周波数です。これを空のままにしておくと、MATLAB は、正規化された周波数と時間軸に関して Figure を単にデータ チャンク インデックスとしてプロットします。入力すると、MATLAB はそれに応じて軸をスケーリングします。
時間ベクトル、周波数ベクトル、計算されたパワー スペクトルなどのオプションの出力を取得して、他の計算で使用したり、プロットを別のスタイルにする必要がある場合にも使用できます。詳細については、ドキュメントを参照してください。
これは、1000 Hz でサンプリングされた、20 Hz から 400 Hz までの 1 秒間の線形チャープ信号の例です。2 つのウィンドウ関数 と が使用され、オーバーラップHanning
ありBlackman-Harris
となしです。ウィンドウの長さは 50 サンプルで、使用時のオーバーラップは 50% でした。プロットは、各プロットで同じ 80dB 範囲にスケーリングされます。

オーバーラップによる図の違い (上下) に気付くことができます。オーバーラップを使用すると、より明確な見積もりが得られます。前述のメイン ローブの幅とサイド ローブの振幅のトレードオフも確認できます。ハニングのメイン ローブ (スキュー対角線に沿った突出した線) は細く、周波数分解能は向上していますが、外側の明るい色で見られる漏れやすいサイドローブがあります。一方、ブラックウェル・ハリスは、より太いメイン ローブ (より太い対角線) を持っていますが、一様に低い (青色の) 外側領域によって証明されるように、スペクトルの漏れは少なくなっています。