|
fft相位测不准,相位差测得准
不是整数倍采样,fft相位是测不准,但测两路相同频率信号的相位差测得准,两路误差相等,抵消了
由於相位差只在两个频率相同的信号才有意义,所以fft测相位差测得准
如信号相位为p,频偏为df,则fft相位测量值为p+df*pi*(N-1)/N,后一项为频偏df引起的相位失真,只和df和N有关, 这个公式可参见信号处理书
今有两路同频信号,其频偏df也相同,相位分别为p1和p2
则笫一路fft相位测量值为 p11=p1+df*pi*(N-1)/N
笫二路fft相位测量值为 p22=p2+df*pi*(N-1)/N
两路fft相位测量值之差为 p22-p11=p2-p1 即两路信号相位差
下面是采样频率fs=100k,两路信号频率都是f=10k,但初相位分别为50度和100度的测相位差程序,N=512时,测的相位差是准确的50度,但每一路的相位都不准确
close all;clc;clear all;
N=512;
w=2*pi;
t=-0:N-1;
f=10000;
fs=100000;
y1=cos(1*(w*t*f/fs+50.0*pi/180));
win = hanning(N)';
win1 = win/sum(win);
y11= y1.*win1;
y11_fft = fft(y11,N);
a1 = abs(y11_fft);
p1 = mod(phase(y11_fft)*180/pi,360);
y2=cos(1*(w*t*f/fs+100.0*pi/180));
y22= y2.*win1;
y22_fft = fft(y22,N);
a2 = abs(y22_fft);
p2 = mod(phase(y22_fft)*180/pi,360);
pp=p2-p1;
disp('两路相位差')
pp(52)
disp('第一路相位')
p1(52)
disp('第二路相位')
p2(52)
运行结果:
两路相位差 50.000度
第一路相位 85.930度
第二路相位 135.93度
[ 本帖最后由 zhwang554 于 2009-8-18 20:49 编辑 ] |
|