快速傅里叶实现实现_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

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
傅立变换在MATLAB中可以使用多个函数来实现。其中,fft2函数用于进行二维快速傅立正变换,ifft2函数用于进行二维快速傅立反变换。fftshift函数可以将傅立变换的原点移到中心,ifftshift函数则是fftshift的反变换。另外,real函数可以提取复数的实部,imag函数可以提取复数的虚部。\[1\] 下面是一个MATLAB代码的实例,展示了如何对数字图像进行傅立变换和反变换: ```matlab clc;clear;close all; % 读取图像 i = imread('lena.bmp'); i = rgb2gray(i); % 将真彩色图像转换为灰度图像 i = im2double(i); % 将数据类型转换为double,数值范围变为\[0,1\] % 进行快速傅立变换 i1 = fft2(i); % 将傅立变换进行象限转换,即将中心移到零点 i2 = fftshift(i1); % 求傅立变换结果的模,即傅立频谱 i3 = abs(i2); % 将傅立变换结果映射到较小的正数 i4 = log(i3+1); % 将变换的象限转换回去,即将中心复位 i5 = ifftshift(i2); % 进行快速傅立反变换 i6 = ifft2(i5); % 显示结果图像 subplot(131);imshow(i);title('原图'); subplot(132);imshow(i4,\[\]);title('傅立变换频谱'); subplot(133);imshow(i6);title('傅立逆变换图像'); ``` 另外,下面是另一个MATLAB代码的实例,展示了如何对图像进行傅立变换和反变换: ```matlab % 读取图像 R = imread("img/test2.png"); % 将图片变为灰度图像 I = rgb2gray(R); % 进行傅立变换 J = fft2(I); % 图像平移 L = fftshift(J); % 平移回来 M = ifftshift(L); % 傅立反变换 M = ifft2(M); % 显示结果图像 figure; subplot(121); imshow(I); title('原图'); subplot(122); imshow(uint8(M)); title('反变换'); ``` 这些代码示例演示了如何使用MATLAB实现傅立变换和反变换,并显示结果图像。你可以根据自己的需要进行修改和调整。 #### 引用[.reference_title] - *1* *2* [傅里变换的相关实验——matlab实现](https://blog.csdn.net/xcz8023/article/details/126413641)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [图像傅里变换的MATLAB实现](https://blog.csdn.net/qq_45735233/article/details/112755443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值