2014-02-19 61 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

相关问题