我认真地认为您需要从统计书籍中阅读更多有关互相关函数和相关系数的内容,因为您在这里的困惑比与 MATLAB 相关的更根本。除非您知道自己正在处理什么,否则即使您编写了正确的程序,您也无法理解 MATLAB 为您提供的内容。
互相关:
这是您在互相关 http://en.wikipedia.org/wiki/Cross-correlation。考虑数据A
and 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 且A
在 0 之前。然后将它们逐点相乘并相加,得到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
giving 0 + 9 + 4 + 0 + 0 = 13
作为互相关中的第二点。你继续这样做直到你滑倒B
一直到另一端A
.
得到的向量是length(A)+length(B)-1
,-1 是因为我们从 0 处开始重叠,所以少了 1 分。所以在这里你应该得到3 + 4 - 1=6
互相关点,在你的情况下,你应该得到73 + 73 -1 = 145
points.
正如您所看到的,任意点处的互相关向量的值不需要在±1之内。当两个数据向量“最相似”时,互相关具有最大值。峰值相对于零的“偏移”指示了两个数据集之间的“滞后”。
相关系数
The 相关系数 http://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient(我假设皮尔逊)只是一个定义为的数字
Covariance(A,B)
r = --------------------------------
________________________________
\|Covariance(A,A)*Covariance(B,B)
where Covariance(A,A)
更广为人知的是Variance(A)
。这个数量的范围可以是-1
to 1
(至于为什么要在±1之间,查一下柯西-施瓦茨不等式 http://en.wikipedia.org/wiki/Cauchy%E2%80%93Schwarz_inequality)
NOTE:
虽然您肯定可以计算具有不相等数据点的两个数据向量的互相关性,但您cannot计算它们的相关系数。协方差的概念是两个变量/数据集如何变化的度量together并且没有为不相等的数据集定义。