Signal Processing Toolbox | ![]() ![]() |
表示
[S,w]=
pmusic(x,p) [S,w]=
pmusic(...,nfft) [S,f]=
pmusic(x,p,nfft,fs)) [S,f]=
pmusic(...,'corr') [S,f]=
pmusic(x,p,nfft,fs,nwin,noverlap) [...]=
pmusic(...,'range
') [...,v,e]=
pmusic(...) pmusic(...)
詳細
[S,w]
は、MUSIC(Multiple Signal Classification)アルゴリズムを実現し、入力信号 =
pmusic(x,p)
x
の擬似スペクトルS
と擬似スペクトルが計算された点を正規化した周波数(ラジアン/サンプル)で表したベクトルw
を出力します。擬似スペクトルは、入力データx
に関連した相関行列の固有ベクトルを使って計算されます。x
は、つぎのいずれかに対応する入力信号です。
x
の各行が信号(たとえば、アレープロセッシングで使われるように、各行がセンサの配列の一出力)を表す長方形の配列、たとえば、x'*x
は、相関行列です。注意
関数corrmtx を使って、配列x を作成します。 |
p
です。p
の2番目の要素 p(2)
は、信号の相関行列の固有値の中の最小な値、*p(2)
より小さい固有値は、ノイズのサブ空間に割り当てます。この場合、p(1)
は、信号サブ空間の最大次元を設定します。p
の中の2番目の要素のスレッシュホールドパラメータは、非常に柔軟性をもち、ノイズサブ空間と信号サブ空間の割り当てをコントロールします。
S
と w
は、 同じ長さです。一般に、FFTの長さと入力x
の値(実数/複素数)により、計算されるS
の長さと対応する正規化された周波数の範囲を決めることができます。つぎの表は、この書式で、S
(とw
)の長さと対応する正規化された周波数の範囲を示しています。
実数/複素数入力データ |
Sとwの長さ |
対応している正規化された周波数の範囲 |
実数値 |
129 |
[0, ![]() |
複素数値 |
256 |
[0, 2![]() |
[S,w]
は、整数 =
pmusic(...,nfft)
nfft
を使って、擬似スペクトルの推定に使用するFFTの長さを設定します。nfft
に対するデフォルト値は、256です。
つぎの表は、この書式に対するS
とw
の長さとw
に対する周波数の範囲を示しています。
実数/複素数入力データ |
nfft 偶数/奇数 |
S と wの長さ |
w の範囲 |
実数値 |
偶数 |
(nfft /2 + 1) |
[0, ![]() |
実数値 |
奇数 |
(nfft + 1)/2 |
[0, ![]() |
複素数値 |
偶数または奇数 |
nfft |
[0, 2![]() |
[S,f]
は、ベクトル =
pmusic(x,p,nfft,fs))
S
に推定した擬似スペクトルを出力し、それに対応する周波数(Hz単位)ベクトルをfに出力します。空ベクトル[]
を設定すると、サンプリング周波数はデフォルトの1Hzになります。
f
に対する周波数範囲は、nfft
とfs
と入力x
の値(実数/複素数/個数)に依存します。S
(とf
)の長さは、表 7-30 S
と周波数ベクトルの特性 と同じです。つぎの表は、この書式用の f
に対する周波数の範囲を示しています。
実数/複素数入力データ |
nfft 偶数/奇数 |
fの範囲 |
実数値 |
偶数 |
[0 , fs/2 ] |
実数値 |
奇数 |
[0 , fs/2) |
複素数値 |
偶数または奇数 |
[0, fs ) |
は、信号データの行列ではなく、相関行列として入力引数[S,f] = pmusic(...,'
corr')
x
を解釈します。この書式では、x
は正方行列で、その固有値はすべて非負です。
[S,f]
は、引数 =
pmusic(x,p,nfft,fs,nwin,noverlap)
nwin
を使って、長方形ウインドウの長さを設定するスカラ整数、または、ウインドウ係数を設定する実数値ベクトルのいずれかを設定します。nwin
と組み合わせてスカラ整数noverlap
を使用することで、入力サンプルに連続的にある重なりを保ってウインドゥを適用することができます。noverlap
は、x
が行列の場合、使用できません。デフォルト値は、nwin
が2*p(1)
、noverlap
はnwin
-1です。
この書式で、入力データx
は、相関行列固有値を推定するために使用する行列が型作られる前に、分割され、ウインドウが適用されます。データの分割は、nwin
とnoverlap
とx
の型に依存します。結果ウインドウを適用された各部分に関するコメントをつぎの表に記述されます。
この書式に関する関連した情報に対しては、表 7-33の入力データと書式に依存した固有ベクトルの長さを参照してください。
[...]
は、 =
pmusic(...,'range
')
f
または w
の中に、周波数値の範囲を設定できます。この書式は、x
が実数の場合に有効です。'range
' には、つぎのいずれかを設定することができます。
'whole'
: 周波数範囲[0,fs
)上で擬似スペクトルを計算します。これは、x
が複素数値の場合の周波数範囲のデフォルトです。fs
に空行列を設定する場合、周波数範囲は、[0,1)
になります。fs
を設定しない場合、周波数範囲は、[0, 2'half'
:x
が実数の場合、設定した周波数範囲上で擬似スペクトルを計算します。これは、x
が実数の場合の周波数範囲のデフォルトです。[...,v,e]
は、ノイズ固有ベクトルの行列 =
pmusic(...)
v
を出力し、ベクトルe
に関連した固有値を出力します。v
の列は、(大きさ size(v,2)
の)ノイズサブ空間を構成します。信号サブ空間の次元は、size(v,1)-size(v,2)
です。この書式で、e
は相関行列の推定された固有値ベクトルです。
pmusic(...)
は、出力引数を設定しない場合、カレントフィギュアウインドウ内に擬似スペクトルをプロットします。
注意
擬似スペクトルの推定の過程で、関数pmusic
は、信号の相関行列の固有ベクトル vj と固有値j からノイズと信号のサブ空間を計算します。これらの固有値の中の最小のものが、スレッシュホールドパラメータ
p(2)
と共に使われ、ノイズのサブ空間の大きさに影響を同じように与えます。
関数pmusic
で計算される固有ベクトルの長さnは、信号のサブ空間の次元とノイズのサブ空間の次元との和です。この固有ベクトルの長さは、入力(信号データまたは相関行列)とユーザが使用する書式に依存します。
つぎの表は、入力引数への固有ベクトル長の依存度をまとめたものです。
ある影響を加えるために、p(2)>1
としたい場合、nwin > p(1)
または(length(nwin) > p(1)
)のいずれかを設定しなければなりません。
例題 1: サンプリングを設定していない関数 pmusic
この例題は、信号サブ空間に存在する2つの実数正弦波を仮定して、ある信号ベクトルx
を解析します。この場合、各実数正弦波は、2つの複素指数の和で表されるので、信号のサブ空間の次元は4です。
randn('state',0); n=
0:199; x=
cos(0.257*pi*n) + sin(0.2*pi*n) + 0.01*randn(size(n)); pmusic(x,4)
例題 2: サンプリング周波数とサブ空間次元を指定
この例題は、同じ信号ベクトルに最小値より10%の固有値をカットしたベクトルx
を解析します。p(1) = Inf
は、信号/ノイズのサブ空間の決定に、スレッシュホールドp(2)
をベースにしたものを使います。引数nwin
を使って、長さ7の固有ベクトルを設定し、サンプリング周波数fs
を 8 kHzに設定します。
randn('state',0); n=
0:199; x=
cos(0.257*pi*n) + sin(0.2*pi*n) + 0.01*randn(size(n)); [P,f]=
pmusic(x,[Inf,1.1],[],8000,7); % ウインドウの長さ=
7
例題 3: 相関行列を入力
スペクトル密度を計算するために、正定相関行列R
を入力します。デフォルトの長さ256サンプルを使います。
R=
toeplitz(cos(0.1*pi*[0:6])) + 0.1*eye(7); [P,f]=
pmusic(R,4,'corr');
例題 4: 関数 corrmtx を使って、データから作成した信号データ行列を入力します。
関数corrmtx
を使って、データから作成した信号データ行列 Xm
を入力します。
randn('state',0); n = 0:699; x=
cos(0.257*pi*(n)) + 0.1*randn(size(n)); Xm = corrmtx(x,7,'mod'); [P,w]=
pmusic(Xm,2);
例題 5: ウインドウを使用して、信号データ行列の影響を作成
同じ信号を使いますが、ウインドウを適用する入力引数を使って、100行7列のデータ行列を作成します。そして、FFTの長さを512とします。
randn('state',0); n = 0:699; x=
cos(0.257*pi*(n)) + 0.1*randn(size(n)); [PP,ff]=
pmusic(x,2,512,[],7,0);
アルゴリズム
MUSICと言う名前は、MUltiple SIgnal Classification に由来します。MUSICアルゴリズムは、信号または信号の相関行列から Schmidtの固有空間解析法(参考文献[1])を使って、擬似スペクトルを計算します。アルゴリズムは、信号の周波数成分を計算するため、信号の相関行列の固有空間解析を行います。このアルゴリズムは、正弦波に加算的な白色ガウスノイズが加わったような信号に特に効果的に働きます。相関行列を設定していない場合は、信号の相関行列の固有値や固有ベクトルが計算されます。
ここで、Nは、固有ベクトルの次元で、vk は相関行列のk番目の固有ベクトルです。整数pは、信号のサブ空間の次元です。そのため、和の中で使われる固有ベクトルvkは、相関行列の最小の固有値に対応します。PSD推定の中で使われる固有ベクトルは、ノイズ空間を構成します。ベクトルe(f)は、複素指数の型をし、そのため、内積
は、フーリエ変換になります。これは、PSD推定の計算で使われるものです。FFTは、各vkに対して計算され、大きさの二乗の和が計算され、スケーリングします。
参考
|
相関行列の計算用に入力データを整形 |
|
Burg法を使ったパワースペクトル密度の計算
|
|
固有ベクトル法を使った擬似スペクトルの推定 |
|
ピリオドグラムを使ったパワースペクトル密度の計算 |
|
マルチテーパ法を使ったパワースペクトル密度の計算 |
|
時間領域IIRフィルタ設計に対するProny法
|
|
パワースペクトル密度データのプロット |
|
Welch法を使ったパワースペクトル密度の計算 |
|
ルート固有ベクトル法を使った周波数とパワーの計算 |
|
ルートMUSICアルゴリズムを使った周波数とパワーの計算 |
参考文献
[1] Marple, S.L. Digital Spectral Analysis, Englewood Cliffs, NJ, Prentice-Hall, 1987, pp. 373-378.
[2] Schmidt, R.O, "Multiple Emitter Location and Signal Parameter Estimation," IEEE Trans. Antennas Propagation, Vol. AP-34 (March 1986), pp. 276-280.
[3] Stoica, P., and R.L. Moses, Introduction to Spectral Analysis, Prentice-Hall, Englewood Cliffs, NJ, 1997.
![]() | pmtm | poly2ac | ![]() |