自相关矩阵和互相关矩阵的matlab实现

自相关矩阵和互相关矩阵的matlab实现

一维实值x的自相关矩阵Rxx应为实对称的toeplitz矩阵,而一维实值信号x,y 的互相关矩阵Rxy为非对称的toeplitz阵,matlab提供的corrmtx产生的并非通常意义下的autocorrelation matrix

事实上,我们可以利用xcorr+toeplitz和corrmtx两种方法实现自相关阵Rxx 和互相关阵Rxy

一、Rxx

1)% implementation with xcorr and toeplitz

m= ;% dfine the time lag m+1, and m+1<=n;

n=length(x);%location of rxx(0);

rx=xcorr(x);%length of rx is 2*n-1;

Rxx=toeplitz(rx(n:n+m))/n;

2)%implementation with corrmtx

m= ;% dfine the time lag m+1,and m+1<=n

rx=corrmtx(x,m);

Rxx=rx'*rx;

二、Rxy

1)% implementation with xcorr and toeplitz

m= ;% dfine the time lag m+1, and m+1<=n;

n=max(length(x),length(y));location of rxy(0);

rxy=xcorr(x,y);%length of rxy is 2*n-1;

RR=toeplitz(rxy)/n;%RR is a (2*n-1)*(2*n-1) matrix

Rxy=RR(1:m,n:n+m);%the exact location of Rxy in RR;

2)% implementation with corrmtx

m= ;% dfine the time lag m+1, and m+1<=n;

rx=corrmtx(x,m);

ry=corrmtx(y,m);

Rxy=rx'*ry; %on the other hand, Ryx=Rxy'

上面的方法实现了自相关和互相关的有偏矩估计(实际是用实现卷积的前提

下做到的),也是做统计分析的常用手段,当然除了有偏矩估计,corrmtx还有很多可选参数,以供不同目的使用。

还有Rxy=Ryx',也就是说要求Ryx,只需要计算Rxy即可。

需要注意的是,当时延m+1接近于信号长度n的时候,xcorr后面的值

(rx(m+1),rx(m),

r(m-1)...)估计的并不准确,这将严重影响器等后续工作的效果,可以确信的是,n-m-1>100的时候,Rxx是可信的。

另外,自相关阵Rxx是一个主对角线绝对占优阵,也就是说,主对角线的值远大于其它对角线

这样svd(Rxx)得到的奇异值和eig(Rxx)得到的特征值几乎相同,这也是为什么有的用svd方法求主分量,有的则用evd(eigen value decomposition)求主分量了。

相关推荐
相关主题
热门推荐