首页 文章

互相关系数

提问于
浏览
0

我在时域中有两个波形,我需要在MATLAB中测量cross-correlation系数 . 我试过 max(abs(xcorr(m,n,'coeff'))) 但似乎没有正常工作 .

另外,我需要测量波形的不同部分的互相关系数,例如,以1分钟的间隔测量互相关系数 . 如果可能的话,将这些值输出到矩阵或其他东西 .

我知道这是一个很多问题,但我是一个MATLAB新手,发现这个任务令人生畏!
我将非常感激地向您提供有关此问题任何部分的任何帮助 .


EDIT: 这是我用来测试相关代码的代码:

x = rand(1,14400);
y = rand(1,14400);
r = max( abs(xcorr(x,y,'coeff')) )

4 回答

  • 5

    根据本文中的公式,您可以通过以下方式计算互相关系数:

    % Assuming: m and n are your signals organized as row vectors
    r = cov([m;n]) / (std(m)*std(n));
    

    如果你只想为信号的某些部分计算系数,只需使用:

    r = cov([m(1:100);n(1:100)]) / (std(m(1:100))*std(n(1:100)));
    

    你有没有试过 corrcoef 功能?

    Edit 好的,我检查了corrcoef功能,它似乎工作正常,看看:

    >> x = 100*randn(1000,1);
    >> y=34*randn(1000,1);
    >> corrcoef(x,y)
    
    ans =
    
        1.0000   -0.0543
       -0.0543    1.0000
    

    因此相关系数等于-0.0543 - 相似性小(如预期的那样) .
    为了检查这一点,让我们计算相同信号的系数:

    >> y=x;
    >> corrcoef(x,y)
    
    ans =
    
         1     1
         1     1
    

    正如预期的那样,它等于1 .

    Edit . 如您所见,corrcoef的结果是这两个信号之间所有可能相关系数的矩阵:

    x        y
    x    1.0000   -0.0543
    y   -0.0543    1.0000
    

    因此,对于互相关,您需要选择主对角线之外的一个元素(存在自相关系数,在这种情况下总是等于1) .
    如果你选择ans(2,1)或ans(1,2)没有区别 - 如果计算x和y的相关性,或y和x的相关性,则没有区别 .

    所以最终的代码看起来应该类似于:

    R = corrcoef(x,y); % Correlation matrix
    r = R(2,1); % this is your Cross-Correlation coefficient
    
  • 1

    请尝试使用 Cross-Covariance

    x = rand(1,14400);
    y = rand(1,14400);
    r = max( abs(xcov(x,y,'coeff')) )
    

    交叉协方差序列是均值去除序列的互相关 . 就像Joonas提到的那样, rand 的DC偏移为0.5,会给你一个"incorrect"的结果 .

  • 0

    我尝试了max(abs(xcorr(m,n,'coeff')))但它似乎没有正常工作 .

    你是什么意思?它输出了什么,你期待什么?

    互相关中可能存在的一个问题是波形中的直流偏置会破坏结果 . 据我所知,没有通用的方法可以做任何事情 . 您必须以某种方式确保波形不包含任何直流偏置 .

  • 0

    这是我用来测试相关代码的代码:x = rand(1,14400);
    y =兰特(1,14400);
    r = max(abs(xcorr(x,y,'coeff')))

    问题是 rand 返回的数字是 uniformly distributed in the interval (0,1). 换句话说,你的DC偏差(平均值)为0.5!这就是为什么你得到看似随机信号的高相关系数的原因:它们不是很随机,因为每个都有相似的常数分量,显示在相关系数中 .

    所以,尝试使用 randn :它返回其元素为 normally distributed with mean 0 的随机数,这就是你想要的 .

相关问题