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


    ✅作者简介:热爱科研的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电子书和数学建模资料

     

  • 相关阅读:
    网络安全——基于联合查询的字符型GET注入
    C++学习笔记(十八)
    学习springboot杂乱无章的笔记
    Linux系统设置防火墙
    Vue中设置背景图片和透明度
    Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (二)
    植物大战僵尸植物表(二)
    Camera2开发基础知识篇——手机影像参数
    如何利用PowerShell完成的Windows服务器系统安全加固实践和基线检测
    数据分析实战 | 关联规则分析——购物车分析
  • 原文地址:https://blog.csdn.net/qq_59747472/article/details/127933285