lsjfft.m

来自「用MATLAB编写的FFT程序」· M 代码 · 共 22 行

M
22
字号
function   X=lsjfft(x);%x为输入的序列
M=nextpow2(length(x));%求大于等于x长度的2的最小次幂
N=pow2(M);
if length(x)<N;
    x=[x,zeros(1,N-length(x))];%若x的长度小于N,补N-length(x)个0
          end
rev_order=bin2dec(fliplr(dec2bin([1:N]-1,M)))+1;%求数列1:N的倒序,dec2bin()十进制转换为二进制,
                                                ;%bin2dec()二进制转换为十进制,fliplr()
X=x(rev_order);  % 将x倒序后作为输入X
for L=1:M
    B=2^(L-1);
    W=exp(-j*2*pi/N);
    for J=1:B
        p=2^(M-L)*(J-1);
        for K=J:2^L:N
            W=W^p;
            X(K)=X(K)+X(K+B)*W;
            X(K+B)=X(K)-X(K+B)*W;
        end
    end
end

⌨️ 快捷键说明

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