|
本帖最后由 VibInfo 于 2016-10-21 15:23 编辑
原帖由 songyinghua 于 2010-4-11 16:28 发表
互相关函数和互功率谱是一傅里叶变换对,那么通过对互相关函数做傅里叶变换就能得到互功率谱,或者对互功率谱做逆傅里叶变换得到相关函数。但是我使用matlab的一些指令,但是结果和预想的不同。
举个例子:对自相关 ...
互相关函数和互功率谱是一傅里叶变换对,对模拟信号和对数字信号都是成立的。但在数字信号处理时,当信号为x和y,由xcorr(x,y)求出的长度差不多是x和y的二倍。LZ是从互相关函数做傅里叶变换求得互功率谱,同样可以从互功率谱做逆傅里叶变换求得互相关函数,具体编程如下:
fs=100;N=1024;
n=0:N-1;
t=n/fs;
x=sin(10*pi*t)+cos(20*pi*t);
y=cos(20*pi*t)+cos(5*pi*t);
[a,b]=xcorr(x,y);
subplot 211; plot(b,a,'k','linewidth',2); grid; hold on;
Ft=abs(fft(a));
fa=abs(fft(a));
n1=length(fa);
n2=0:(n1-1);
fe=(n2/n1)*fs;
subplot 212; plot(fe(1:n1/2),fa(1:n1/2),'k','linewidth',2);grid; hold on;
Fx=fft([x zeros(1,N)]);
Fy=fft([y zeros(1,N)]);
Fxy=Fx.*conj(Fy);
fb=abs(Fxy);
plot(fe(1:n1/2),fb(1:n1/2),'r');
legend('由xcorr->FFT求得','由FFT互谱求得')
title('互谱')
R1=real(ifft(fb));
R=ifftshift(R1);
subplot 211; plot(b,R(2:2*N),'r'); xlim([-100 100]); grid;
legend('由xcorr求得','由FFT互谱->IFFT求得')
title('互相关函数')
得图如下,不论互谱,或互相关函数都重合得较好。 |
|