Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ウェルチ法を使用したストリーミング パワー スペクトル推定

時間領域入力信号のパワー スペクトル推定を Spectrum Estimator ブロックを使用して計算します。ブロックは次のいずれかの方法を使用して、パワー スペクトル推定を計算します。

  • 平均修正ピリオドグラムのウェルチ法

  • フィルター バンク法

この例では、平均修正ピリオドグラムのウェルチ法を使用します。フィルター バンクベースのスペクトル推定法を使用した例については、High Resolution Spectral Analysis in MATLABを参照してください。同じ例で、フィルター バンク推定器とウェルチベースのスペクトル推定器の比較も示しています。一般に、フィルター バンクベースのスペクトル推定はスペクトル漏れが少なく、ピークが正確で、ノイズ フロアが正確な、より優れた分解能を示します。

これら 2 つの方法のアルゴリズムの詳細については、Spectrum Estimator ブロックのアルゴリズムの節を参照してください。

スペクトル推定器ブロックは、推定されたスペクトルに (単に可視化するだけではなく) 直接アクセスする必要がある場合に役に立ちます。出力されたパワー スペクトルは、モデル内の他のブロックへの入力として使用されるか、あるいは事後処理のためにワークスペースに記録される場合があります。スペクトルを可視化するには、スペクトル アナライザー スコープ ブロックを使用します。

平均修正ピリオドグラムのウェルチ法

ウェルチ法では、入力の時間領域データが、選択されたウィンドウ長とオーバーラップ パーセンテージに基づいてデータ セグメントに分割されます。この段階は、Buffer ブロックを使用して実装されます。各セグメントにウィンドウが適用され、次に、ウィンドウが適用されたシーケンスに基づき平均ピリオドグラムが計算されます。この段階は、dsp.SpectrumEstimator System object™ を使用して実装されます。データ セグメントの長さとウィンドウの選択により、推定の分解能帯域幅 (RBW) が決定されます。RBW はパワー スペクトル推定で分解できる最小の正の周波数です。

ウィンドウの長さの指定

以下に示す dspstreamingwelch モデルでは、44100 Hz でサンプリングされた、ノイズを含むチャープ信号のスペクトル推定に Welch Spectrum Estimator ブロックが使用されています。パワー スペクトル推定は、Array Plot スコープを使用して表示されます。スペクトルのピーク値と、ピークが発生する周波数が検出され、スコープ上に表示されます。推定の RBW も表示されます。さらに、比較および検証のために、Spectrum Analyzer スコープ ブロックも含まれています。

ブロックの周波数分解能の方法は、Welch に設定されています。データは、サイドローブ減衰 60 dB のチェビシェフ ウィンドウを使用してウィンドウ処理されています。周波数範囲は片側です。この場合、スペクトル推定の長さは $NFFT/2+1 = 513$、計算区間は [0 Hz,22050 Hz] です。これに基づき、Array Plot スコープの "サンプルのインクリメント" プロパティは、$Fs/NFFT = 44100/(1024 * 1000)$ に設定されます。ここでは、周波数単位を kHz でスケーリングするため、インクリメントが 1000 で除算されます。[プロット] タブで [設定] を開くと、スコープの [サンプルのインクリメント] プロパティにアクセスできます。

分解能帯域幅は次のとおりです。

$$RBW = enbw(chebwin(N,SL))*Fs/N$$

ここで、

  • $N$ は、Spectrum Estimator ブロックのウィンドウの長さ

  • $enbw$ は、ウィンドウの等価ノイズ帯域幅を計算する関数。

  • $SL$ は、チェビシェフ ウィンドウのサイドローブの減衰量。

  • $Fs$ は、サンプル レート。

Spectrum Estimator ブロックの値を使用すると、RBW は 65.38 Hz に等しくなります。

スペクトル アナライザー ツールストリップの [アナライザー] タブで、[RBW (Hz)] を 65.38 Hz に設定します。2 つのブロックのピーク測定値は同じになります。

非ゼロのオーバーラップの指定

前の節のモデルにはオーバーラップがありませんでした。dspstreamingwelch_overlap モデルでは、50% のオーバーラップを使用します。RBW が 65.38 Hz、ウィンドウの長さが 1024、オーバーラップ率が 50% であることから、新しいデータ セグメントを形成するには 512 個の入力サンプルが必要になります。入力データの長さが 1024 であるため、新しいデータ フレームがそれぞれ 2 つの新しいピリオドグラムを生成し、Spectrum Analyzer ブロックの出力端子は入力端子の 2 倍の速さで動作します。

この場合、Spectrum Estimator ブロックのレイテンシがゼロでないことに注意してください。最初のスペクトル推定出力はバッファーの初期条件に基づき、eps と等価になります。したがって、Spectrum Analyzer スコープのスペクトルと測定値を一致させるため、Spectrum Analyzer の入力に Delay ブロックを挿入します。

Spectrum Analyzer の結果とウェルチ法の推定ブロックは、モデルをシミュレートすることで検証できます。

RBW の指定

dspstreamingwelch_rbw モデルでは、[RBW (Hz)]Auto に設定されています。このモードでは、分解能帯域幅は、指定した周波数範囲にわたって RBW 間隔が 1024 となるように選択されます。この例では範囲が 22050 Hz、RBW が 21.53 Hz になります。

データのバッファーに使用されるウィンドウの長さは、目的の RBW が得られるまで反復計算されます。この例でのウィンドウの長さは 3073 になります。この値を検証するには、このウィンドウの長さから結果として得られる RBW を以下のように計算します。

$$ RBW = enbw(hann(3073)) * 44100 / 3073 = 21.53 Hz $$

このモデルではハン ウィンドウが使用されていることに注意してください。この場合、FFT 長 NFFT は奇数であり、3073 (ウィンドウ長) と等しくなります。周波数範囲が片側であるため、スペクトル推定は長さ (NFFT + 1)/2 で、計算区間は [0,44100/2) になります。Array Plot スコープの "サンプルのインクリメント" プロパティは、$Fs/NFFT = 44100/(3073 * 1000)$ KHz に設定されています。

ここでも、スペクトル アナライザーの結果とウェルチ法の推定ブロックは、モデルをシミュレートすることで検証できます。

参照

[1] Hayes, Monson H. Statistical Digital Signal Processing and Modeling Hoboken, NJ: John Wiley & Sons, 1996.

参考

ブロック