18

私は MATLAB の初心者であり、パワー スペクトル密度とスペクトログラムのグラフを描画する EEG 信号のスペクトル分析を実行する必要があります。私の信号10の長さは秒で、サンプリング周波数は160 Hz合計で1600 samplesあり、MATLAB で関数のパラメーターを見つける方法について次のような質問があります。

pwelch (x, window, noverlap, nfft, fs);

spectrogram (x, window, noverlap, F, fs);

私の質問は、パラメーターの値をどこで見つけるかでwindowありnoverlap、それらが何のためにあるのかわかりません。

4

4 に答える 4

83

ウィンドウ関数とその使用法を理解するために、まず、有限長サンプルの DFT を取得したときに何が起こるかを見てみましょう。離散フーリエ変換の定義では、考慮している有限の長さの信号が周期的であるという仮定が暗示されています。

全周期がキャプチャされるようにサンプリングされた正弦波を考えてみましょう。信号が複製されると、信号が途切れることなく定期的に継続することがわかります。結果の DFT には非ゼロ成分が 1 つだけあり、それは正弦波の周波数にあります。

ここに画像の説明を入力

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

ここに画像の説明を入力

このスペクトル漏れは、サイドローブを通じて発生します。これについてさらに理解するには、sinc 関数とそのフーリエ変換であるRectangle 関数についても読む必要があります。有限サンプル シーケンスは、矩形関数を乗算した無限シーケンスと見なすことができます。発生する漏れは、sinc 関数のサイド ローブに関連しています (sinc と方形は自己双対空間に属し、互いの FT です)。これについては、上記でリンクしたスペクトル リーケージの記事で詳しく説明しています。

ウィンドウ関数

ウィンドウ関数は、信号処理でスペクトル リーケージの影響を最小限に抑えるために使用されます。基本的に、ウィンドウ関数が行うことは、有限の長さのシーケンスを端で先細りにすることです。これにより、タイル化されたときに不連続のない周期構造が得られ、スペクトルの漏れが少なくなります。

一般的なウィンドウには、Hanning、Hamming、Blackman、Blackman-Harris、Kaiser-Bessel などがあります。Wiki リンクから詳細を読むことができます。対応する MATLAB コマンドはhannhammingblackmanblackmanharrisおよび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奇数値を取ることができます。これは単なる整数です。
  • NFFTFFTの長さ
  • fsは、データ ベクトルのサンプリング周波数です。これを空のままにしておくと、MATLAB は、正規化された周波数と時間軸に関して Figure を単にデータ チャンク インデックスとしてプロットします。入力すると、MATLAB はそれに応じて軸をスケーリングします。

時間ベクトル、周波数ベクトル、計算されたパワー スペクトルなどのオプションの出力を取得して、他の計算で使用したり、プロットを別のスタイルにする必要がある場合にも使用できます。詳細については、ドキュメントを参照してください。

これは、1000 Hz でサンプリングされた、20 Hz から 400 Hz までの 1 秒間の線形チャープ信号の例です。2 つのウィンドウ関数 と が使用され、オーバーラップHanningありBlackman-Harrisとなしです。ウィンドウの長さは 50 サンプルで、使用時のオーバーラップは 50% でした。プロットは、各プロットで同じ 80dB 範囲にスケーリングされます。

ここに画像の説明を入力

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

于 2011-05-04T19:24:42.207 に答える
8

上記のこれらの方法はどちらも、シグナルを操作する短時間の方法です。信号の非定常性 (統計が時間の関数である場合、他の統計の中でも平均は時間の関数であるとします) は、信号の統計が短期間で一定であると仮定することしかできないことを意味します。そのような期間 (信号の統計が一定である期間) に正確に到達する方法はありません。したがって、ほとんどの場合、推測作業と微調整になります。

あなたが上で言及した信号が非定常であるとしましょう (EEG 信号とは)。また、約 10ms 程度しか静止していないとします。のような統計を確実に測定するPSD or energyには、これらの統計を一度に 10 ミリ秒ずつ測定する必要があります。ウィンドウ関数は、PSD などを計算する 10ms の信号を分離するために信号を乗算するものです。したがって、信号の長さをトラバースする必要があります。シフト ウィンドウが必要です (信号全体を一度に 10 ミリ秒ずつウィンドウ処理するため)。ウィンドウを重ねると、より信頼性の高い統計の見積もりが得られます。

次のように想像でき
ます。 1. 信号の最初の 10ms を取得します。
2. ウィンドウ機能で窓を開けます。
3. この 10ms の部分だけで統計を計算します。
4. ウィンドウを 5ms 移動します (オーバーラップの長さを想定)。
5. 信号を再度ウィンドウ処理します。
6. 統計を再度計算します。
7. 信号の全長にわたって移動します。

ウィンドウ関数にはさまざまな種類があります - Blackman, Hanning, Hamming, Rectangular. それと、ウィンドウとオーバーラップの長さは、使用しているアプリケーションと信号自体の周波数特性によって異なります。

例として、音声処理 (信号が非定常であり、ウィンドウ処理が頻繁に使用される) では、ウィンドウ処理関数の最も一般的な選択肢は長さのハミング/ハニングです10ms (320 samples at 16 kHz sampling) with an overlap of 80 samples (25% of window length)。これはかなりうまく機能します。これをアプリケーションの開始点として使用してから、さまざまな値でさらに微調整することができます。

MATLAB の次の関数も参照してください。
1. hamming
2.hanning

コマンド ラインで help コマンドを使用すると、MATLAB で大量のヘルプを呼び出すことができることを知っていただければ幸いです。MATLAB は、ドキュメントが充実しているソフトウェアの 1 つです。help コマンドを使用するpwelchと、ウィンドウ サイズとオーバーラップの定義も表示されます。それもあなたを助けるはずです。

この情報がすべてかどうかはわかりません。あなたを助けたかどうかはわかりませんが、質問を見て、ウィンドウ処理とオーバーラップが何であるかを理解するのに少し助けが必要かもしれないと感じました.

HTH、
スリラム。

于 2011-05-04T18:09:15.940 に答える
-2

次のパラメーターがSinc関数のパフォーマンスをどのように変化させるかを調べます。

  1. 係数の長さ
  2. 次のウィンドウ関数:
    • ブラックマン・ハリス
    • ハニング
    • バートレット
于 2013-12-28T20:32:51.140 に答える