卢工 发表于 2010-5-8 16:19

fft精确测频

我想通过频率细化试图精确测出信号的频率,可结果出来的误差比之前没用的还差,以下是代码,请各位高手指教
f0=47;
N=1024;
fs=10240;%采样频率
fx0=fs/N;
n=;%采样点数
xb=;% 电压基波和各次谐波幅值
Q=;%电压基波和各次谐%波初相角,弧度数
t=n/fs;
s=sin(2*pi*f0*t);
XN=fft(s,N);
AXN=abs(XN);
stem(AXN);
f=(-1)*fs/N;
max=AXN(1);
for i=1:1023
    if AXN(i+1)>max
       max=AXN(i+1);
       k=i;
    end
end
f2=k*fx0;
f2
h=exp(-j*2*pi*(f2-fx0)*t);
y=s.*h;
%fx1=fs/N
y1=resample(y,1,10);%重新采样,采样频率为fs/N
k1=0:1:102;
h1=exp((j*2*pi*(f2-fx0)*k1)/102);
y1=y1.*h1;%反移频,使得前后频率一致
y1=abs(fft(y1));%快速傅里叶变换
stem(y1);
plot(k1,y1*2/102);   % 被修改

max1=y1(1);
for i=1:102
    if y1(i+1)>max1
       max1=y1(i+1);
       j=i;
    end
end
f3=j;
f3
页: [1]
查看完整版本: fft精确测频