MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > 圆孔菲涅尔衍射多维可视化仿真工具

圆孔菲涅尔衍射多维可视化仿真工具

资 源 简 介

本项目旨在利用MATLAB强大的数值计算与绘图引擎,建立一个针对物理光学中圆孔菲涅尔(近场)衍射现象的完整仿真系统。该系统基于标量衍射理论,采用菲涅尔近似积分公式或基于快速傅里叶变换(FFT)的角谱衍射算法,精确计算单色平行光通过圆形孔径后在不同距离观察屏上的复振幅及光强分布。项目的主要功能是自动化生成并整合展示四幅关键物理图像,以帮助用户全方位理解衍射特性:1. 原图展示,即绘制圆孔光阑的透过率函数图形,直观呈现孔径的几何形状与尺寸;2. 二维衍射图样,在观察平面上生成光强的二维灰度图或伪彩色图,清晰展示菲涅尔衍射特有的明暗相间同心圆环结构;3. 函数图像,提取通过光斑中心的径向光强分布数据,绘制二维剖面曲线图,用于量化分析光强随位置变化的细节及中心亮斑/暗斑特征;4. 三维衍射图样,利用三维曲面绘图技术(如mesh或surf)构建光强立体分布图,直观展示衍射场能量在空间中的起伏与峰值情况。该程序支持用户灵活调整波长、孔径半径、衍射距离等参数,是光学教学与实验预研的有力工具。

详 情 说 明

基于MATLAB的圆孔菲涅尔衍射多维可视化仿真

项目简介

本项目是一个基于MATLAB开发的物理光学仿真系统,专注于模拟和展示单色平行光通过圆形孔径后的菲涅尔(近场)衍射现象。程序利用标量衍射理论,结合快速傅里叶变换(FFT)算法,能够精确计算并在观察屏上呈现光波的复振幅及二维/三维光强分布。该工具旨在通过多维度的可视化图表,帮助用户直观理解衍射光场的物理特性,适用于光学教学演示及实验前的数值模拟预研。

功能特性

  • 高精度数值仿真:基于物理光学的标量衍射理论,采用频域传递函数法进行计算。
  • 高效FFT算法:利用快速傅里叶变换处理大尺寸矩阵(1024x1024),确保计算速度与分辨率。
  • 多维可视化展示:自动在一个窗口内生成四张关键图表,包括光阑原图、二维光斑、径向剖面和三维立体分布。
  • 参数化设计:支持灵活调整波长、孔径半径、衍射距离和采样精度。

系统要求

  • 软件环境:MATLAB R2016a 或更高版本。
  • 工具箱:本项目主要依赖MATLAB基础数值计算与绘图功能,无需安装额外的专用工具箱。

使用方法

  1. 确保MATLAB环境已准备就绪。
  2. 将主要脚本文件(main.m)放置于当前工作目录。
  3. 直接运行该脚本。
  4. 程序运行结束后,将自动弹出包含四个子图的仿真结果窗口,并在控制台输出当前的仿真参数信息。

核心算法与实现逻辑

本项目脚本完全基于包含在 main.m 中的逻辑进行构建,其核心处理流程如下:

1. 参数初始化与空间建模

程序首先定义了光学的物理参数和计算网格参数:
  • 物理参数:设定红光波长(632.8 nm)、圆孔半径(0.5 mm)以及观察屏距离(0.5 m)。
  • 空间网格:定义了一个边长为 8 mm 的物理平面,并将其离散化为 1024x1024 的采样网格。
  • 坐标系构建:使用 meshgrid 生成二维空间直角坐标系 $(x, y)$。

2. 光阑透射函数生成

程序通过计算网格点到中心的距离 $r = sqrt{x^2 + y^2}$ 来构建输入场:
  • 二值化处理:根据圆孔半径判定,孔内($r le text{radius}$)赋值为 1,孔外赋值为 0。这也代表了入射波为振幅为 1、相位为 0 的垂直入射平面波。

3. 基于传递函数的衍射计算

这是仿真的核心部分,采用了频域传递函数法计算菲涅尔衍射:
  • 频域转换:根据空间采样率生成对应的频率坐标 $(f_x, f_y)$。
  • 构建传递函数:代码中定义了菲涅尔近似下的传递函数 $H(f_x, f_y)$。公式包含常数相位因子 $exp(jkz)$ 和二次相位因子 $exp(-jpilambda z(f_x^2 + f_y^2))$。
  • FFT运算流程
1. 对输入场 $U_0$ 进行二维快速傅里叶变换 (fft2),并使用 fftshift 将低频分量移至频谱中心。 2. 在频域将输入频谱与传递函数 $H$ 相乘。 3. 对结果进行二维傅里叶逆变换 (ifft2),得到观察屏上的复振幅分布 $U_z$。
  • 光强计算:通过取复振幅模的平方 ($|U_z|^2$) 获得光强分布,并进行归一化处理以便于绘图。

4. 数据可视化模块

程序创建了一个大尺寸图形窗口,并划分为 2x2 的子图区域进行展示:

  • 子图1:圆孔光阑原图
* 绘制孔径的透过率函数(二值图像)。 * 使用灰度(gray)色图,直观展示光阑的几何形状(白色透光,黑色不透光)。

  • 子图2:二维衍射光强分布
* 绘制观察屏上的二维归一化光强图。 * 使用热力图(hot)配色,明亮区域代表光强高,清晰呈现菲涅尔衍射特有的同心圆环结构。

  • 子图3:中心径向光强剖面
* 提取矩阵中心行的数据,绘制一位光强分布曲线。 * 横轴为位置(mm),纵轴为归一化光强,用于量化分析中心亮斑及旁瓣的强度变化。

  • 子图4:三维立体衍射光强分布
* 利用 mesh 函数绘制光强的三维曲面。 * 降采样处理:为了保证三维绘图的流畅性和视觉效果,代码对数据进行了降采样(每4个点取1个)。 * 使用 Jet 色图和平滑着色(shading interp),并设置了 45 度俯视视角的观察角度。

技术细节说明

  • 频谱中心化:在FFT和IFFT过程中,代码严格使用了 fftshiftifftshift,确保零频分量位于矩阵中心,这对于正确使用解析表达式构建的传递函数至关重要。
  • 物理单位换算:在绘图阶段,代码将内部计算用的“米”制单位统一转换为“毫米”,使坐标轴读数更符合常规实验习惯。
  • 菲涅尔近似:代码中使用的传递函数形式基于菲涅尔近似(二次相位因子),适用于近轴及远场条件,相比完整的角谱理论计算速度更快且在近场条件下依然保持了极高的精度。