关于基4时间抽取FFT程序的循环设置
最近想做下分裂基的FFT,可是在编写基4时间抽取FFT程序的过程中遇到了程序循环算法的问题,想跟大家一起讨论讨论.function=czffttb4(x)
% The program can be used to Fast Fourier Transform.
% The different between czfft-4 and czfft-2 is the length of the short singal.
% x:input
% y:output
n=fix(log2(x)/2);
%-------------------------------分析:基4的fft不能用倒序的方法对原序列进行排列。
l=length(x);
x1(1,:)=x(1:2:l-1);
x1(2,:)=x(2:2:l);
l2=size(x1,2);
x2(1,:)=x1(1,1:2:l2-1)
x2(2,:)=x1(2,1:2:l2-1)
x2(3,:)=x1(1,2:2:l2);
x2(4,:)=x1(2,2:2:l2);
%--------------------------------完成切分
x2=x2'
h=[1 1 1 1
1 -j -1 j
1 -1 1 -1
1 j -1 -j]
for i=1:4
x2(:,i)=h* x2(:,i)
end
x2=conj(x2)'
wn=exp(-j*2*pi/l)
m=size(x2,2)
for i=0:m-1
w(1,i+1)=1
w(2,i+1)=(wn)^i
w(3,i+1)=(wn)^(2.*i)
w(4,i+1)=(wn)^(3.*i)
end
y=h*(x2.*w)
经过测试,本程序已经能够计算序列长为16的FFT,但要想做到更大的兼容性,需要添加许多循环程序来实现.希望大家能多出注意多提想法,同时对于本程序有什么意见和建议大家也可以提出,都是初学者多交流交流总有好处的,谢谢.
[ 本帖最后由 花如月 于 2007-12-7 18:18 编辑 ]
页:
[1]