2017-12-13 9 views
2

私は、toシグナル間の相互相関を計算するために次のコードを用意しました。視覚的には、信号は非常によく相関している。信号の長さは異なりますが、どちらもサンプリングレートは100Hzです。信号間には遅れがあります(以下のtimeDiffと呼ばれます)。異なる長さの信号に対して[-1,1]との相互相関を正規化する

[acor,lag] = xcorr(signal1,signal2); 
    [cor,I] = max(abs(acor)); 
    lagDiff = lag(I); 
    timeDiff = lagDiff/100; 
    fprintf('Correlation = %0.5f \n',cor); 

私は6239.06131の相関関係を得ています。これを-1と1に正規化するにはどうすればよいですか?それ以外の場合は解釈が難しいためです。

+0

「cor = 6239.06131」は最大相関であるため、+1の正規化値に対応します。一般に、 'acor/cor'を実行して、' acor'ベクトルの値のいずれかに対して正規化された相関を得ることができます。 – jsanalytics

答えて

1

ドキュメント https://it.mathworks.com/help/signal/ref/xcorr.html

続いて「1ゼロ遅れでの自己相関ようにシーケンスを正規化」というXCORR機能

[acor,lag] = xcorr(signal1,signal2,'coeff'); 

上の正規化オプションがあります。与えられた時間シフト(遅れ)が2つの系列の完全な正または負の相関をもたらす場合、 'coeff'オプションは1または-1の値を生成するだけです。

+1

残念ながら、このオプションは両方のシリーズが同じ長さでない場合にのみ機能します。 – machinery

+1

は、M.Hassanの答えがhttps://stackoverflow.com/questions/39145157/matlab-xcorr-1d-cross-correlation-normalisation-issueに役立つでしょうか? –

関連する問題