当前位置 : 主页 > 编程语言 > python >

【光学】Matlab实现迈克尔逊干涉仪动态仿真

来源:互联网 收集:自由互联 发布时间:2022-09-02
1 内容介绍 从光的干涉理论出发,分析了迈克尔逊干涉实验原理和光程差表达式,利用Matlab改变参数对迈克尔逊干涉实验现象进行二维和三维仿真模拟,通过仿真提供了更加直观清晰的实验

1 内容介绍

从光的干涉理论出发,分析了迈克尔逊干涉实验原理和光程差表达式,利用Matlab改变参数对迈克尔逊干涉实验现象进行二维和三维仿真模拟,通过仿真提供了更加直观清晰的实验图像,这对于迈克尔逊干涉仪的实验教学起到很好的相辅作用.​

2 仿真代码

% 脚本用于绘制迈克尔逊等倾干涉光路图及干涉图像;

%



%% 绘制前处理

clear                                  %清除变量

clc;                                   %清空历史窗口中的内容

close all;                             %关闭所有图形窗口



%% 图像绘制

r_max=1;                               %最大半径(相对坐标)

[h1,h2,hT,R]=Michelson_Draw_1(r_max);  %绘制第一帧图像并得到句柄

theta_i=atan(R);                       %夹角

%pause                                 %暂停



for d=-5:0.05:5         

    e=2*d;

    DD=2*e*cos(theta_i);               %光程差

    I=cos(pi*DD).^2./(1+R.^2);         %相对光强

    set(h1,'YData',[20+d 20+d]);       %M1'位置

    set(hT,'Position',[10 20+d 0]);    %M1'文字标注

    set(h2,'CData',100*I)               %设置光强

    drawnow                            %更新屏幕

    if get(gcf,'CurrentCharacter')==char(27) 

        break,

    end                                % 按ESC键退出

%% 保存为gif文件:


gifname = 'Michelson_Draw_1.gif';     %建立一个gif文件

drawnow                               %图像实时更新

frame = getframe(1);                  %获取当前图像作为影片帧

im = frame2im(frame);                 %返回与影片帧关联的图像数据


[imind,cm] = rgb2ind(im,500);         %格式转换


if d == -5

imwrite(imind,cm,gifname,'gif');      %创建一个gif文件

else

imwrite(imind,cm,gifname,'gif','WriteMode','append','DelayTime',0.01);

                                      %向gif文件中添加一张图片

end                                   %结束循环


end

3 运行结果

【光学】Matlab实现迈克尔逊干涉仪动态仿真_光强

【光学】Matlab实现迈克尔逊干涉仪动态仿真_matlab代码_02

4 参考文献

[1]邹智星, 胡卫东, 王子涵,等. 基于MATLAB的迈克尔逊干涉仪干涉视频处理[J]. 西南师范大学学报:自然科学版, 2019, 44(7):5.

[2]冯明春, 王玉杰. 基于Matlab对迈克尔逊干涉实验仿真的分析研究[J]. 大学物理实验, 2021.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

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


网友评论