根據方程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