关于APFFT的分析频率的间隔问题
本人是初学者,关于APFFT的很多理论可能不是太理解……不过阅读了这里很多很好的帖子,帮助很多。请问在使用APFFT去分析一个由多个不同频率组成的信号的时候,例如是由两个不同频率的正弦信号叠加组成的信号,如果这两个频率分别是6.66667Hz和7.5Hz,会不会因为这两个频率的间隔太少,导致最后计算出来的结果(如: 幅度,频率,相位等)会有很大误差,
我使用以下的代码去做的
close all; clc; clear all;
N=600;
t=-N+1:N*2+1;
Nfft=N;
f1=60/9;f2=60/8;sf=; % f1=6.66667, f2= 7.5
A1=1;A2=1;
ph1=60;ph2=150;
s=A1*sin(2*pi*t*f1/N+ph1*pi/180)+A2*sin(2*pi*t*f2/N+ph2*pi/180);
win=hann(N)';win1=hann(N)';
win2=conv(win,win1);
win2=win2/sum(win2);
s1=s(1:2*N-1);
y1=s1.*win2;
y1a=y1(N:end)+;
Out1=fft(y1a,Nfft);
a1=abs(Out1);
p1=mod(phase(Out1),2*pi);
s2=s(1+N:3*N-1);
y2=s2.*win2;
y2a=y2(N:end)+;
Out2=fft(y2a,Nfft);
a2=abs(Out2);
p2=mod(phase(Out2),2*pi);
dph=mod(p2-p1,2*pi);
for si=1:length(sf)
rr=round(sf(si));
dph_val=dph(rr+1);
if dph_val>pi
dph_val=dph_val-2*pi;
elseif dph_val<-pi
dph_val=dph_val+2*pi;
end
g=dph_val/pi/2;
h=2*pi*g.*(1-g.*g)./sin(pi*g);
aa1=abs((h.^2).*a1)/2;
fff(si)=rr+g;
aaa(si)=aa1(rr+1);
ppp(si)=p1(rr+1)*180/pi;
end
fff
aaa
ppp
结果是:
fff= 6.5939 7.5085 (6.6667 7.5)
aaa=1.3974 0.9948 (1.0000 1.0000)
ppp=9.7914 54.3465 (330.0000 60.0000)
所以可以看到结果有很大的误差(括号里是正确的结果),因为如果我用两个频率相隔比较远一点的频率,就可以得到正确的结果(如15Hz和6.6667Hz),因此我觉得程序大概没什么问题,当然我不能确定,还是请大家指导一下!
不知道这样的问题是不是有方法去解决呢?或者这样的问题产生的原因是什么?可以通过什么方法解决它?谢谢大家!
回复 楼主kevin19821 的帖子
用一般校正方法频谱间隔3 以上才好. 频谱靠得太近,有二个解决方法:
一是降低采样频率fs, 你的程序中fs=N, 频谱中每间隔fs/N=1Hz, 若fs=N/3, 频谱中每间隔fs/N=1/3Hz, 就可以区分你的频率为60/9和60/8两个信号了. 程序改动处如下
在N=600 后 加 fs=N/3
s=A1*sin(2*pi*t*f1/N+ph1*pi/180)+A2*sin(2*pi*t*f2/N+ph2*pi/180);
改为 s=A1*sin(2*pi*t*f1/fs+ph1*pi/180)+A2*sin(2*pi*t*f2/fs+ph2*pi/180);
rr=round(sf(si)) 改为 rr=round(sf(si)*N/fs);
fff(si)=rr+g; 改为 fff(si)=(rr+g)*fs/N;
运行结果:
ppp= 6.666603562848446e+000 7.500000006453633e+000
aaa = 1.000000223099778e+000 1.001110712113026e+000
ppp =3.300340760618933e+002 5.999999651428831e+001
二是采用密集频谱校正法, 可校正在1个频率间隔内的两个频率成份, 方法复什些. 参见
方体莲,洪一:"利用FFT校正两个密集信号的频率和相位", 雷达科学与技术,Vol.3,No,6 p378-382, 2005
[ 本帖最后由 zhwang554 于 2010-1-27 19:24 编辑 ] 楼上强人...
回复 沙发 zhwang554 的帖子
谢谢你的回复!如果降低采样率,其实就是为了采样更多的信号,对吗?
因为本来的采样率是600Hz,信号s的采样点有1799点,需要3秒时间去采样,
现在降低采样率至200Hz,信号s的采样点虽然仍然是1799点,但需要9秒的采样。
所以如果要解决这问题,关键是增加采样的时间,目的是改善频率的解析度?
第二个方法我没有看,所以我先去找那篇文章看看,谢谢!
[ 本帖最后由 chi_man 于 2010-1-29 12:19 编辑 ]
页:
[1]