根据方程this article你可以指望在这样的交叉相关系数:如果要计算系数只对信号的某些部分
% 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
功能?
编辑 好吧,我已经检查了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
编辑。 正如你可以看到,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
我们需要比“它似乎没有正常工作”更多的细节。你得到了什么?你得到了什么? – gnovice 2009-12-02 15:28:47