快速傅里叶实现实现_matlab实现

傅里叶原理:

在这里插入图片描述
在这里插入图片描述
快速傅里叶原理:
在这里插入图片描述
在这里插入图片描述
快速傅里叶-算法实现原理:
在这里插入图片描述

代码实现:

代码参考网上资料,出处不详,侵权删。

%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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值