Main Content

peig

固有ベクトル法を使用した疑似スペクトル

説明

[S,wo] = peig(x,p) では、固有ベクトル スペクトル推定法が実装され、入力信号 x の疑似スペクトル推定 S と、疑似スペクトルが評価される正規化周波数 (ラジアン/サンプル単位) のベクトル wo が返されます。疑似スペクトルは、入力データ x に関連した相関行列の固有ベクトルの推定を使用して計算されます。入力引数 p を使用して、信号部分空間の次元を指定できます。

[S,wo] = peig(x,p,wi) では、ベクトル wi で指定された正規化周波数において計算された疑似スペクトルが返されます。ベクトル wi は 2 つ以上の要素を持たなければなりません。そうでない場合は、関数が nfft として解釈するためです。

[S,wo] = peig(___,nfft) では、疑似スペクトルの推定に使用される、整数値の FFT 長 nfft が指定されます。この構文には、前の構文の入力引数を任意に組み合わせて含めることができます。

[S,wo] = peig(___,'corr') では、入力引数 x が信号データの行列ではなく、相関行列として解釈されます。この構文では、x は正方行列でなければなりません。また、すべての固有値は非負でなければなりません。

[S,fo] = peig(x,p,nfft,fs) では、ベクトル fo で指定された周波数において計算された疑似スペクトルが返されます (Hz 単位)。サンプル レート fs を Hz 単位で指定します。

[S,fo] = peig(x,p,fi,fs) では、ベクトル fi で指定された周波数において計算された疑似スペクトルが返されます。ベクトル fi は 2 つ以上の要素を持たなければなりません。そうでない場合は、関数が nfft として解釈するためです。

[S,fo] = peig(x,p,nfft,fs,nwin,noverlap) では、ウィンドウ nwin およびオーバーラップ長 noverlap を使用して入力データ x をセグメント化することで、疑似スペクトル S が返されます。

[___] = peig(___,freqrange) では、fo または wo に含める周波数値の範囲が指定されます。

[___,v,e] = peig(___) では、ノイズの固有ベクトルの行列 v が、関連する固有値を含むベクトル e と共に返されます。

出力引数なしに peig(___) を使用すると、現在の Figure ウィンドウに疑似スペクトルがプロットされます。

すべて折りたたむ

固有ベクトル法を実行して、ノイズ内の 3 つの正弦波で構成されている疑似スペクトルを求めます。既定の FFT 長 256 を使用します。入力は複素正弦波であるため、p を入力数と同じ値に設定します。相関行列の推定に、修正共分散法を使用します。

n = 0:99;   
s = exp(1i*pi/2*n)+2*exp(1i*pi/4*n)+exp(1i*pi/3*n)+randn(1,100);
X = corrmtx(s,12,'mod'); 
peig(X,3,'whole')

単位分散のホワイト ガウス ノイズに含まれる 2 つの正弦波の和で構成される実信号を生成します。信号は 100 Hz で 1 秒間サンプリングされます。正弦波には 25 Hz と 35 Hz の周波数があります。周波数が低い方の正弦波の振幅は他方の振幅の 2 倍です。

fs = 100;
t = 0:1/fs:1-1/fs;

s = 2*sin(2*pi*25*t)+sin(2*pi*35*t)+randn(1,100);

固有ベクトル法を使用して、0 からナイキスト周波数までの信号の擬似スペクトルを計算します。信号の部分空間の次元を 2、DFT 長を 512 に指定します。

peig(s,2,512,fs,'half')

信号が実数のため、2 つの正弦波は分解できません。次元 4 の信号部分空間を使用して計算を繰り返します。

peig(s,4,512,fs,'half')

入力引数

すべて折りたたむ

ベクトルまたは行列として指定される入力信号。x がベクトルの場合は、信号の 1 つの観測値として扱われます。x が行列の場合、x の各行は信号の個別の観測値を表します。たとえば、x'*x が相関行列の推定となるような、配列処理の場合のように各行がセンサー配列の 1 つの出力である場合などです。

メモ

corrmtx の出力を使用して、x を生成できます。

複素数のサポート: あり

部分空間の次元。実数の正の整数または 2 要素ベクトルとして指定します。p が実数の正の整数である場合は、部分空間の次元として扱われます。p が 2 要素ベクトルの場合は、p の 2 番目の要素は、信号の相関行列での推定固有値の最小値、λminを乗算したしきい値を表しています。しきい値 λmin*p(2) より小さい固有値は、ノイズ部分空間に割り当てられます。この場合、p(1) では、信号部分空間の最大次元が指定されます。p の 2 番目のエントリにある追加のしきい値パラメーターを使用すると、ノイズ部分空間と信号部分空間の割り当てを柔軟にコントロールできるようになります。

メモ

peig の入力が実数正弦波である場合は、p の値は正弦波の数の 2 倍に設定します。入力が複素正弦波である場合は、p は正弦波数と等しく設定します。

複素数のサポート: あり

入力正規化周波数。ベクトルとして指定します。

データ型: double

正の整数として指定する DFT 点の数。nfft が空として指定されている場合、既定の nfft が使用されます。

サンプル レート。Hz 単位の正のスカラーとして指定します。fs を空ベクトル [] として指定すると、サンプル レートの既定値である 1 Hz が使用されます。

入力周波数。ベクトルとして指定します。ベクトルで指定された周波数において疑似スペクトルが計算されます。

箱型ウィンドウの長さ。非負の整数として指定します。

オーバーラップするサンプル数。ウィンドウの長さより小さな非負の整数として指定します。

メモ

引数 nwinnoverlap は、構文で 'corr' を使用した場合は無視されます。

疑似スペクトル推定の周波数範囲。'half'whole、または 'centered' のいずれかとして指定します。

  • 'half' — 実数入力信号 x について半分のスペクトルを返します。nfft が偶数の場合、S は長さ nfft/2 + 1、計算区間は [0,π] です。nfft が奇数の場合、S の長さは (nfft + 1)/2、周波数範囲は [0,π) です。fs を指定すると、その区間は nfft が偶数の場合 [0,fs/2)、奇数の場合 [0,fs/2] になります。

  • 'whole' — 実数または複素数の入力 x についてスペクトル全体を返します。この場合、S の長さは nfft、計算区間は [0, 2π) です。fs を指定する場合、周波数範囲は [0,fs) です。

  • 'centered' — 実数または複素数の入力 x について中央に揃えたスペクトル全体を返します。この場合、S の長さは nfft で、計算区間は nfft が偶数の場合 (–π,π]、nfft が奇数の場合 (–π,π) になります。fs を指定すると、周波数範囲は nfft が偶数の場合 (–fs/2,fs/2]、奇数の場合 (–fs/2,fs/2) になります。

メモ

引数 freqrange または 'corr' は、入力引数リストの p の後で任意の位置に配置できます。

出力引数

すべて折りたたむ

疑似スペクトル推定。ベクトルとして返されます。疑似スペクトルは、入力データ x に関連した相関行列の固有ベクトルの推定を使用して計算されます。

出力正規化周波数。ベクトルとして指定します。Swo は同じ長さです。一般的に、FFT の長さと入力値 x により、計算される S の長さと対応する正規化周波数の範囲が決まります。この表は、最初の構文での S (と wo) の長さと、対応する正規化周波数の範囲を示しています。

長さ 256 (既定の設定)の FFT に対する S 特性

入力データ型S と w0 の長さ対応する正規化周波数の範囲

実数

129

[0, π]

複素数

256

[0, 2π)

nfft が指定されている場合、以下の表は Swo の長さ、および wo に対する周波数範囲を示しています。

S と周波数ベクトルの特性

入力データ型nfft 偶数または奇数S と w の長さw の範囲

実数

偶数

(nfft/2 )+ 1

[0, π]

実数

奇数

(nfft + 1)/2

[0, π)

複素数

偶数または奇数

nfft

[0, 2π)

出力周波数。ベクトルとして返されます。fo に対する周波数範囲は、nfftfs、および入力 x の値に依存します。S (と fo) の長さは、上の表のS と周波数ベクトルの特性と同じです。以下の表は、nfftfs が指定されている場合の fo に対する周波数範囲を示しています。

fs を設定した S と周波数ベクトルの特性

入力データ型

nfft 偶数/奇数

f の範囲

実数

偶数

[0, fs/2]

実数

奇数

[0, fs/2)

複素数

偶数または奇数

[0, fs)

さらに、nwinnoverlap も指定されている場合は、相関行列固有値を推定するために使用される行列が定式化される前に、入力データ x が分割され、ウィンドウが適用されます。データのセグメンテーションは、nwinnoverlap、および x の形式に依存します。次の表に、結果として得られるウィンドウを適用したセグメントに関するコメントを記載します。

x と nwin に依存するウィンドウを適用したデータ

x の形式

nwin の形式

ウィンドウが適用されたデータ

データ ベクトル

スカラー

長さが nwin

データ ベクトル

係数ベクトル

長さが length(nwin)

データ行列

スカラー

データには、ウィンドウが適用されません。

データ行列

係数ベクトル

length(nwin) は、x の列の長さと同じでなければなりません。また、noverlap は使用されません。

この構文の関連情報は、入力データと構文に依存した固有ベクトルの長さを参照してください。

ノイズの固有ベクトル。行列として返されます。v の列は、次元が size(v,2) のノイズ部分空間をにまたがっています。信号部分空間の次元は、size(v,1)-size(v,2) です。

相関行列の推定固有値。ベクトルとして返されます。

アルゴリズム

固有ベクトル法では、シュミットの固有空間解析法 (参考文献[2]) から導出される MUSIC アルゴリズムの重み付きバージョンを使用して、信号または相関行列から疑似スペクトルを推定します。このアルゴリズムでは、信号の周波数成分を推定するために、信号の相関行列の固有空間解析が行われます。相関行列が与えられていない場合、信号の相関行列の固有値と固有ベクトルは、svd を使用して推定されます。このアルゴリズムは、正弦波に加法性ホワイト ガウス ノイズを加算した信号に対して、特に適しています。

固有ベクトル法では、次の式で与えられる疑似スペクトルが生成されます。

Pev(f)=1k=p+1N|vkHe(f)|2/λk

ここで N は固有ベクトルの次元、vk は入力信号の相関行列の k 番目の固有ベクトルです。整数 p は信号部分空間の次元です。このため、和で使用される固有ベクトル vk は、相関行列の最小の固有値 λk に対応します。使用される固有ベクトルは、ノイズサブ空間に広がります。ベクトル e(f) は、複素指数で構成されるため、内積 vkHe(f) は、フーリエ変換になります。これは、PSD の計算で使用されます。各 vk に対して FFT が計算され、次に振幅の 2 乗の和が計算され、スケーリングされます。

参照

[1] Marple, S. Lawrence. Digital Spectral Analysis. Englewood Cliffs, NJ: Prentice-Hall, 1987, pp. 373–378.

[2] Schmidt, R. O. “Multiple Emitter Location and Signal Parameter Estimation.” IEEE® Transactions on Antennas and Propagation. Vol. AP-34, March, 1986, pp. 276–280.

[3] Stoica, Petre, and Randolph L. Moses. Spectral Analysis of Signals. Upper Saddle River, NJ: Prentice Hall, 2005.

拡張機能

バージョン履歴

R2006a より前に導入