Hyowinner 发表于 2009-1-11 14:03

FFT变换法求两个信号的相位差

我用FFT变换法求出来两个信号的相位差的误差很大啊,
n=1:100;
x=8*sin(2*pi*200/1000*n+pi/6);         %原信号
y=5*sin(2*pi*200/1000*n+pi/3);
X=fft(x);
Y=fft(y);
qx=atan(imag(X)./real(X));
qy=atan(imag(Y)./real(Y));
q=qy-qx;
plot(n,180*q/pi)
xlabel('信噪比')
ylabel('相位差(度)')
请问这样写程序有没有什么错误?为什么结果差距这么大?

songzy41 发表于 2009-1-11 14:52

信号x和y都是200的正弦信号(采样频率1000),要计算相位差只应计算200处的相位,而在其它的频率上没有信号,最多只是信号谱分析中的泄漏,求那些频率的相位差没有意义。如果只求200处的相位差,则能正确地计算出为pi/6。

Hyowinner 发表于 2009-1-12 13:13

我明白了,十分感谢.

Hyowinner 发表于 2009-1-14 18:37

如果我的两个信号都加上高斯噪声的话,每个频率上的相位差不就都有意义了么?
那为什么还是那么大的误差!L=100;                     %信号长度
nx=randn(1,L);             %正态高斯白噪声
ny=randn(1,L);
n=1:100;
x=5*sin(2*pi*200/1000*n+pi/6)+nx;         %原信号
y=8*sin(2*pi*200/1000*n+pi/3)+ny;

X=fft(x);
Y=fft(y);
qx=atan(imag(X)./real(X));
qy=atan(imag(Y)./real(Y));
q=qy-qx;
plot(n,q+30,'-');
xlabel('信噪比')
ylabel('相位差(度)')
legend('数字相关法')

songzy41 发表于 2009-1-14 20:05

问题是楼主得到的那张图有什么意义? 因为除了在200HZ时的相位角是已知的,其它频率虽然有意义,但相位差应该多少呢?得到的图主要是噪声在各频率上的相位差,而在200HZ处相位差依然是30度。但如果楼主做这样的设置:
x=5*sin(2*pi*200/1000*n+pi/6)+nx;         %原信号
y=8*sin(2*pi*200/1000*n+pi/3)+nx;
可以看到除200HZ处相位差是30度,其它频率的相位差几乎为0。

Hyowinner 发表于 2009-1-16 21:59

我知道,可是上面的程序运行出的结果并不符合理论上的几乎为0.
页: [1]
查看完整版本: FFT变换法求两个信号的相位差