|
可以用功率谱密度函数求自相关函数,因为功率谱密度函数和自相关函数互为傅里叶变换,但是楼主的程序中有错误,造成了计算结果的有误。
1,求功率谱密度时不能加窗函数;
2,求功率谱密度时要补零(为了能和xcorr结果比较,xcorr结果为2047个,把x补零后为2047长),楼主在没有补零下求出的相关函数是循环相关函数(circular autocorrelation function);
3,如果直接用功率谱密度函数求出的自相关函数有偏的估算,所以在用xcorr时也要用'biased'。同时xcorr中对自相关函数归一化处理了,所以用功率谱密度函数求出的自相关函数后也作归一化处理。
把楼主的程序稍作修改如下,可看出用功率谱密度函数求出的自相关函数和自带函数求出的结果一样。
N=1024;
N2=N*2-1;
t=0:0.01:10.23;
df=100/N2; %频率分辨率
f=(0:N2-1)*df;
n=1:N;
w=hamming(1024);
W=diag(w);
x=square(2*pi*10*t);
%X=x*W;
y=fft(x,2047);
p=y.* conj(y);
R=real(ifft(p));
[c,lags]=xcorr(x,'biased');
subplot(411);
plot(t,x)
title('原信号');
axis([0,12,-1.5,1.5]);
grid;
subplot(412);
plot(f,p)
title('功率谱');
xlabel('频率');
grid;
subplot(413);
Rm=max(R);
plot(lags/100,fftshift(R)/Rm);
axis([-10,10,-1,1]);
title('用傅立叶反变换求自相关函数');
grid;
subplot(414);
plot(lags/100,c);
title('用自带函数xcorr求自相关函数');
axis([-10,10,-1,1]);
grid;
得图有 |
评分
-
1
查看全部评分
-
|