ftemp==1%标记为1X=X';temp=0;%将X转置一次endfunction[X,M,N]=NX(X)%输入序列时域抽取子函数%序列X(n)(下标1…N)经此函数作用后重新排列为时域抽取序列X(n)。%N为序列的长度,必须为2的整数次幂[o,N]=size(X);if(~(rem(log2(N),1)==0))M=ceil(log2(N));fori=N+1:2^MX(i)=0;endN=2^M;elseM=log2(N);%error('序列长度不是2的整数次幂!不能进行FFT!')endLH=N/2;J=LH;forI=1:N-2if(I<J)Temp=X(I+1);X(I+1)=X(J+1);X(J+1)=Temp;endK=LH;while(J>=K)J=J-K;K=K/2;endJ=J+K;end进行IFFT变换的MD2ifft.M程序functionA=MD2ifft(x)[o,N]=size(x);if(~(rem(log2(N),1)==0))M=ceil(log2(N));fori=1:oforj=N+1:2^Mx(i,j)=0;endendN=2^M;endif(~(rem(log2(o),1)==0))M=ceil(log2(o));forj=1:Nfori=o+1:2^Mx(i,j)=0;endendo=2^M;endA=zeros(o,N);fori=1:oA(i,:)=Mifft(double(x(i,:)));endforj=1:NA(:,j)=Mifft(double(A(:,j)));endfunctionX=Mifft(x)%IFFT函数%x为输入序列x(n)(行向量)%X为x(n)为DFT[o,N]=size(x);temp=0;ifo~=1%不是行向量x=x';temp=1;%转置一次并标记end[X,M,N]=NX(x);