myfft.m

来自「傅立叶变换的matlabR2007实现(FFT)」· M 代码 · 共 61 行

M
61
字号
function y = myfft(x)
n=size(x);
for l=0:12,
    if 2^l>=n
        N=2^l;
        L=l;
        break
    end
end
for t=n(2)+1:N,  
    x(t)=0;
end
x               
nv2=N/2;        
nm1=N-1;
I=0;
J=0;
while I<nm1
    if I<J
        t   =x(J+1);
        x(J+1)=x(I+1);
        x(I+1)=t;
    end
    K=nv2;
   while K<=J
        J=J-K;
        K=K/2;
    end
    J=J+K;
    I=I+1;
end
X=x              



M=1;
while M<=L
    LE=2^M;
    LE1=LE/2;
    U=1;
    W=exp(-j*pi/LE1);
    J=0;
    while J<=LE1-1
        I=J;
        while I<=N-1
            IP=I+LE1;
            T= (x(IP+1))*U;
            x(IP+1)=x(I+1)-T;
            x(I+1)=x(I+1)+T;
            I=I+LE;
        end
        U=U*W;
        J=J+1;
    end
    M=M+1;
end
y=x;



⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?