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 运行结果
4 参考文献
[1]邹智星, 胡卫东, 王子涵,等. 基于MATLAB的迈克尔逊干涉仪干涉视频处理[J]. 西南师范大学学报:自然科学版, 2019, 44(7):5.
[2]冯明春, 王玉杰. 基于Matlab对迈克尔逊干涉实验仿真的分析研究[J]. 大学物理实验, 2021.