2014-02-19 60 views
0

我有一個關於xcorr函數的問題。兩個矩陣之間的xcorr

目前此功能可以計算矩陣的自相關性,但無法計算的2點矩陣的互相關:

A=[1,2;3,4]; 
B=[5,6;7,8]; 

xcorr(A); %% Possible 
xcorr(A,A); %% Not Possible 
xcorr(A,B); %% Not Possible 

你知道什麼解決辦法要做到這一點,但沒有使用for循環?

回答

1

xcorr基本上有兩種語法。

c = xcorr(x, y) 

計算兩個標量信號之間的互相關函數(給定爲載體),和

c = xcorr(x) 

計算如果x是矢量的信號的自相關函數,並且自動並且如果它是矩陣,則在所有列x之間具有互相關函數。如果x的大小爲n x p,則c的大小爲2*n-1 x p^2

當你寫

c = xcorr(x, y); 

兩個矩陣xy,我假設你想在xy所有信號的所有信號之間的互相關函數。 xcorr無法做到這一點。但是,如果兩個矩陣都有n行,你可以寫

c = xcorr([x, y]); 

得到了在xy所有信號之間的自相關和互相關函數。 c的大小爲2*n-1 x (p1+p2)^2,其中p1p2是兩個矩陣中的信號(列)的數量。然後可以重塑和截斷結果:

c = reshape(c, 2*n-1, p1+p2, p1+p2); 
c = c(:, 1 : p1, p1+1 : end); 

其結果是,其中第一維對應於滯後的三維矩陣,第二枚舉信號x和第三枚舉y的信號;其大小爲2*n-1* x p1 x p2

+0

謝謝Donda,那正是我需要的 – Yann

+0

不客氣! –

2

要處理矩陣之間的交叉相關,只需使用它的2D版本:xcorr2

所以計算自相關只做

xcorr2(A) 

,同時找到兩個矩陣

xcorr2(A,B) 

。例如交叉相關,與A,B的結果是:

8 23 14 
30 70 38 
18 39 20 
+0

感謝您的回覆。 xcorr最酷的是我可以將矩陣看作一維信號的集合(就像我的情況一樣)。所以xcorr的自相關輸出是一個矩陣(2L-1,L * L)。我想用xcorr2我可以獲得一個for循環的巢,但我仍然認爲有一些缺失的功能... – Yann

相關問題