马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
王教授您好,我看过你的“全相位比值法和Hann窗生成公式”帖子中的程序
close all;clc;clear all; N=1024; t=-N+1:N*2-1; f1=39.3;A1=1;ph1=60; s=1*cos(1*(2*pi*t*f1/N+ph1*pi/180)); win=sin(pi*(1/2:N-1/2)/N).^2; win2=conv(win,win); win2=win2/sum(win2); w=pi*2; s1=s(1:2*N-1); y1=s1.*win2; y1a=y1(N:end)+[0 y1(1:N-1)]; Out1=fft(y1a,N); a1=abs(Out1); p1=mod(phase(Out1),2*pi); s2=s(1+N:3*N-1); y2=s2.*win2; y2a=y2(N:end)+[0 y2(1:N-1)]; Out2=fft(y2a,N); a2=abs(Out2); p2=mod(phase(Out2),2*pi); g=mod((p2-p1)/pi/2,1); h=2*(1-g.*g)./sinc(g); aaa=abs((h.^2).*a1)/2; rr=round(f1); fff=floor(f1)+g(rr+1) aaa=aaa(floor(f1)+1) ppp=p1(rr+1)*180/pi
中校正精度可达10-12次方,其中是对于单频的校正。使用单频时,使用angle()替代phase()也行。 我的疑问是:假如信号中有多个频率成分能使用angle()替代angle()么 我知道phase() = upwrap(angel()),使得相位角平滑一些。
|