傅立叶变换的实现—MATLAB(纯代码)
2019-08-08 18:36
357 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33668060/article/details/98882712
闲来无事,想验证一下MATLAB中内涵的f傅立叶变换fft2()和ifft2()正确不,于是就有了下面的代码和结果:该部分只是写了傅立叶变换,不是快速傅立叶变换,虽然运行结果都一样)。建议用不大于100×100的图片进行验证,原因不解释,自己去百度。
[code]close all; clear all; clc % A = [1 2 3 4; 5 6 7 8; 2 3 4 5; 4 5 6 7]; % A = imread('cameraman.tif'); A = imread('C:\Users\Administrator\Desktop\捕获3.png'); A = rgb2gray(A); A = im2double(A); B = fft2(A); %matlab 傅立叶变换调用函数,与自己写的进行对照 C = fftshift(B); [m,n] = size(A); %傅立叶变换 for u=0:m-1 for v=0:n-1 sum = 0; for x=0:m-1 e1 = exp(-i*2*pi*u*x/m); for y=0:n-1 e2 = exp(-i*2*pi*v*y/n); sum = sum + A(x+1,y+1)*e1*e2; end end F(u+1,v+1) = sum; end end figure; subplot(131);imshow(log(B));title('fft2公式的傅立叶变换图') subplot(132);imshow(log(F));title('原公式公式的傅立叶变换图') subplot(133);imshow(log(C));title('C') C = ifft2(B); %傅立叶逆变换 for x=0:m-1 for y=0:n-1 sum = 0; for u=0:m-1 e1 = exp(i*2*pi*u*x/m); for v=0:n-1 e2 = exp(i*2*pi*v*y/n); sum = sum + F(u+1,v+1)*e1*e2; end end f(x+1,y+1) = real(sum/(m*n)); end end figure; subplot(121);imshow(C,[]);title('fft2公式的傅立叶逆变换图') subplot(122);imshow(f,[]);title('原公式公式的傅立叶逆变换图')
结果:
傅立叶变换的频谱图
逆变换后的图:
相关文章推荐
- fourier transfrom 傅立叶变换代码实现(matlab语言)
- 双边滤波(bilateral filter)彩色图 matlab实现代码
- matlab实现 图像的比特平面分层 代码
- "Gradient Domain Guided Image Filtering"论文中边缘权重函数matlab实现代码
- 剪切波的一些知识(附python及matlab实现剪切波变换的代码)
- 层次分析法(AHP) 将评判矩阵转化为权重矩阵代码实现 MATLAB
- 聚类方法:DBSCAN算法研究(3)--C++代码实现及与matlab实例结果比较
- EMD和BEMD算法实现(matlab代码)
- matlab实现CNN代码test_example_CNN_MNIST.m注释版
- 【web】PHP网页调用Matlab代码的实现以及一些需要注意的bug~
- 为什么要进行傅立叶变换?傅立叶变换究竟有何意义?如何用Matlab实现快速傅立叶变换
- 图像Ostu二值化原理及matlab实现代码
- Matlab---GUI界面编程2(m文件纯代码实现)
- 压缩感知——沃尔什-哈达玛(WHT)变换与逆变换的Matlab代码实现
- matlab实现 基于若干个高阶比特平面的图像重构 代码
- 图像质量评价之PSNR 和SSIM(附Matlab实现代码)
- matlab中的开方sqrt用牛顿迭代法实现的代码
- 图像分割指标及Matlab代码实现
- 复杂网络-无标度网络matlab代码实现
- LeNet5的一个MATLAB实现的代码解析小结