Matlab中有两个现成的函数可以求自相关:方法1是利用互相关函数xcorr;方法2是自相关函数autocorr。
但是对于向量x,只是进行xcorr(x)和autocorr(x),求的的结果却差别很大。除了xcorr求得的序列是一个中心对称的偶函数序列外,数值的大小也不对应。
看了help,然后自己实验了一下,终于找到了原因。首先,autocorr是对序列减去均值后做的自相关,最后又进行了归一化。而且由于自相关本身是偶函数,而xcorr本身是计算互相关的,所以xcorr最终的结果是2*N-1,而autocorr只是取了以中心点N为起始的后面N个序列。因此,如果以向量x为例,x长为N。则用autocorr(x,N-1)能得到的N长度结果。用xcorr需要有以下几步:
E = mean(x);
X2 =x-E;
c =xcorr(x2);
d =c./c(N);
f =d(N:2*N-1);
可见,求自相关还是用autocorr更方便一些。另外,这里为了方便,只是采用了默认的调用方式,两个函数的具体参数变化还是要看help详细说明,暂不讨论。