【光学】基于Matlab模拟干涉条纹图

news2025/7/14 10:46:28

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机  电力系统

⛄ 内容介绍

为了提高光学课程教学效果,采用Matlab编程对光学现象进行模拟仿真.文中以等倾干涉为例,实现了对其干涉条纹和光强分布的模拟演示,实验结果表明:该方法直观形象地展示了光学过程,有利于学生更好地理解相关物理概念,为教学内容和教学手段提供了一条新思路.

⛄ 完整代码

%zernike

clear;

clc;

close all;

[x,y]=meshgrid(-1:0.01:1);

k=36;%多项式项数

Z=cell(1,36);

Z{1,1}=x;

Z{1,2}=y;

Z{1,3}=-1+2*(x.^2+y.^2);

Z{1,4}=x.^2-y.^2;

Z{1,5}=2*x.*y;

Z{1,6}=-2*y+3*x.*(x.^2+y.^2);

Z{1,7}=-2*y+3*y.*(x.^2+y.^2);

Z{1,8}=1-6*(x.^2+y.^2)+6*(x.^2+y.^2).^2;

Z{1,9}=x.^3-3*x.*y.^2;

Z{1,10}=3*x.^2.*y-y.^3;

Z{1,11}=-3*x.^2+3*y.^2+4*x.^4-4*y.^4;

Z{1,12}=-6*x.*y+8*x.*y*(x.^2+y.^2);

Z{1,13}=(10*(x.^2+y.^2).^2-12*(x.^2+y.^2)+3).*x;

Z{1,14}=(10*(x.^2+y.^2).^2-12*(x.^2+y.^2)+3).*y;

Z{1,15}=20*(x.^2+y.^2).^3-30*(x.^2+y.^2).^2+12*(x.^2+y.^2)-1;

Z{1,16}=x.^4-6*x.^2.*y.^2+y.^4;

Z{1,17}=4*x.^3.*y-4*x.*y.^3;

Z{1,18}=15*(x.^2+y.^2).^2.*x+20*(x.^2+y.^2).*x.^3+12*(x.^2+y.^2).*x-16*x.^3;

Z{1,19}=(5*(x.^2+y.^2)-4).*(3*x.^2.*y-y.^3);

Z{1,20}=(15*(x.^2+y.^2).^2-20*(x.^2+y.^2)+6).*(x.^2-y.^2);

Z{1,21}=(15*(x.^2+y.^2).^2-20*(x.^2+y.^2)+6).*(2*x.*y);

Z{1,22}=(35*(x.^2+y.^2).^3-60*(x.^2+y.^2).^2+30*(x.^2+y.^2)-4).*x;

Z{1,23}=(35*(x.^2+y.^2).^3-60*(x.^2+y.^2).^2+30*(x.^2+y.^2)-4).*y;

Z{1,24}=70*(x.^2+y.^2).^4-140*(x.^2+y.^2).^3+90*(x.^2+y.^2).^2-20*(x.^2+y.^2)+1;

Z{1,25}=5*x*(x.^2+y.^2).^2-20*x.^3.*(x.^2+y.^2)+16*x.^5;

Z{1,26}=-6*(x.^2+y.^2).*x.^2.*y+14*x.^4.*y-3*x.^2.*y.*(x.^2+y.^2)-2*x.^2.*y.^3+(x.^2+y.^2).*y.^3;

Z{1,27}=(6*(x.^2+y.^2)-5).*((x.^2+y.^2).^2-8*(x.^2+y.^2).*x.^2+8*x.^4);

Z{1,28}=(6*(x.^2+y.^2)-5).*(4*x.^3.*y-4*x.*y.^3);

Z{1,29}=(21*(x.^2+y.^2).^2-30.*(x.^2+y.^2)+10).*(-3*x*(x.^2+y.^2)+4*x.^3);

Z{1,30}=(21*(x.^2+y.^2).^2-30.*(x.^2+y.^2)+10).*(3*x.^2.*y-y.^3);

Z{1,31}=(56*(x.^2+y.^2).^3-105*(x.^2+y.^2).^2+60*(x.^2+y.^2)-10).*(x.^2-y.^2);

Z{1,32}=(56*(x.^2+y.^2).^3-105*(x.^2+y.^2).^2+60*(x.^2+y.^2)-10).*(2*x.*y);

Z{1,33}=(126*(x.^2+y.^2).^4-280*(x.^2+y.^2).^3+210*(x.^2+y.^2).^2-60*(x.^2+y.^2)+5).*x;

Z{1,34}=(126*(x.^2+y.^2).^4-280*(x.^2+y.^2).^3+210*(x.^2+y.^2).^2-60*(x.^2+y.^2)+5).*y;

Z{1,35}=252*(x.^2+y.^2).^5-630*(x.^2+y.^2).^4+560*(x.^2+y.^2).^3-210*(x.^2+y.^2).^2+30*(x.^2+y.^2)-1;

Z{1,36}=924*(x.^2+y.^2).^6-2772*(x.^2+y.^2).^5+3150*(x.^2+y.^2).^4-1680*(x.^2+y.^2).^3+420*(x.^2+y.^2).^2-42*(x.^2+y.^2)+1;

%单位圆内

mask=double((x.^2+y.^2)<=1);

for i=1:k

    Z{1,i}=Z{1,i}.*mask;

end

%显示泽尔尼克系数

for i=1:k

    subplot(6,6,i),imshow(Z{1,i},[]);

end

%a+(b-a)rand(m,n) ,[a,b]区间m,n维随机数生成

%计算相位P(x,y),ai根据论文取随机数

% 输出

num=100;%输出数量

for n=1:num

    for i=1:k %ai是泽尔尼克基函数的系数,根据论文给出的范围来定

      if i==1 %a1=0,P0=0 

        P=0;

      end

      if i==2||i==3 %ai 0,5

        P=5*rand(1)*Z{1,i}+P;

      end

      if i==4 %ai -5,5

        P=-5+10*rand(1)*Z{1,i}+P;

      end

      if i>=5&&i<=9 %ai -0.3,0.3

        P=-0.2+0.6*rand(1)*Z{1,i}+P;

      end

      if i>=10&&i<=36 %ai -0.03,0.03

        P=-0.03+0.006*rand(1)*Z{1,i}+P;

      end

    end

  P=pi*P.*mask;

  w=0.2+0.8*rand(1);%w是0.2,1上的随机数

  A0min=0.5/(1+w+2*sqrt(w));%A0范围下限

  A0max=0.95/(1+w+2*sqrt(w));%A0范围上限

  A0=A0min+(A0max-A0min)*rand(1);%生成振幅强度A0

  x0=-0.2+0.4*rand(201,201);

  y0=-0.2+0.4*rand(201,201);%x0,y0表示光点在x和y方向上的偏移,这两个方向都是在[0.2,0.2]范围内随机生成的

  derta=0.9+0.2*rand(1);%光束宽度0.9,1.1

  %激光源参考光强度

  Ir=A0*exp(-(((x-x0).^2+(y-y0).^2)/derta^2));%越靠中间(x-x0).^2+(y-y0).^2)越小,越亮

  % c=cos(P);%cos相位

  A=(w+1)*Ir;%背景光强

  B=2*sqrt(w)*Ir;%调制光强

  I=A+B.*cos(P);%条纹图

  I=I.*mask;

  name=num2str(n);

  I=imresize(I,[256,256]);

  imwrite(I,['.\fringes\',name,'.jpg']);

end

% figure(5),imshow(A,[]);

% figure(6),imshow(B,[]);

% figure(7),imshow(A+B.*cos(P),[]);

⛄ 运行结果

⛄ 参考文献

[1]杨艳丽, 郝蕴琦, 任玉芬,等. 基于MATLAB的光学干涉实验仿真[C]// 中国计算机用户协会网络应用分会2019年第二十三届网络新技术与应用年会. 0.

⛄ Matlab代码关注​

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/17782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亿级万物互联新时代的物联网消息中间件EMQX调研

简介 最近去某餐厅吃饭&#xff0c;进门时智能门自动打开房门同时来一句"欢迎光临"&#xff0c;然后伸手到门口的洗手台&#xff0c;水管无接触自动出水&#xff0c;端起菜盘走向台子选择自己喜欢的菜品&#xff0c;最后将菜盘放在智能结账机上&#xff0c;智能结账…

代码随想录算法训练营第三天|LeetCode 203.移除链表元素 、707.设计链表 、206.反转链表

LeetCode 203.移除链表元素 题目链接&#xff1a;203.移除链表元素 链表的定义&#xff1a; // 单链表 struct ListNode {int val; // 节点上存储的元素ListNode *next; // 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数 };ListNode(i…

数据结构实验教程-第一套

1&#xff0e;在平衡二叉树中插入一个结点后造成了不平衡&#xff0c;设最低的不平衡结点为A&#xff0c;并已知A的左孩子的平衡因子为1&#xff0c;右孩子的平衡因子为0&#xff0c;则应作_型调整以使其平衡。 A.LL B.LR C.RL D.RR答案为a&#xff0c;错选了c。 平衡因子 左子…

model.py篇

model.py篇 目录如下&#xff1a; 引言找LeNet5网络结构书写代码测试结果函数解释 引言 卷积主要用于特征的提取&#xff0c;而model.py则是为了从输入信息中筛选出我们需要的信息。 我们在阅读完论文后&#xff0c;对我们需要的模型进行搭建&#xff0c;下以LeNet5的model…

子域名访问计数(哈希表、字符串、索引)

力扣地址&#xff1a;力扣 网站域名 "discuss.leetcode.com" 由多个子域名组成。顶级域名为 "com" &#xff0c;二级域名为 "leetcode.com" &#xff0c;最低一级为 "discuss.leetcode.com" 。当访问域名 "discuss.leetcode.com&…

【Struts2】idea快速搭建struts2框架

文章目录什么是SSH框架&#xff1f;Struts2框架1、struts2的环境搭建1.1 创建web项目&#xff08;maven&#xff09;&#xff0c;导入struts2核心jar包1.2 配置web.xml&#xff08;过滤器&#xff09;&#xff0c;是struts2的入口&#xff0c;先进入1.3 创建核心配置文件struts…

力扣(LeetCode)13. 罗马数字转整数(C++)

模拟 罗马数字和掰手指数数的区别在于&#xff0c;IV/IXIV/IXIV/IX 这类倒着数数的&#xff0c;和阿拉伯数字最大的区别在于 555 的 10k10^k10k 倍 k∈Nk\isin Nk∈N &#xff0c;需要被表示出来。所以除了记录 I/X/C/MI/X/C/MI/X/C/M ——1/10/100/10001/10/100/10001/10/100…

五种IO模型

文章目录什么是IO操作系统的IO五种IO模型阻塞IO非阻塞IO多路转接IO(复用IO)信号驱动IO异步IO同步异步什么是IO IO,即input/output,IO模型即输入输出模型,而比较常见且听说的便是磁盘IO,网络IO. 按照冯诺依曼结构的来看,假设我们把运算器、控制器、存储器三个设备看做一个整体…

Kruskal算法求最小生成树

输入样例&#xff1a; 4 5 1 2 1 1 3 2 1 4 3 2 3 2 3 4 4输出样例&#xff1a; 6适用于稀疏图&#xff0c;快&#xff1b; 实现步骤&#xff1a; 1.将所有边将权重从小到大排序&#xff1b;sort&#xff1b;O&#xff08;mlogm&#xff09; 2.枚举每条边a,b&#xff1b;权…

RabbitMQ的 AMQP协议都是些什么内容呢

之前也讲述过关于 RabbitMQ 的相关内容&#xff0c;比如他们的配置&#xff0c;以及 RabbitMQ 整合 SpringBoot 使用&#xff0c;而且自己使用过之后&#xff0c;就会在自己的简历上面写上自己使用 RabbitMQ 实现了什么功能&#xff0c;但是这就会导致&#xff0c;有些面试官就…

QPainter、QPen 、QBrush(概念)

Qt中的三大绘画类&#xff1a; QPainter :进行绘画QPaintDevice :提供画图设备&#xff0c;是一个二维的抽象&#xff08;是所有可绘制对象的基类&#xff09;QPaintEngine :提供了画家用于绘制到不同类型的设备上的界面QPainter(画家) QPainter 提供高度优化的功能来完成 GUI …

Presto 聚合中groupBy分组的实现

一.前言 本文只要探索在Presto中groupby是怎么实现的。在Preso中&#xff0c;groupby的分组主要通过对数据Hash的数值比较进行分组&#xff0c;其中有2种情况&#xff0c;一直是仅有一个groupby字段而且字段是Bigint类型的&#xff0c;此场景下会使用BigintGroupByHash来实现分…

Spring boot使用ProGuard实现代码混淆

目录参考一、 ProGuard简介二、混淆配置要点三、快速开始方案一 配置文件新增proguard.cfg配置插件打包方案二 pom中定义配置参考 Spring boot使用ProGuard实现代码混淆 SpringBoot 玩一玩代码混淆&#xff0c;防止反编译代码泄露 代码混淆常见于安卓的apk安装文件, 服务端的…

11月千言最新评测推荐,覆盖中文对话、视频语义理解、可信AI等前沿方向

千言数据集是百度联合中国计算机学会、中国中文信息学会共同发起的数据共建计划&#xff0c;千言针对每个自然语言处理问题&#xff0c;均收集和整理多个开源数据集&#xff0c;进行统一的处理并提供统一的测评方式&#xff0c;帮助加速模型的研发。截至目前&#xff0c;千言评…

[附源码]java毕业设计上海景宏不锈钢厨房设备报修系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

云原生系列 【轻松入门容器基础操作】

✅作者简介&#xff1a; CSDN内容合伙人&#xff0c;全栈领域新星创作者&#xff0c;阿里云专家博主&#xff0c;华为云云 享专家博主&#xff0c;掘金后端评审团成员 &#x1f495;前言&#xff1a; 最近云原生领域热火朝天&#xff0c;那么云原生是什么&#xff1f;何为云原生…

数据分析 | Pandas 200道练习题 进阶篇(3)

文章目录DA21 大佬用户成就值比例DA22 牛客网用户最高的正确率DA23 统计牛客网用户的名字长度DA24 去掉信息不全的用户DA25 修补缺失的用户数据DA26 解决牛客网用户重复的数据总结&#xff1a;❤️ 作者简介&#xff1a;大家好我是小鱼干儿♛是一个热爱编程、热爱算法的大三学生…

生信步骤|MAFFT结合HMMER进行多序列比对和基于隐马模型的基因搜索

蛋白质都是由相似的小型结构域组成的。如果我们有若干个已知的蛋白序列&#xff0c;那我们就可以根据这些蛋白序列比较其含有的保守域&#xff0c;寻找在蛋白数据库中上是否也有一样保守域的蛋白。而后根据统计学模型&#xff0c;将显著性较高的蛋白序列预测为同一类基因家族蛋…

Oracle SQL执行计划操作(5)——分区相关操作

5. 分区相关操作 该类操作与SQL语句执行计划中分区表操作相关。根据不同的具体SQL语句及其他相关因素&#xff0c;如下各操作可能会出现于相关SQL语句的执行计划。 1&#xff09;PARTITION RANGE ALL 对范围分区&#xff08;RANGE PARTITION&#xff09;表的所有分区进行子…

内存泄漏检测C版小工具

一 内存泄漏简介 内存泄漏&#xff08;Memory Leak&#xff09;是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放&#xff0c;造成系统内存的浪费&#xff0c;导致程序运行速度减慢甚至系统崩溃等严重后果。 内存泄漏分类&#xff1a; 1.堆内存泄漏&#xff1…