Signal Processing Toolbox | ![]() ![]() |
表示
[Pxx,w]=
pmtm(x,nw) [Pxx,w]=
pmtm(x,nw,nfft) [Pxx,f]=
pmtm(x,nw,nfft,fs) [Pxx,Pxxc,f]=
pmtm(x,nw,nfft,fs) [Pxx,Pxxc,f]=
pmtm(x,nw,nfft,fs,p) [Pxx,Pxxc,f]=
pmtm(x,e,v,nfft,fs,p) [Pxx,Pxxc,f]=
pmtm(x,dpss_params,nfft,fs,p) [...]=
pmtm(...,'method
') [...]=
pmtm(...,'range
') pmtm(...)
詳細
pmtm
は、参考文献[1]のマルチテーパ法(MTM)を使って、時系列xのパワースペクトル密度(PSD)を計算します。この方法は、PSDの計算に修正したピリオドグラムの線形結合または非線形結合のいずれかを使います。これらのピリオドグラムは、離散扁長回転楕円体列(関数dpss
を参照)から設定される直交テーパ(周波数領域の中のウインドウ)列を使って計算されます。
[Pxx,w]
は、マルチテーパ推定法の中のデータテーパとして使われる 2 =
pmtm(x,nw)
nw
-1個の離散扁長回転楕円体列を使って、入力信号x
に対するPSD Pxx
を計算します。nw
は、離散扁長回転楕円体列に対する時間- 帯域幅の積です。nw
を空ベクトル[]
に設定すると、デフォルトの4を使います。他の取り得る値は、2, 5/2, 3, 7/2のいずれかです。関数pmtm
は、PSDを計算する周波数点のベクトルw
を出力します。Pxx
とw
は、同じ長さです。周波数の単位は、ラジアン/サンプルです。
パワースペクトル密度は、パワー/ラジアン/サンプルの単位で計算されます。xが実数値の場合、片側PSDが計算され、複素数の場合、両側PSDが計算されます。
一般的に、FFTの長さNと入力x
の値(実数/複素数)により、Pxx
の長さと対応する正規化された周波数の範囲が決まります。この書式で、FFTの(デフォルト)の長さNは、256より長くなり、x
の長さを超える2のベキ乗数の内一番小さいものになります。つぎの表は、この書式用のPxx
の長さと対応する正規化された周波数の範囲を示しています。
実数/複素数入力データ |
Pxxの長さ |
対応する正規化された周波数の範囲 |
実数値 |
(N/2) +1 |
[0, ![]() |
複素数値 |
N |
[0, 2![]() |
[Pxx,w]
は、FFTの長さに整数 =
pmtm(x,nw,nfft)
nfft
を使って、PSDをマルチテーパ法を使って、計算します。nfft
に空ベクトル[]
を設定する場合、前述の書式で記述されたNに対するデフォルト値を使います。
Pxx
の長さとw
に関する周波数範囲は、nfft
と入力x
の値(実数/複素数/個数)に依存します。つぎの表は、この書式に対するPxx
の長さとw
に関する周波数の範囲を示しています。
実数/複素数入力データ |
nfft 偶数/奇数 |
Pxxの長さ |
wの範囲 |
実数値 |
偶数 |
(nfft /2 + 1) |
[0, ![]() |
実数値 |
奇数 |
(nfft + 1)/2 |
[0, ![]() |
複素数値 |
偶数または奇数 |
nfft |
[0, 2![]() |
[Pxx,f]
は、PSDベクトル( =
pmtm(x,nw,nfft,fs)
Pxx
)と対応する周波数ベクトル(f
)を計算するためにヘルツ単位で設定したサンプリング周波数fs
を使います。計算されるスペクトル密度は、パワー/Hzの単位です。fs
を空ベクトル[]
とすると、サンプリング周波数は、デフォルトの1 Hzです。
f
に関する周波数範囲は、nfft
とfs
と入力x
の値(実数/複素数/個数)に依存します。Pxx
の長さは、上記の表の中のものと同じです。つぎの表は、この書式を使ったf
に対する周波数範囲を示しています。
実数/複素数入力データ |
nfft 偶数/奇数 |
fの範囲 |
実数値 |
偶数 |
[0 , fs/2 ] |
実数値 |
奇数 |
[0 , fs/2) |
複素数値 |
偶数または奇数 |
[0, fs ) |
[Pxx,Pxxc,f]
は、 =
pmtm(x,nw,nfft,fs)
Pxx
の95%の信頼区間 Pxxc
を出力します。信頼区間は、カイ二乗アプローチを使って計算されます。Pxxc
は、Pxx
と同じ行数をもつ、2列からなる行列です。Pxxc(:,1)
は、信頼区間の下限、Pxxc(:,2)
は上限です。
[Pxx,Pxxc,f]
は、 =
pmtm(x,nw,nfft,fs,p)
Pxx
のp
*100%
の信頼区間Pxxc
を出力します。ここで、p
は0と1の間のスカラです。p
を設定しない場合、または、空ベクトル[]
の場合、デフォルトの95%が使われます。
[Pxx,Pxxc,f]
は、行列 =
pmtm(x,e,v,nfft,fs,p)
e
の列に含まれるデータテーパとベクトルv
の集中度から、PSDの計算値Pxx
と信頼区間Pxxc
、周波数ベクトルf
を出力します。v
の長さは、e
の中の列数と同じです。これらの引数を与えて、関数dpss
の出力からこれらのデータを得ることもできます。
[Pxx,Pxxc,f]
は、関数 =
pmtm(x,dpss_params,nfft,fs,p)
dpss
への入力引数を含むセル配列dpss_params
を使って、データテーパを計算することができます。たとえば、pmtm(x,{3.5,'trace'},512,1000)
は、nfft
= 512, fs
= 1000 を使って、nw = 3.5
に対するSlepian列を計算し、この計算に使った関数dpss
の方法を表示します。他のオプションについては、関数dpss
を参照してください。
[...]
は、個々のスペクトル推定を組み合わせるときに使用するアルゴリズムを設定します。文字列 =
pmtm(...,'method
')
'method'
は、つぎのいずれかを使用することができます。
'adapt'
:Thomsonの適応非線形結合(デフォルト)'unity'
:単位重みを使って、重み付けられたピリオドグラムの線形結合'eigen'
:固有値を重みとして重み付けられたピリオドグラムの線形結合[...]
は、周波数の範囲を =
pmtm(...,'range
')
f
またはw
に出力します。この書式は、x
が実数の場合に有効です。'range
'には、つぎのいずれかを設定することができます。
'twosided'
:周波数範囲[0,fs
)で両側PSDを計算します。これは、x
が複素数の場合の周波数範囲のデフォルトの設定です。fs
を空ベクトル[]
とする場合、周波数範囲は[0,1)
です。fs
を設定していない場合、周波数範囲は[0, 2'onesided'
:実数x
に対して設定した周波数範囲上での片側PSDを計算します。これは、x
が実数の場合の周波数範囲のデフォルトの設定です。 pmtm(...)
は、カレントフィギュアウインドウにPSDと信頼区間をプロットします。fs
を設定していない場合、95%の信頼区間がプロットされます。fs
を設定すると、p
の値に依存した信頼区間がプロットされます。
例題
randn('state',0); fs=
1000; t=
0:1/fs:0.3; x=
cos(2*pi*t*200) + 0.1*randn(size(t)); [Pxx,Pxxc,f]=
pmtm(x,3.5,512,fs,0.99); psdplot([Pxx Pxxc],f,'hz','db') title('PMTM PSD Estimate with 99% Confidence Intervals')
参考
|
離散扁長回転楕円体列の計算 |
|
Burg法を使ったパワースペクトル密度を計算 |
|
共分散法を使ったパワースペクトル密度の計算 |
|
固有ベクトル法を使った擬似スペクトルの推定 |
|
ピリオドグラムを使ったパワースペクトル密度の計算 |
|
修正共分散法を使ったパワースペクトル密度の計算 |
|
MUSIC アルゴリズムを使った擬似スペクトルの推定 |
|
パワースペクトル密度データのプロット |
|
Welch法を使ったパワースペクトル密度の計算 |
|
Yule-Walker AR法を使ったパワースペクトル密度の計算 |
参考文献
[1] Percival, D.B., and A.T. Walden, Spectral Analysis for Physical Applications: Multitaper and Conventional Univariate Techniques, Cambridge University Press, 1993.
[2] Thomson, D.J., "Spectrum estimation and harmonic analysis," Proceedings of the IEEE, Vol. 70 (1982), pp. 1055-1096.
![]() | pmcov | pmusic | ![]() |