返回信息流自己写了一段实现FFT算法的代码,8点时结果还是正确的,但是16点时结果就与实际出现了偏差。但是不知道错误出在哪里,望各位多多指点~~~~~~~~~
代码如下:
clear;
N=32; %FFT点数
M=25; %序列点数
Q=0.9+0.3i;
n=0:(M-1);
x=[Q.^n,zeros(1,N-M)];
W=exp(-2i*pi/N);
X=(1-Q^M)./(1-Q*W.^n); %理论上的结果
m=0:(N/2-1);
Wm=W.^m;
%反转
o=0:(N-1);
MH=[zeros(1,N/2),ones(1,N/2)];
ML=rem(o,2);
O=o-ML*1-MH*(N/2)+ML*(N/2)+MH*1;
y(o+1)=x(O+1);
temp=zeros(1,N);
for m=1:log2(N) %m为蝶形运算的重数
for p=1:2^m:N %p为各重运算中,各组的第一个信号的序号
for q=0:2^(m-1)-1 %q为各组运算中,其他信号偏离第一个信号的位置数
l=q*N/(2^m)+1; %l为Wm因子的下标
temp(p+q) =y(p+q)+y(p+q+2.^(m-1))*Wm(l);
temp(p+q+2.^(m-1))=y(p+q)-y(p+q+2.^(m-1))*Wm(l);
end
end
y=temp;
end
n1=0:(N-1);
subplot(2,1,1);
stem(n,abs(X));
subplot(2,1,2);
stem(n1,abs(y));
这是一条镜像帖。来源:北邮人论坛 / matlab / #8900同步于 2012/4/8
Matlab机器人发帖
有关FFT算法的问题
yunmi
2012/4/8镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。