重複の可能性:
Matlab相互相関と相関係数の質問
a
MATLABで2 つのデータ セットb
(それぞれ 73 ポイントの長さ)を相互に関連付けてグラフにすると、145 ポイントの三角形のように表示されます。+/- 1 の範囲の相互相関出力をプロットすると、相関係数と三角形のようなグラフの間で混乱します。
重複の可能性:
Matlab相互相関と相関係数の質問
a
MATLABで2 つのデータ セットb
(それぞれ 73 ポイントの長さ)を相互に関連付けてグラフにすると、145 ポイントの三角形のように表示されます。+/- 1 の範囲の相互相関出力をプロットすると、相関係数と三角形のようなグラフの間で混乱します。
ここでの混乱はMATLABに関連するものよりも基本的なものであるため、統計の本から相互相関関数と相関係数についてもっと読む必要があると真剣に考えています。何を扱っているかを理解していなければ、たとえプログラムを正しく作成したとしても、MATLAB が提供するものを理解することはできません。
相互相関で行うことは次のとおりです。A
データを考慮し、次のようにB
します
A B
x
x | x x
| | | x |
| | x | | | x
| | | | | | |
--------------- -----------
0 1 2 3 0 1 2
次に、 の最後の点と の最初の点が揃うB
ように、それを最後までスライドさせます。B
A
x
x | x
| | |
| | x |
| | | |
----x---x------------------
-2 -1 0 1 2 3
x
x |
| | x
| | |
----------------x---x---x--
-2 -1 0 1 2 3
データが存在しない場所、つまりこの場合はB
0 を超えて 0 のA
前にゼロを埋めます。次に、それらを点ごとに乗算して加算0 + 0 + 3 + 0 + 0 + 0 = 3
し、相互相関の最初の点として与えます。
次に、1ステップ右にスライドB
して繰り返します
x
x | x
| | |
| | x |
| | | |
----x------------------
-1 0 1 2 3
x
x |
| | x
| | |
----------------x---x--
-1 0 1 2 3
0 + 9 + 4 + 0 + 0 = 13
相互相関の 2 番目の点として与えます。B
のもう一方の端までスライドするまで、これを続けますA
。
結果のベクトルは ですlength(A)+length(B)-1
。-1 は、オーバーラップが 0 で始まったため、1 ポイント少なくなります。したがって、ここ3 + 4 - 1=6
では相互相関でポイントを取得する必要があり、あなたの場合は73 + 73 -1 = 145
ポイントを取得する必要があります。
ご覧のとおり、任意の点における相互相関ベクトルの値は、±1 以内である必要はありません。相互相関は、2 つのデータ ベクトルが「最も似ている」場合に最大になります。ゼロからのピークの「オフセット」は、2 つのデータセット間の「遅れ」を示します。
相関係数(ピアソンのものだと思います) は、次のように定義された単なる数値です。
Covariance(A,B)
r = --------------------------------
________________________________
\|Covariance(A,A)*Covariance(B,B)
Covariance(A,A)
としてよく知られている場所ですVariance(A)
。-1
これは~ ~の範囲の量です1
(±1 の間でなければならない理由については、Cauchy-Schwartz の不等式を参照してください) 。
データ ポイントが等しくない 2 つのデータ ベクトルの相互相関は確実に計算できますが、それらの相関係数を計算することはできません。共分散の概念は、2 つの変数/データセットが一緒に変化する方法の尺度であり、等しくないデータセットに対しては定義されていません。
その関数が返すものを読んだことがありますか? http://www.mathworks.com/help/toolbox/signal/xcorr.html
c = xcorr(x,y)
相互相関シーケンスを長さ2*N-1
ベクトルで返します。ここで、x
とy
は長さN
ベクトル(N>1)
です。
2*73-1=145
チェックアウトします。そして、そのすぐ下の式がその理由を説明しています。