当前位置: 首页 > 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大赛被提出以来,机器学习和深度学习迅猛发展,取…...

BetterGI原神自动化工具:5分钟快速上手指南,解放你的游戏时间

BetterGI原神自动化工具:5分钟快速上手指南,解放你的游戏时间 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条…...

猫抓浏览器扩展:如何高效捕获并下载网页媒体资源的终极指南

猫抓浏览器扩展:如何高效捕获并下载网页媒体资源的终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今以流媒体为主导的互联…...

机器学习赋能软件工程:从缺陷预测到代码生成的实践指南

1. 项目概述与核心价值作为一名在软件工程领域摸爬滚打了十几年的老兵,我亲眼见证了从瀑布模型到敏捷开发,再到如今DevOps和AI驱动的开发范式的变迁。最近几年,一个最深刻的感受是:我们写的代码和构建的系统越来越复杂&#xff0c…...

Java并发工具类CountDownLatch与CyclicBarrier

前言 在现代软件开发中,Java并发工具类CountDownLatch与CyclicBarrier是一个非常重要的技术点。本文将从原理到实践,带你深入理解这一技术,并通过完整的代码示例帮助你快速掌握核心知识点。 核心概念 基本原理 Java并发工具类CountDownLatch与…...

保姆级避坑指南:在Ubuntu 20.04上搞定TensorRT 8.2.5.1和CUDA 11.3的版本匹配

深度解析Ubuntu 20.04下TensorRT 8.2.5与CUDA 11.3的兼容性实战在深度学习模型部署的实践中,TensorRT作为NVIDIA推出的高性能推理优化器,能够显著提升模型执行效率。然而,版本兼容性问题常常成为开发者面临的首要挑战。本文将聚焦Ubuntu 20.0…...

CSS Animations实战指南:打造流畅的用户体验

CSS Animations实战指南:打造流畅的用户体验 引言 CSS Animations是创建流畅动画效果的强大工具,无需JavaScript即可实现丰富的视觉效果。本文将深入探讨CSS动画的核心概念、实用技巧和最佳实践。 一、CSS动画基础 1.1 keyframes定义动画 keyframes slid…...

[智能体-29]:curl 命令完整详解

全称:Client URL,客户端 URL 请求工具跨系统内置命令行 HTTP 工具,无额外安装,用于网络请求、接口调试、数据收发。一、核心作用等价命令行版 requests,可访问网页、调用 API、下载文件、测试服务连通性,调…...

新手避坑指南:在Ubuntu 22.04上从零搭建Plexe-SUMO自动驾驶仿真环境

新手避坑指南:在Ubuntu 22.04上从零搭建Plexe-SUMO自动驾驶仿真环境自动驾驶仿真技术已成为学术界和工业界验证算法有效性的重要手段。对于刚接触该领域的研究者而言,环境搭建往往是第一个"拦路虎"。本文将手把手带你完成Plexe-SUMO环境的完整…...

81、CAN总线基础回顾:从诞生到经典架构

CAN总线基础回顾:从诞生到经典架构 去年冬天,我在调试一台农用机械的ECU通信时,遇到一个诡异现象:发动机转速数据偶尔跳变到65535,仪表盘直接显示“—”。用示波器抓波形,CAN_H和CAN_L的差分信号在总线空闲时居然有0.3V的直流偏置。排查了三天,最后发现是终端电阻焊盘虚…...

【MATLAB】工业控制参数多目标优化(GA/PSO)

【MATLAB】工业控制参数多目标优化(GA/PSO) 一、引言 工业控制系统的控制参数直接决定系统动态响应、稳态精度、抗干扰能力与运行稳定性,PID控制器、伺服调节器、过程闭环控制器等核心单元的参数整定是工业自动化领域的关键技术环节。传统人工试凑法、Z-N临界比例度法等参…...