Signal Processing Toolbox | ![]() ![]() |
表示
Pxx = pburg(x,p) [Pxx,w] = pburg(x,p) [Pxx,w]=
pburg(x,p,nfft) [Pxx,f]=
pburg(x,p,nfft,fs) [Pxx,f]=
pburg(x,p,nfft,fs,'range
') [Pxx,w]=
pburg(x,p,nfft,'range
') pburg(...)
詳細
Pxx
は、パラメトリックスペクトル推定法の一つであるBurgアルゴリズムを実現して、ベクトル =
pburg(x,p)
x
のパワースペクトル密度(PSD)をPxx
に出力します。x
の要素は、離散時間信号のサンプルを表します。p
はPSD推定で使われる信号に対する自己回帰(AR)予測モデルの次数を設定する整数です。
パワースペクトル密度は、パワー/ラジアン/サンプル単位で計算されます。デフォルトでは、実数値入力は、片側PSD、複素数入力では、両側PSDを計算します。
一般的に、FFTの長さと入力x
の値(実数/複素数)は、Pxx
の長さと対応する正規化された周波数のレンジを決定します。この形式で、FFTのデフォルトの長さは256です。つぎの表は、Pxx
の長さと対応する正規化された周波数レンジを示しています。
実数/複素数入力データ |
Pxxの長さ |
対応する正規化した周波数レンジ |
実数値 |
129 |
[0, ![]() |
複素数値 |
256 |
[0, 2![]() |
[Pxx,w]
は、PSDが推定される周波数ベクトルを =
pburg(x,p)
w
に出力します。Pxx
とw
は、同じ長さです。周波数の単位は、ラジアン/サンプルです。
[Pxx,w]
は、Burg法を使ってPSDを計算しますが、その長さを整数 =
pburg(x,p,nfft)
nfft
で設定します。nfft
を[]
と設定すると、デフォルトの256が使われます。
Pxx
の長さとw
の周波数の範囲は、nfft
と入力x
の値(実数/複素数/個数)に依ります。つぎの表は、Pxx
の長さとw
の周波数の範囲を示します。
実数/複素数入力データ |
nfft 偶数/奇数 |
Pxxの長さ |
wの範囲 |
実数値 |
偶数 |
(nfft /2 + 1) |
[0, ![]() |
実数値 |
奇数 |
(nfft + 1)/2 |
[0, ![]() |
複素数値 |
偶数/奇数 |
nfft |
[0, 2![]() |
[Pxx,f]
は、PSDベクトル( =
pburg(x,p,nfft,fs)
Pxx
)と対応する周波数ベクトル(f
)を計算するため、ヘルツ単位で整数を使ってサンプリング周波数fs
を設定します。この場合、周波数ベクトルの単位は、Hzです。スペクトル密度は、パワー/Hzの単位で計算されます。fs
を[]
ベクトルで設定する場合、サンプリング周波数は、デフォルトの1Hzです。
fの周波数の範囲は、nfft
とfs
と入力x
の値(実数/複素数/個数)に依存します。Pxx
の長さは、上の表で設定されたものと同じです。つぎの表は、f
に対する周波数範囲を示しています。
実数/複素数入力データ |
nfft 偶数/奇数 |
fの範囲 |
実数値 |
偶数 |
[0 , fs/2 ] |
実数値 |
奇数 |
[0 , fs/2) |
複素数値 |
偶数/奇数 |
[0, fs ) |
[Pxx,f]
または、 [Pxx,w] =
pburg(x,p,nfft,fs,'range
')
=
pburg(x,p,nfft,'range
') は、f
またはw
に周波数値の範囲を出力します。この書式は、x
が実数の場合のみ有効です。'range
'には、つぎのいずれかを使用することができます。
'twosided'
:[0,fs
)の周波数範囲で、両側PSDを計算します。これは、x
が複素数の場合の周波数範囲を決定するためのデフォルトです。fs
を空ベクトル[]
とすると、周波数範囲は[0,1)
になります。fs
を設定していないと、周波数範囲は [0, 2'onesided'
:実数x
に対して設定された周波数範囲で、片側PSDを計算します。これは、x
が実数の場合の周波数範囲を決定するためのデフォルトです。pburg(...)
は、カレントフィギュアウインドウ内にパワースペクトル密度をプロットします。プロット上の周波数範囲は、与えられたパラメータに対しての出力w
の範囲と同じです。
例題
Burg法は、設定した次数のAR予測モデルを信号に近似することにより、スペクトル密度を推定するために、まず、設定した次数のAR(全極)モデルから信号を生成します。ユーザは、freqz
を使って、ARフィルタの周波数応答の大きさをチェックできます。これは、pburg
を使ってPSDを推定する場合、何を求めることができるかを知ることができます。
a =
[1 -2.2137 2.9403 -2.1697 0.9606]; % AR フィルタ係数
freqz(1,a) % AR フィルタ周波数応答
title('AR System Frequency Response')
白色ノイズにARフィルタを適用して、入力信号x
を作成します。4次のAR予測モデルをベースにx
のPSDを推定しましょう。この場合、オリジナルのARシステムモデルは次数4であることがわかっているとします。
randn('state',1);
x =
filter(1,a,randn(256,1)); % AR システムからの出力
pburg(x,4) % 4次の推定
注意
パワースペクトル密度が、単位周波数に対するパワーの分布として計算されます。
このアルゴリズムは、ユーザの信号に対して、選択したモデル次数によって影響を受けます。
アルゴリズム
線形予測フィルタは、信号の2次の統計量をモデル化するのに使うことができます。予測フィルタ出力は、入力が白色ノイズの場合、信号をモデル化するのに使います。
Burg 法は、入力信号を設定した次数のAR線形予測フィルタモデルに、前進予測誤差と後退予測誤差の算術平均を(二乗和の平方根を使って)最小化することにより、近似します。そして、スペクトル密度は、予測フィルタの周波数応答から計算します。ARフィルタパラメータは、Levinson-Durbin再帰法を満足していなければなりません。
参考
|
Burg法を使ったARモデルパラメータの推定 |
|
線形予測係数 |
|
共分散法を使ったパワースペクトル密度の計算 |
|
固有ベクトル法を使った擬似スペクトルの推定 |
|
ピリオドグラムを使ったパワースペクトル密度の計算 |
|
修正共分散法を使ったパワースペクトル密度の計算 |
|
マルチテーパ法を使ったパワースペクトル密度の計算 |
|
MUSIC アルゴリズムを使った擬似スペクトルの推定 |
|
時間領域IIRフィルタ設計に対するProny法
|
|
Welch法を使ったパワースペクトル密度の計算 |
|
パワースペクトル密度データのプロット |
|
Yule-Walker AR法を使ったパワースペクトル密度の計算 |
参考文献
[1] Marple, S.L. Digital Spectral Analysis, Englewood Cliffs, NJ, Prentice-Hall, 1987, Chapter 7.
[2] Stoica, P., and R.L. Moses, Introduction to Spectral Analysis, Prentice-Hall, 1997.
![]() | modulate | pcov | ![]() |