czk108 发表于 2010-4-14 16:25

apfft仿真问题

利用以下apfft时移相位差法做频率校正仿真实验时,遇到以下问题:
1.当频率小数部分为0.5时,频率校正误差在0.5Hz左右,误差很大。其他情况时误差很小。
2.当频率小数部分属于(0.5~1)Hz之间时,幅值校正误差较大,随着小数部分的增大误差逐渐增大。
各位有没有遇到这样的问题,该怎么解决啊?
close all;clc;clear all;
T=100;k=1;
while T>0;
    T=T-1;
N=1024;
t=-N+1:N*2-1;
f1=151.5;
A1=1;
ph1=60;
s=A1*cos(1*(2*pi*t*f1/N+ph1*pi/180));
s=awgn(s,15);
win=hann(N)';
win1=hanning(N)';
win2=conv(win,win1);
win2=win2/sum(win2);
w=pi*2;
s1=s(1:2*N-1);
y1=s1.*win2;%加窗后的信号
y1a=y1(N:end)+;%经全相预处理的N点序列
Out1=fft(y1a,N);
a1=abs(Out1);
p1=mod(angle(Out1),2*pi);
s2=s(1+N:3*N-1);
y2=s2.*win2;
y2a=y2(N:end)+;
Out2=fft(y2a,N);
a2=abs(Out2);
p2=mod(angle(Out2),2*pi);
dph=mod(p2-p1,2*pi);
rr=round(151);
dph=dph(rr+1);
if dph>pi
dph=dph-2*pi;
elseif dph<-pi
dph=dph+2*pi;
end
disp('频偏')
g=dph/pi/2
h=2*pi*g.*(1-g.*g)./sin(pi*g);
aa1=abs((h.^2).*a2)/2;
fff(k)=rr+g;
aaa(k)=aa1(floor(f1)+1);
ppp(k)=p1(rr+1)*180/pi;
k=k+1;
end
disp('频率校正值')
fff=sqrt(mean(fff.^2))
disp('振幅校正值')
aaa=sqrt(mean(aaa.^2))
disp('初相位校正值')
ppp=sqrt(mean(ppp.^2))
期待大侠指点

czk108 发表于 2010-4-26 16:47

没有高手吗   急!!!
页: [1]
查看完整版本: apfft仿真问题