马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 wdhd 于 2016-9-18 14:49 编辑
如题:
一、两个离散时间序列x,y:
x=[11,-3,19,43,2,-3,9,8,-6,3,5,-7,2,-1,-3,2,0,-8];
y=[9,8,-6,3,5,-7,2,-1,-3,2,0,-8,11,-3,19,43,2,-3];
x和y取样时间间隔均为1d,那么从上述两个观测值可以看出y较x滞后6d。现在想用互功率谱来求出这个时间差(Tao=Theta/2/Pi/f=6d,其中f,Theta为相干谱最大时对应频率和相位),可是我用matlab编了程序,运行结果怎么也不对,想了几天没想明白,所以发上来请求各位帮助,谢谢。
二、原程序
clear
x=[11,-3,19,43,2,-3,9,8,-6,3,5,-7,2,-1,-3,2,0,-8];
y=[-6,3,5,-7,2,-1,-3,2,0,-8,11,-3,19,43,2,-3,9,8];
N=length(x);
Rx=xcorr(x);
Ry=xcorr(y);
[Rxy,lags]=xcorr(x,y,'unbiased');
Sxx=fft(Rx,N);
%x的功率谱
Syy=fft(Ry,N);
%y的功率谱
Sxy=fft(Rxy,N);
%x,y的互谱
Coxy=abs(Sxy)./(abs(Sxx).*abs(Syy));
%x,y的相干谱
n1=1:1:N/2;
f=n1/N;
subplot(3,1,1);
plot(f,abs(Sxy(1:N/2)));
title('幅值谱');
subplot(3,1,2);
plot(f,Coxy(1:N/2));
title('相干谱');
Theta=angle(Sxy);
subplot(3,1,3);
plot(f,Theta(1:N/2));
title('相位谱');
三、附图
[ 本帖最后由 jianliu1 于 2009-5-13 18:27 编辑 ] |