【问题标题】:A question on cross-correlation & correlation coefficient [duplicate]关于互相关和相关系数的问题[重复]
【发布时间】:2011-09-11 04:44:15
【问题描述】:

可能重复:
Matlab Cross correlation vs Correlation Coefficient question

当我在 MATLAB 中交叉关联 2 个数据集 ab(每个 73 点长)并绘制它时,它看起来像一个有 145 个点的三角形。当我绘制范围为 +/- 1 的互相关输出时,我对相关系数和类三角形图感到困惑。

【问题讨论】:

    标签: math matlab data-analysis cross-correlation


    【解决方案1】:

    我认真地认为您需要从统计书籍中阅读更多关于互相关函数和相关系数的内容,因为您在这里的困惑比与 MATLAB 相关更基本。除非您知道自己在处理什么,否则即使您的程序正确,您也无法理解 MATLAB 为您提供的功能。

    交叉相关:

    这是您在cross correlation 中所做的事情。考虑数据AB如下

        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
    

    0 + 9 + 4 + 0 + 0 = 13 作为互相关中的第二个点。你一直这样做,直到你将B 一直滑到A 的另一端。

    结果向量是length(A)+length(B)-1,-1 是因为我们从 0 开始重叠,所以它少了一个点。所以在这里你应该在互相关中得到3 + 4 - 1=6 点,在你的情况下,你应该得到73 + 73 -1 = 145 点。

    如您所见,任何点的互相关向量的值不必在 ±1 以内。当两个数据向量“最相似”时,互相关具有最大值。峰值与零的“偏移”表明两个数据集之间存在“滞后”。

    相关系数

    correlation coefficient(我假设是 Pearson 的)只是一个定义为的数字

                Covariance(A,B)
    r = --------------------------------
        ________________________________
      \|Covariance(A,A)*Covariance(B,B)
    

    其中Covariance(A,A) 更广为人知的是Variance(A)。这是一个范围从-11的数量(至于为什么必须在±1之间,请查阅Cauchy-Schwartz inequality

    注意:

    虽然您当然可以计算具有不相等数据点的两个数据向量的互相关,但您无法计算它们的相关系数。协方差的概念是衡量两个变量/数据集如何一起变化的量度,并未针对不相等的数据集进行定义。

    【讨论】:

    • 那么它是否只是显示了 2 个图的相似程度?顺便说一句,感谢冗长的信息回答
    • @Tyler31:更好的说法是它测量两个向量/数据集/时间序列的相似性作为滞后的函数......
    • @Tyler31:顺便说一句,MATLAB 中的互相关只有在您使用'coeff' 选项要求它这样做时才会返回介于 -1 和 1 之间的值。跨度>
    • 感谢您对我的术语混淆的帮助
    • 非常感谢 Lorem,您很好地解释了互相关的工作原理。我知道这是一个旧线程(并且是重复的),但这个答案可能是我见过的最好的。
    【解决方案2】:

    你读过那个函数返回的内容吗? http://www.mathworks.com/help/toolbox/signal/xcorr.html

    c = xcorr(x,y)长度2*N-1 向量返回互相关序列,其中xy 是长度N 向量(N>1)

    2*73-1=145 以便结帐。下面的公式解释了原因。

    【讨论】:

      猜你喜欢
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多