当前位置: 首页 > news >正文

【基于矢量射线的衍射积分 (VRBDI)】基于矢量射线的衍射积分 (VRBDI) 和仿真工具(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现及详细文章讲解


💥1 概述

  • 基于矢量射线的衍射积分(Vector Ray-Based Diffraction Integral,VRBDI)是一种用于模拟光的衍射现象的方法。它基于矢量射线追踪技术,通过对光波的传播路径进行追踪和积分,来计算衍射图样。VRBDI方法可以用于模拟各种衍射现象,包括光栅衍射、衍射光栅、衍射孔径等。

    VRBDI方法的基本思想是将光波看作是由许多矢量射线组成的,每条射线具有位置、方向和振幅等属性。通过追踪这些射线的传播路径,并根据衍射积分的原理进行积分计算,可以得到衍射图样的近似解。VRBDI方法可以考虑光的波动性和干涉效应,适用于模拟复杂的衍射现象。

    在VRBDI方法的实现中,通常需要借助计算机仿真工具来进行数值计算和模拟。一些常用的仿真工具包括:

    1. MATLAB:MATLAB是一种常用的科学计算和仿真工具,它提供了丰富的数值计算和图形绘制函数,可以用于实现VRBDI方法的数值计算和模拟。

    2. Zemax:Zemax是一种专业的光学设计和仿真软件,它提供了强大的光学建模和分析功能,包括衍射现象的模拟和分析。可以使用Zemax来实现VRBDI方法的仿真。

    3. VirtualLab:VirtualLab是一种专业的光学仿真软件,它提供了全面的光学建模和仿真功能,包括衍射、干涉、衍射光栅等现象的模拟和分析。可以使用VirtualLab来实现VRBDI方法的仿真。

    这些仿真工具都具有强大的功能和灵活的使用方式,可以根据具体的需求选择合适的工具进行VRBDI方法的实现和仿真。

  • 详细文章讲解见第4部分。

📚2 运行结果

 

 

本文一共分为五个部分,这里仅展现第一部分结果图。

 部分代码:

%Definitions (all lengths in mm, wavelength in nm)

lambda=532;     %Wavelength
w0=2.3;         %Gaussian waist radius
zw=-10000;      %Distance from waist (negative value => beam convergent)
z0=10;          %Distance from input plane to front lens apex
z1=1;           %Distance from rear lens apex to intermediary plane
n=Sellmeier(lambda,'AIR');  %Refractive index immersion medium

b1=15;          %Edge length of square-shaped input window
b2=15;          %Edge length of square-shaped intermediary window
b3=0.2;         %Edge length of square-shaped output window
Pix1=55;        %Pixels along one dimension of input window
Pix2=99;        %Pixels along one dimension of intermediary and output 
                %window

%Lens parameters THORLABS LBF254-050-A ####################################

RL1=30.06;      %Front curvature radius
RL2=-172;       %Back curvature radius
TL=6.5;         %Center thickness
fB=46.4;        %Back focal distance
ApL=12.7;       %Aperture radius
nL=Sellmeier(lambda,'N-BK7');

%Remaining distance after lens to focal region

z2=fB-z1;

%Definition of lens component and initialization of System ################

SL=AddSurf([0 0 0],RL1,ApL,n,nL,-1,1);      %Initialization surface list SL
SL=AddSurf([0 0 TL],RL2,ApL,nL,n,-1,1,SL);  %Appending surface to SL    
Lens=DefComp([0 0 z0],[0 0 0],SL);          %Definition of Lens
System=AddComp(Lens);                       %Initialization of System with
                                            %Lens

%Definition of detector component and addition to System ################## 

SL=AddDet([0 0 0],1e30,1e30,n,0);           %Detector size should be large
Det=DefComp([0 0 z0+TL+z1],[0 0 0],SL);     %to catch all remaining rays!
System=AddComp(Det,System);                 %Appending Detector to System

%Definition of spatial point grids ########################################

[X1,Y1]=meshgrid(-b1/2:b1/(Pix1-1):b1/2);
[X2,Y2]=meshgrid(-b2/2:b2/(Pix2-1):b2/2);
[X3,Y3]=meshgrid(-b3/2:b3/(Pix2-1):b3/2);

%Reshaping of input and output grids for VDI propagation ##################

P2=[X2(:) Y2(:) 0*X2(:)];
P3=[X3(:) Y3(:) 0*X3(:)+z2];

%Definition of tangent electric field components on input plane ###########

E1x=GaussianField(w0,zw,lambda,n,b1,Pix1);
E1y=zeros(Pix1);

%Get irradiance and other field components on input plane #################

[I1,E1z,H1x,H1y,H1z]=GetIrrad(E1x,E1y,lambda,n,b1,b1);

%Get plane wave spectrum from input field ################################

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1] B. Andreas, G. Mana, and C. Palmisano, "Vectorial ray-based diffraction integral," J. Opt. Soc. Am. A 32, 1403-1424 (2015).

[2]陈光炜, 陈光炜. 光学与光谱学实验指导[M]. 科学出版社, 2015.

[3]李大鹏, 李大鹏. 光学实验指导[M]. 高等教育出版社, 2017.

🌈4 Matlab代码实现及详细文章讲解

相关文章:

【基于矢量射线的衍射积分 (VRBDI)】基于矢量射线的衍射积分 (VRBDI) 和仿真工具(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

基于jackson对bean的序列号和反序列化

通过观察控制台输出的SQL发现页面传递过来的员工id的值和数据库中的id值不一致,这是怎么回事呢? 分页查询时服务端响应给页面的数据中id的值为19位数字,类型为long 页面中js处理long型数字只能精确到前16位,所以最终通过ajax请求提交给服务…...

排队理论简介

排队理论简介 1. 理论背景2. 研究的数学方法3. 拒绝型排队系统与等候型排队系统4. 拒绝型排队系统 本文参考文献为Вентцель Е. С.的《Исследование операций》。 1. 理论背景 排队理论又称大众服务理论,顾名思义指的是在有限的服务条…...

极速查找(3)-算法分析

篇前小言 本篇文章是对查找(2)的续讲二叉排序树 二叉排序树(Binary Search Tree,BST),又称为二叉查找树,是一种特殊的二叉树。性质: 左子树的节点值小于根节点的值,右…...

http 常见的响应状态码 ?

100——客户必须继续发出请求101——客户要求服务器根据请求转换HTTP协议版本200——交易成功201——提示知道新文件的URL202——接受和处理、但处理未完成203——返回信息不确定或不完整204——请求收到,但返回信息为空205——服务器完成了请求,用户代理…...

机器学习笔记之优化算法(四)线搜索方法(步长角度;非精确搜索)

机器学习笔记之优化算法——线搜索方法[步长角度,非精确搜索] 引言回顾:精确搜索步长及其弊端非精确搜索近似求解最优步长的条件反例论述 引言 上一节介绍了从精确搜索的步长角度观察了线搜索方法,本节将从非精确搜索的步长角度重新观察线搜…...

Redis 哨兵 (sentinel)

是什么 官网理论:https://redis.io/docs/management/sentinel/ 吹哨人巡查监控后台 master 主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库,继续对外服务。 作用:无人值守运维 哨兵的作用: 1…...

统计2021年10月每个退货率不大于0.5的商品各项指标

统计2021年10月每个退货率不大于0.5的商品各项指标_牛客题霸_牛客网s mysql(ifnull): select product_id, format(ifnull(sum(if_click)/nullif(count(*),0),0),3) as ctr, format(ifnull(sum(if_cart)/nullif(sum(if_click),0),0),3) as c…...

【小波尺度谱】从分段离散小波变换计算小波尺度谱研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

UE5、CesiumForUnreal加载无高度地形

文章目录 1.实现目标2.实现过程3.参考资料1.实现目标 在UE5中,CesiumForUnreal插件默认的地形都是带高度的,这里加载没有高度的地形,即大地高程为0,GIF动图如下: 2.实现过程 参考官方的教程,下载无高度的DEM,再切片加载到UE中。 (1)下载无高度地形DEM0。 在官方帖子…...

关于Spring中的@Configuration中的proxyBeanMethods属性

Configuration的proxyBeanMethods属性 在Configuration注解中,有两个属性: value配置Bean名称proxyBeanMethos,默认是true 这个proxyBeanMethods的默认属性是true。 直接说:当Configuration注解的proxyBeanMeathods属性是true…...

dp1,ACM暑期培训

D - 摆花 P1077 [NOIP2012 普及组] 摆花 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Description 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花&…...

大厂程序员的水平比非大厂高很多嘛?

最近一个月,筛选了一百多份简历,前前后后面试了二三十人,基本上都是有大厂经历的人。同时,也录用了几个有大厂经历的。但整体而言,打破了对大厂出来的都是优质人才的幻觉。看到的实际情况与想象中的落差还是比较大的。…...

Java开发工具MyEclipse发布v2023.1.2,今年第二个修复版!

MyEclipse一次性提供了巨量的Eclipse插件库,无需学习任何新的开发语言和工具,便可在一体化的IDE下进行Java EE、Web和PhoneGap移动应用的开发;强大的智能代码补齐功能,让企业开发化繁为简。 MyEclipse v2023.1.2官方正式版下载 …...

基于正交滤波器组的语音DPCM编解码算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...........................................................g0zeros(1,lenH); g1zeros(1,l…...

VS2022和QT混合编程打包发布程序

1.在开始菜单输入 CMD 找到 Qt5.15.2(MSVC 64-bit) 2.输入windeployqt exe所在路径 3.运行完毕后,双击打开exe文件,可能会报错,缺少相关的dll,找到缺少的dll拷贝到运行文件夹下即可。...

Filebeat学习笔记

Filebeat基本概念 简介 Filebeat是一种轻量级日志采集器,内置有多种模块(auditd、Apache、Nginx、System、MySQL等),针对常见格式的日志大大简化收集、解析和可视化过程,只需一条命令即可。之所以能实现这一点&#…...

【实战】 九、深入React 状态管理与Redux机制(一) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(十六)

文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…...

第九十五回 如何使用dio的转换器

文章目录 概念介绍使用方法使用默认的转换器自定义转换器 示例代码经验分享 我们在上一章回中介绍了"如何打造一个网络框架"相关的内容,本章回中将介绍 如何使用dio的转换器.闲话休提,让我们一起Talk Flutter吧。 概念介绍 转换器主要用来转…...

Python深度学习“四大名著”之一【赠书活动|第二期《Python机器学习:基于PyTorch和Scikit-Learn》】

近年来,机器学习方法凭借其理解海量数据和自主决策的能力,已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。自从AlexNet模型在2012年ImageNet大赛被提出以来,机器学习和深度学习迅猛发展,取…...

7.4.分块查找

一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色&#xf…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...