コヒーレンス解析における関数の設定

21 ビュー (過去 30 日間)
Kenta Otsuka
Kenta Otsuka 2020 年 8 月 18 日
回答済み: Naoya 2020 年 8 月 21 日
関数「mscohere」を用いてコヒーレンス解析を実施したいと思っているのですが、下記のコードの[  ]内の設定をどのようすれば良いかわからない状態です。
窓関数、オーバーラップ数等記載がありますが、概念的なところとデータに合わせてどのように設定すればよいかわかりかねる状態です(窓関数の概念だけは理解しています)。
ご教示頂ければ幸いです。
[Cxy,F] = mscohere(x,y,[ ],[ ],[ ],Fs);
データは表面筋電図、サンプリング周波数は1000Hzです。試しに下記を実施しましたが、上手くできませんでした。解析周波数帯域は大まかに0-100Hz程度の範囲を予定しています。
Fs = 1000;
[Cxy,F] = mscohere(x,y,hamming(length(x)),[ ],[ ],Fs); 

採用された回答

Naoya
Naoya 2020 年 8 月 21 日
mscohereは welchのオーバーラップ付き平均ピリオドグラムを用いてcoherenceを推定します。
例えば、welchのオーバーラップ付き平均ピリオドグラムは、時系列信号に対して、
pwelch(x, hann(256), 128, 256, fs);
と定義した場合、
x(1:256) の信号に hann窓を掛けて、256点でFFT
x(129:384) の信号に hann 窓を掛けて、256点でFFT
x(257:512) の信号に hann 窓を掛けて、256点でFFT
・・・・・・・・・・・・・・・・
128サンプルオーバーラップさせながら区分ごとに窓関数付きfft を実行し、最後に平均化して、パワースペクトル密度 pxx が得られることになります。
オーバーラップの値を窓のサイズに近づければ近づけるほど、少しずつ窓をスライドしていくことになりますので平均化の回数が多くなります。
pwelch(x, hann(256), 128, 512, fs);
とすると、 256点の窓に対して 更に 256点分の零値をパディングして 512点でFFTを行うことになります。
※ 上記は pwelch の例となりますが、mscohere についても概念は同じことになります。

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!