Matlab:实现菲涅尔圆孔衍射仿真

news/2024/12/29 10:32:20/

本文基于光学原理,用Matlab实现菲涅尔圆孔衍射现象仿真。


以下使用了两种菲涅尔衍射的数值计算方法:

  • 菲涅尔衍射积分的离散求和
  • 菲涅尔衍射FFT法
Project Code
% 作者:ZQJ
% 日期:2021.7.22 星期四%**********************基于光场传输模拟菲涅尔圆孔衍射*************************
%% 菲涅尔衍射积分*******************************************
clear,clc,close all;
allmasks = f_Masks;
func_translight = f_Lightfield_transmission;
% ********************** 系统参数设定
lamda = 1550e-9;     % 波长
N = 200;             % 一边像素数目
x_length = 0.01;     % 矩阵长度
w0 = 1e-3;           % 高斯光束腰半径
Gs_z = 1e-3;         % 高斯光传输距离
% ********************** 菲涅尔衍射
mask_hole = allmasks.circle_hole(x_length/N,N,0.08/N);
figure; subplot(1,2,1), imagesc(mask_hole); colormap gray;Gaussian_I = f_Gaussian_beams(w0,Gs_z,lamda,x_length,x_length,N,N);
subplot(1,2,2),imagesc(Gaussian_I), colormap hot;E0 = Gaussian_I.*mask_hole;
E1 = func_translight.Fresnel_integrate(lamda,E0,x_length,x_length,x_length,x_length,N,N,0.5);
figure,imagesc(abs(E1)), colormap hot;%% 菲涅尔衍射FFT法******************************************
clear,clc,close all;
allmasks = f_Masks;
func_translight = f_Lightfield_transmission;
% ********************** 系统参数设定
lamda = 1550e-9;     % 波长
N = 200;             % 一边像素数目
x_length = 0.01;     % 矩阵长度
w0 = 1e-3;           % 高斯光束腰半径
Gs_z = 1e-3;         % 高斯光传输距离
% ********************** 菲涅尔衍射
mask_hole = allmasks.circle_hole(x_length/N,N,0.08/N);
figure; subplot(1,2,1), imagesc(mask_hole); colormap gray;Gaussian_I = f_Gaussian_beams(w0,Gs_z,lamda,x_length,x_length,N,N);
subplot(1,2,2),imagesc(Gaussian_I), colormap hot;E0 = Gaussian_I.*mask_hole;
E1 = func_translight.FFT_(lamda,E0,x_length,x_length,0.5);
figure,imagesc(abs(E1)), colormap hot;
Appendix Code
  • 圆孔掩膜产生函数,参看Matlab:产生“几何图形掩膜”函数
  • 高斯光产生函数,参看Matlab:实现高斯光束产生
  • 菲涅尔积分算法函数:参看Matlab:实现光场传输函数
仿真结果图:
  • 衍射前:
    在这里插入图片描述
  • 菲涅尔圆孔衍射光强图:
    在这里插入图片描述

专栏内容供作者本人或大家学习使用,多多指教 ~


http://www.ppmy.cn/news/781710.html

相关文章

【实时渲染】菲涅尔反射率

《Real Time Rendering 4th》9.5 章读书笔记 经典的折射和反射定律 光通过两个不同介质的界面的时候,会发生反射和折射现象。反射是指光从另一个路径离开界面,折射是指光通过界面进入了另一种介质中。其中满足条件: 反射角等于入射角折射角…

MATLAB:菲涅尔公式(反射/透射公式)

目录 案例1:光疏到光密介质 案例2:光密到光疏介质 案例1:光疏到光密介质 平面光波从空气(折射率为)入射到石英玻璃中(折射率为),用 MATLAB作出p、s分量的振幅反射率和振幅透射率以…

Fresnel(菲涅尔)

背景: 菲涅耳公式用来描述光在不同折射率的介质之间的行为。菲涅尔公式是光学中的重要公式,用它能解释反射光的强度、折射光的强度、相位与入射光的强度的关系。 1. 反射公式: fresnel fresnel基础值 fresnel缩放量*pow( 1 - dot( N, V ), 5 ) Code:菲涅尔反射 …

液晶屏的软硬屏之间的battle,谁更胜一筹?

平时所用到的液晶屏硬屏LCD,就是屏幕的像素是鱼鳞状,方向是朝左的,因为类似人字形,所以也俗称“人”。硬屏之所以硬,是因为在屏幕上按压触摸后不会出现水纹,要么是液晶屏加树脂保护膜,要么是硬屏…

​菲涅尔反射(Fresnel Reflection)​理论概要

离线渲染中,通常可以用kd,ks,kt(分别代表物体的漫反射系数,镜面反射系数,透射系数)来简单地描述一个物体的基本材质,例如,我们将一个物体设置为:kd0,ks0.1,kt0.9,即代表一束光击中该物体表面后,其中的90%发…

多焦点菲涅尔透镜

设计准备 所需工具 设计要求 设计一个多焦距 , n 1.5, r 50mm 的菲涅尔透镜。其中 n 是菲涅尔透镜的 折射率,r 是透镜的球冠半径。该菲涅尔透镜应使得目标面上形成一个亮环。 设计原理 边光原理 原理:若一个具有一定光展的光源发出的光线经过一个…

[Sensor] PIR 热释电效应 菲涅尔透镜

前言:作为一名嵌入式软件工程师,适当懂些硬件就行。但我就是“好高骛远”啊,对硬件的原理也充满了好奇。很多自然的原理被利用起来真的很神奇,就像我当前项目中正在使用的一款传感器——PIR,利用假期稍微做个了解&…

惠更斯-菲涅尔原理

惠更斯-菲涅尔原理 惠更斯原理 球形波面上的每一点(面源)都是一个次级球面波的子波源,子波的波速与频率等于初级波的波速和频率,此后每一时刻的子波波面的包络就是该时刻总的波动的波面。其核心思想是:介质中任一处的…