快速傅立叶变换FFT的matlab源程序

来源:百度知道 编辑:UC知道 时间:2024/06/06 16:48:03
我编了一个
不好
请教大家给予帮助

function X=myfft(x)
%myfft函数 用递归实现
N=length(x);
t=log2(N);
t1=floor(t);
t2=ceil(t);
if t1~=t2; %若x的长度N不为2的整数次幂,则补0至最接近的2的整数次幂
x=[x zeros(1,2^t2-N)];
N=2^t2;
end
w0=exp(-j*2*pi/N);
X=zeros(1,N);
if N==2
X(1)=x(1)+x(2);
X(2)=x(1)-x(2);
else
n=1:N/2;
xe(n)=x(2*n-1);
xo(n)=x(2*n);
XE=myfft(xe); %递归调用
XO=myfft(xo);
for n=1:N/2
X(n)=XE(n)+XO(n)*(w0^(n-1));
X(n+N/2)=XE(n)-XO(n)*(w0^(n-1));
end
end

先输入x的值,如x=[1,2,3,4,5,6,7,8]
将文件名改为myfft,再调用myfft(x),比较与fft(x)的结果。