以光学中圆孔的弗朗禾费衍射为例

matlab

N = 256;  % grid number
D = 1;    % diameter of aperture pupil [m]
L = 5.0*D/1.22;  % Airy disk occupies 5 pixels/grids [m]
x = linspace(-L/2.0, L/2.0, N);
y = linspace(-L/2.0, L/2.0, N);
[xm, ym] = meshgrid(x, y);
r = sqrt(xm.^2 + ym.^2);  % 注意加.
AP = double((r <= D/2.0));
psf = abs(fftshift(fft2(AP))).^2;
subplot(121);imagesc(AP);title('Pupil');
axis square; colorbar;
subplot(122);imagesc(psf);title('Point Spread Function');
axis square; colorbar;

python

先生成孔径函数

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from scipy.io import savemat
print(tf.__version__)  # 2.1.0# 生成Pupil函数
N = 256
D = 1
L = 10.0*D/1.22
x = np.linspace(-L/2.0, L/2.0, N)
y = np.linspace(-L/2.0, L/2.0, N)
[xm, ym] = np.meshgrid(x, y)
r = (xm**2.0 + ym**2.0)**0.5
AP = np.double((r <= D/2.0))
print(AP.dtype)  # float64hf = plt.figure()
ax = Axes3D(hf)
ax.plot_surface(xm, ym, AP, cmap='jet')
ax.view_init(90, 0)savemat('pupil.mat', mdict={'AP': AP})  # 保存数据到matlab中验证

输出
2.1.0
float64

numpy ===> np.fft.fft2

psf = np.fft.fftshift(np.fft.fft2(AP))psf = (np.abs(psf))**2
print(psf.dtype)
print(np.max(psf))hf2 = plt.figure()
ax2 = Axes3D(hf2)
ax2.plot_surface(xm, ym, psf, cmap='jet')
ax2.view_init(90, 0)
savemat('psf.mat', mdict={'psf': psf})

输出
float64
571536.0 与matlab的输出结果是对的上的

tensorflow ====>tf.fft2d(v1.) 或tf.signal.fft2d(v2.)

AP_t = tf.complex(AP,tf.zeros_like(AP))  # 必须转化为复数
print(AP_t.dtype)
psf_t = tf.signal.fftshift(tf.signal.fft2d(AP_t))
psf_t = tf.square(tf.abs(psf_t))
print(psf_t.dtype)
psf_t = psf_t.numpy()
print(psf_t.dtype)
print(np.max(psf_t))hf3 = plt.figure()
ax3 = Axes3D(hf3)
ax3.plot_surface(xm, ym, psf_t, cmap='jet')
ax3.view_init(90, 0)
savemat('psf_t.mat', mdict={'psf_t': psf_t})

输出
<dtype: ‘complex128’>
<dtype: ‘float64’> tensorflow输出的数据类型
float64 numpy输出的数据类型
571536.0 与matlab的输出结果是对的上的


python的绘图效果不太好,但经与matlab的数值结果对比验证,两者是一致。matlab的绘图比较好看是进行了插值运算

使用matlab,numpy和tensorflow2实现快速傅里叶变换FFT 交叉验证相关推荐

  1. Matlab如何进行利用离散傅里叶变换DFT (快速傅里叶变换FFT)进行频谱分析

    文章目录 1. 定义 2. 变换和处理 3. 函数 4. 实例演示 例1:单频正弦信号(整数周期采样) 例2:单频正弦信号(非整数周期采样) 例3:含有直流分量的单频正弦信号 例4:正弦复合信号 例5 ...

  2. 快速傅里叶变换FFT进行频谱分析(matlab)

    快速傅里叶变换FFT进行频谱分析(matlab) 本章摘要:FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域.有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了 ...

  3. matlab cftool光滑曲线导出为什么就不光滑了_快速傅里叶变换(FFT)中为什么要“补零”?...

    为了大家能够复现各个图中的结果,我附上了所有我编写的MATLAB代码. 创作不易,未经允许,禁止转载. 另外,说明一下,用MATLAB做FFT并不要求数据点个数必须为以2为基数的整数次方.之所以很多资 ...

  4. MATLAB之傅里叶变换,快速傅里叶变换FFT

    文章目录 傅里叶变换及傅里叶逆变换定义 窗函数/矩形脉冲信号的傅里叶变换 基于MATLAB的快速傅里叶变换FFT 傅里叶变换及傅里叶逆变换定义 能从时域的非周期连续信号转化到频域非周期连续信号. 窗函 ...

  5. 基于python的快速傅里叶变换FFT(二)

    基于python的快速傅里叶变换FFT(二) 本文在上一篇博客的基础上进一步探究正弦函数及其FFT变换. 知识点   FFT变换,其实就是快速离散傅里叶变换,傅立叶变换是数字信号处理领域一种很重要的算 ...

  6. 基于python的快速傅里叶变换FFT(一)

    基于python的快速傅里叶变换FFT(一) FFT可以将一个信号变换到频域.有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了.这就是很多信号分析采用FFT变换的原因. ...

  7. OpenCV快速傅里叶变换(FFT)用于图像和视讯流的模糊检测

    OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测 翻译自[OpenCV Fast Fourier Transform (FFT) for blur detection in images ...

  8. Java编程实现快速傅里叶变换FFT

    快速傅里叶变换的时间复杂度分析 1 快速傅里叶变换FFT 1.1 理论分析 1.1.1 离散傅里叶变换 1.1.2 快速傅里叶变换 1.2 编程实现 1.2.1 算法思想 1.2.2 实验结果 1 快 ...

  9. 快速傅里叶变换(FFT)c语言实现

      快速傅里叶变换(FFT)c语言实现:(参考:FFT多种编程语言实现).注意:输入数据个数必须为2的n次方,数据不够可以用0补齐. #include <stdio.h> #include ...

最新文章

  1. 软件工程第二次课后作业——Gaoooo
  2. Struts2的类型转换(下)
  3. Golang——垃圾回收GC
  4. 交换两个变量ab的值PHP,由[交换两个变量的值问题]理解程序的时空复杂度
  5. B1有个自定义表操作慢
  6. oracle_数据库对象
  7. 基于visual Studio2013解决面试题之0203栈实现
  8. ACKRec:注意力异构图卷积深度知识推荐器 SIGIR 2020
  9. OSChina 周三乱弹 —— 程序员,老了会是怎么样?
  10. 60 秒 Linux 检查清单,快速初步定位你的性能问题
  11. oracle数据库使用
  12. 计算机个性化设计小组工作计划,电脑兴趣小组工作计划.doc
  13. 图书管理系统软件测试实验报告,软件工程课程设计实验报告--图书馆管理系统...
  14. 计算机找不到WPS云盘,为什么我的电脑里没有WPS网盘入口?开启教程教给你!
  15. 如果忘记Mac密码该怎么办
  16. 2019年51CTO学院发布课程回顾总结-引莫(孙忠)
  17. 深度学习论文: An Energy and GPU-Computation Efficient Backbone Network for Object Detection及其PyTorch
  18. (转)业务知识_电子商务知识
  19. 树莓派怎么切换输入法_树莓派安装中文界面/输入法/远程桌面控制 实测笔记教学...
  20. tiktok设备注册+xg xk xl xa签名

热门文章

  1. 【自由谈】城域网IPv6过渡技术——CGN部署方式
  2. 适合您业务的四种B2B模型
  3. 从外行的视角尝试讲解为什么这回丰田栽了
  4. 物联网典型场景之智能家电,使用JOSH技术带来的优势和机会
  5. 仿百度壁纸客户端(六)——完结篇之Gallery画廊实现壁纸预览已经项目细节优化...
  6. magento中文文档
  7. 汇聚全国高校最高水平开发者,首届大学生VRAR开发大赛落幕
  8. Maven知识点一览
  9. jupyter notebook 上用matplotlib绘图,出现The kernel appears to have died.It will restart automatically
  10. linux服务器显卡的占用量,命令查看Linux服务器内存、CPU、显卡使用情况