相互相関xcorrについて質問です

조회 수: 15 (최근 30일)
Takaaki Takatsuki
Takaaki Takatsuki 2020년 1월 20일
댓글: Takaaki Takatsuki 2020년 1월 21일
相互相関xcorrについて質問です。(素人ですみません)
以下のプログラムを実行したところ、変数lagsに0が入ります。
プログラムとしては、エクセルから読み込み、変数(d1,d2)に入れ込んで相互相関を取っています。
(d2はd1からcircshiftを使って中身を100だけ動かしているのでラグは100になると思うのですが、、)
分かる方がいらっしゃれば、ご教授お願い致します。
%データ入力
data = importdata('data.xlsx');
size(data(:,1));
datasize = ans(1);
t = 1:datasize;
d1 = data(:,1);
d2 = circshift(d1,-100)
%相互相関
[c,lags] = xcorr(d1,d2,'normalized');
stem(lags,c);
saveas(gcf,'LagData.png');
  댓글 수: 1
Naoya
Naoya 2020년 1월 21일
xcorrに入力する実際のデータがないと判断できませんが、例えば、 xcorr に入力する信号の長さが 100 サンプルだったり、正弦波のように元々周期的な信号が対象の場合は、ラグが 0 となる可能性もあります。
また、circshift (循環シフト)ではなく、
d2 = zeros( size(d1));
d2(1:end-100) = d(101:end);
のような形で与えることで結果が変わってくることもあるかもしれません。

댓글을 달려면 로그인하십시오.

채택된 답변

Naoya
Naoya 2020년 1월 21일
原理的には信号d1とd2の畳み込みを行っていることになりますが、d1, d2 が今回のように プラス方向に信号の値にバイアスが掛かっている場合は、どうしてもその畳み込み演算の中心部の値が高くなる傾向になると思います。
例えば、 d1, d2 共にゼロ平均化してから xcorr を実行すると所望の結果が得られるかもしれません。
>> xcorr(d1-mean(d1), d2-mean(d2))
  댓글 수: 1
Takaaki Takatsuki
Takaaki Takatsuki 2020년 1월 21일
ありがとうございます。解決しました!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Takaaki Takatsuki
Takaaki Takatsuki 2020년 1월 21일
丁寧な回答ありがとうございます。
入力データについて説明が不十分でありました。
入力データ(d1)はかなり非定常性の強い波形で、周期的な信号ではありません。(下記図表参照、赤:d1、青:d2)
サンプル数(データ数)1853個となっています。
この場合、入力するデータが悪いのでしょうか。
教えて頂けたら幸いです。
PreData.png

Community Treasure Hunt

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

Start Hunting!