Matlab如何进行迈克尔逊干涉仪的光学动态仿真操作?

2026-05-16 13:201阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计675个文字,预计阅读时间需要3分钟。

Matlab如何进行迈克尔逊干涉仪的光学动态仿真操作?

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如何进行迈克尔逊干涉仪的光学动态仿真操作?

4 参考文献

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

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

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

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


本文共计675个文字,预计阅读时间需要3分钟。

Matlab如何进行迈克尔逊干涉仪的光学动态仿真操作?

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如何进行迈克尔逊干涉仪的光学动态仿真操作?

4 参考文献

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

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

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

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