可能重复:
Matlab Cross correlation vs Correlation Coefficient question
当我在MATLAB中交叉关联2个数据集a
和b
(每个73点长)并绘制图形时,它看起来像一个145点的三角形。当我绘制范围为+/- 1的互相关输出时,我在相关系数和类似三角形的图之间感到困惑。
答案 0 :(得分:33)
我认真地认为你需要阅读更多有关互相关函数的信息。来自统计书的相关系数,因为你的混淆比MATLAB更基础。除非你知道你正在处理什么,否则你无法理解MATLAB给你的东西,即使你得到了正确的程序。
以下是您在cross correlation中所做的事情。请按以下方式考虑数据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
在数据不存在的地方填入零,即在这种情况下,{0}超过0 B
,然后在0之前A
。然后你逐点相乘并添加,给{{1} }作为互相关的第一点。
然后向右滑动0 + 0 + 3 + 0 + 0 + 0 = 3
一步并重复
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
一直滑到B
的另一端。
得到的向量是A
,-1是因为我们从0开始重叠,所以它少了一点。所以在这里你应该在互相关中获得length(A)+length(B)-1
分,在你的情况下,你应该获得3 + 4 - 1=6
分。
如您所见,任何点的互相关矢量的值都不必在±1之内。当两个数据矢量“最相似”时,互相关具有最大值。峰值从零开始的“偏移”表示两个数据集之间的“滞后”。
correlation coefficient(我假设Pearson的)只是一个定义为
的数字73 + 73 -1 = 145
其中 Covariance(A,B)
r = --------------------------------
________________________________
\|Covariance(A,A)*Covariance(B,B)
更好地称为Covariance(A,A)
。这个数量的范围可以从Variance(A)
到-1
(至于为什么它必须介于±1之间,查找Cauchy-Schwartz inequality)
虽然您可以肯定地计算具有不相等数据点的两个数据向量的互相关,但不能计算它们的相关系数。协方差的概念衡量两个变量/数据集如何一起变化,而不是为不相等的数据集定义。
答案 1 :(得分:0)
你读过那个函数返回的内容吗? 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
以便退房。它下面的公式解释了原因。