Signal Processing Toolbox | ![]() ![]() |
表示
Cxy=
cohere(x,y) Cxy=
cohere(x,y,nfft) [Cxy,f]=
cohere(x,y,nfft,fs) Cxy=
cohere(x,y,nfft,fs,window) Cxy=
cohere(x,y,nfft,fs,window,numoverlap) Cxy=
cohere(x,y,...,'dflag
') cohere(x,y)
詳細
Cxy = cohere(x,y)
は、長さn
の信号ベクトルx
とy
の間の2乗コヒーレンスを求めます。コヒーレンスは、x
およびy
のパワースペクトルとx
およびy
のクロススペクトルの関数で、つぎのように表されます。
nfft
は、cohere
が使用するFFTの長さを設定します。この値により、コヒーレンスを計算する周波数を決定します。fs
は、サンプリング周波数を設定するスカラ値です。window
は、cohere
がx
およびy
ベクトルの分割に使用するウィンドウ関数とサンプル数を設定します。numoverlap
は、分割したデータ間での重ね合わせを行なうサンプル数です。入力引数を省略すると、デフォルト値が使われます。
Cxy
= cohere(x,y)
は、つぎのデフォルト値を使用します。
nfft = min(256,length(x))
fs = 2
window
は、長さnfft
の周期的な Hann (Hanning) ウインドウnumoverlap = 0
x
が実数の場合、cohere
は正の周波数のみでコヒーレンス関数を推定します。この場合、出力Cxy
は、nfft
が偶数の場合、長さ(nfft/2 + 1)
の列ベクトル、n
が奇数の場合、長さ(nfft + 1)/2
の列ベクトルとなります。x
またはy
が複素数の場合、cohere
は正と負の周波数でコヒーレンス関数を推定し、Cxy
の長さはnfft
となります。
Cxy = cohere(x,y,nfft)
は、x
に対するパワースペクトルの推定に長さnfft
のFFTを使用します。実行速度を最も速くするには、nfft
を2のベキ乗として設定します。
[Cxy,f] = cohere(x,y,nfft,fs)
は、計算するコヒーレンスの周波数をベクトルf
に出力します。fs
は、サンプリング周波数です。f
は、Cxy
と同じ大きさなので、plot(f,Cxy)
は、適切にスケーリングされた周波数に対するコヒーレンス関数をプロットします。fs
は、周波数を求めるだけのもので、出力Cxy
には影響しません。
cohere(x,y,nfft,fs,window)
は、ベクトルx
およびy
の分割したものに対するウィンドウ関数およびウインドウのサンプル数を設定します。window
にスカラ値を与えた場合、cohere
は、その値を長さとするHannウィンドウを使用します。ウィンドウの長さは、nfft
以下でなければなりません。ウィンドウの長さがnfft
を越えていれば、cohere
は、分割毎にゼロを付加します。
cohere(x,y,nfft,fs,window,numoverlap)
は、numoverlap
サンプルで、分割したx
を重ね合わせます。
x
またはy
以外のどの入力引数にも、空行列[]
を使って、デフォルト値を設定することができます。たとえば、
cohere(x,y,[],[],kaiser(128,5));
は、 nfft
の値として256を、 fs
の値として2を、それぞれ使用します。
cohere(x,y,...,'
は、トレンド除去オプションを設定します。ここで、dflag
')
dflag
にはつぎの文字列を設定できます。
linear
:ウィンドウを適用する前にx
、y
から各々の最適近似直線を除去します。mean
:ウィンドウを適用する前にx
、y
から各々の平均値を除去します。none
:トレンド除去を行ないません(デフォルト) 引数dflag
は、入力引数のリストの最後に付けなければなりません。cohere
は、省略した入力引数の数に関係なく、dflag
文字列を認識します。
cohere
は、出力引数を設定しないと、周波数に対するコヒーレンス推定値をカレントのFigureウィンドウにプロットします。
例題
2つの有色雑音列x
とy
のコヒーレンス推定値を計算して、プロットします。
randn('state',0); h=
fir1(30,0.2,boxcar(31)); h1=
ones(1,10)/sqrt(10); r=
randn(16384,1); x=
filter(h1,1,r); y=
filter(h,1,x); cohere(x,y,1024,[],[],512)
診断
誤った引数を使用した場合、つぎのような警告メッセージが表示されます。
Requires window's length to be no greater than the FFT length. Requires NOVERLAP to be strictly less than the window length. Requires positive integer values for NFFT and NOVERLAP. Requires vector (either row or column) input. Requires inputs X and Y to have the same length.
アルゴリズム
cohere
は、つぎのように、パワースペクトル推定のWelch法(参考文献[2]および[3]を参照)を使って、2乗コヒーレンス関数(参考文献[1])を推定します。
x
およびy
を重ね合せを考慮して分割し、各分割データのトレンド除去を行い、その結果にwindow
を適用します。
nfft
の高速フーリエ変換を計算します。
x
のスペクトルの2乗を平均してPxx
を作成し、y
のスペクトルの2乗を平均してPyy
を作成し、x
とy
のスペクトルの積を平均してPxy
を作成します。そして、つぎのステートメントによりCxy
を計算します。
Cxy=
abs(Pxy).^2/(Pxx.*
Pyy)
参考
|
2つの信号のクロススペクトル密度(CSD)の推定 |
|
Welch法を使ったパワースペクトル密度(PSD)の推定 |
|
入力および出力からの伝達関数の推定 |
参考文献
[1] Kay, S.M. Modern Spectral Estimation. Englewood Cliffs, NJ: Prentice-Hall, 1988. Pg. 454.
[2] Rabiner, L.R., and B. Gold. Theory and Application of Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1975.
[3] Welch, P.D. "The Use of Fast Fourier Transform for the Estimation of Power Spectra: A Method Based on Time Averaging Over Short, Modified Periodograms." IEEE Trans. Audio Electroacoust. Vol. AU-15 (June 1967). Pgs. 70-73.
![]() | chirp | conv | ![]() |