快速傅里叶实现实现

傅里叶原理:
在这里插入图片描述
在这里插入图片描述
快速傅里叶原理:
在这里插入图片描述
在这里插入图片描述
快速傅里叶-算法实现原理:
在这里插入图片描述
代码实现:
代码参考网上资料,出处不详,侵权删。

%myfft(A,M)有两个形参,A为要进行快速傅里叶变换的序列,M为序列长度对2的对数,

%即如果序列A[n]的长度为8,则M=3

% A=[1,2,3,4,5,6,7,8];
% M=3;

function [A] = myfft(A,M)

N=2^M; %序列的长度为N

LH=N/2; %序列长度的一半

N1=N-2;

J=LH

for I=1:1:N1%将输入序列A[n]按运算流程图第一列的顺序排好
    
    if I<J
        
        temp=A(I+1);
        
        A(I+1)=A(J+1);
        
        A(J+1)=temp;
        %temp
    end
    
    A
    K=LH;
    
    while J>=K
        
        J=J-K;
        
        K=K/2;
        
    end
    
    J=J+K;
    %I
   %J
    
end

for L=1:1:M %L表示序列分解层次,此次分解有M-L个子序列
    
    B=2^(L-1);
    % B=1,2,4 当前第几层
    for S=0:B-1 %执行第S个蝶形运算,每个子序列共有B个蝶形运算
        
        p=S*2^(M-L); %旋转因子的上标,即此时旋转因子为 相当于u
        
        for k=S:2^L:N-1%执行各个子序列中的第S个蝶形运算,有M-L个子序列
            % k有几组
            %蝶形运算
            temp=A(k+1)+A(k+B+1)*exp(-1i*2*pi*p/N);
            % B=地址(每次+2^(L-1))
            A(k+B+1)=A(k+1)-A(k+B+1)*exp(-1i*2*pi*p/N);%减法(n/2~n)
            
            A(k+1)=temp; %加法(0~n/2)
            temp
            A
        end
        
    end
    
end
1i
end

本文为原创。
转载请注明出处。

代码下载:
https://download.csdn.net/download/zxm_jimin/10977203

猜你喜欢

转载自blog.csdn.net/zxm_jimin/article/details/87944911