当前位置: 首页 > news >正文

matlab实现杨氏双缝干涉实验可视化界面

关于杨氏双缝干涉实验的条纹光强理论推导和matlab绘图可以参考下面的链接:杨氏双缝干涉实验matlab实现

接下来利用GUI实现可视化界面。

一、GUI GUIDE简介

1、在命令行窗口输入小写的guide可以自动弹出fig窗口。
在这里插入图片描述
2、界面的左侧是常用的工具,鼠标悬停会弹出名称提示。只需要将工具拖入方格空间中,就能够实现相应的功能。

3、我们需要输入d、D、λ三个参数,光强 I 0 I_0 I0取默认值。因此,每一个参数的输入和接受需要一个 “Static Text” 组件用于显示标签,一个 “Edit Text” 组件用于接收输入。在接收参数之后,需要一个 “Push Button” 组件用于触发绘图操作。同时,我们需要绘制出条纹的强度变化曲线和干涉条纹图样,因此需要两个 “Axes” 组件,分别命名为 axes1 和 axes2。

在这里插入图片描述

4、在使用过程中,我们需要先输入三个参数,然后点击GO按钮,从而在AXES上输出对应的图象。因此,我们需要先调节static text显示的提示信息,然后确认edit text的参数信息,例如d对应的是edit1。
在这里插入图片描述
在这里插入图片描述

5、右键 “Push Button” 组件,打开回调函数编辑器,编写代码。此处的代码可以参考链接杨氏双缝干涉实验matlab实现,并根据需求作适当的修改。

在这里插入图片描述
在这里插入图片描述

二、实际效果

1、注意事项

(1)分辨率

在实际的操作中,我们还需要考虑分辨率的问题。因为分辨率决定了一个条纹间隔内,我们需要采样多少个点,从而决定了计算的矩阵的尺度大小。过于精确的采样会导致计算量庞大,使得模拟低效。

(2)条纹间隔

Δ x = D d λ \Delta x = \frac{D}{d} \lambda Δx=dDλ
表示两个相邻亮条纹(或者暗条纹)中心的间距。

它决定了我们需要在AXES框中绘制多大的横轴。一般来说,对称地选取7~9个条纹间隔即可说明问题。

2、核心代码


d = str2double(get(handles.edit1, 'String'));
D = str2double(get(handles.edit2, 'String'));
lambda = str2double(get(handles.edit3, 'String'));
fre = str2double(get(handles.edit4, 'String'));I0 = 1;delta_x = D * lambda / d;% 计算干涉强度变化
x = -(4*delta_x):(delta_x/fre):(4*delta_x);
Intensity1 = 4 * I0 * cos(pi * d * x / (lambda * D)) .* cos(pi * d * x / (lambda * D));% 绘制干涉条纹强度变化曲线
axes(handles.axes1);
plot(x, Intensity1);
xlabel('x/m');
ylabel('Intensity');
title('干涉条纹强度变化');% 计算干涉强度变化
x = -(4*delta_x):(delta_x/fre):(4*delta_x);
y = x;
[X, ~] = meshgrid(x, y);
Intensity2 = 4 * I0 * cos(pi * d * X / (lambda * D)) .* cos(pi * d * X / (lambda * D));% 绘制干涉条纹图像
axes(handles.axes2);
imagesc(x, y, Intensity2);
colormap('gray');
xlabel('x/m');
ylabel('y');
title('干涉条纹');
colorbar;
ylabel(colorbar, '光强');

3、效果展示

在这里插入图片描述
在这里插入图片描述
修改参数后:

在这里插入图片描述

其实在干涉条纹图样那里也可以把X/Y轴的label删除掉。

http://www.lryc.cn/news/177166.html

相关文章:

  • 【SQL】统一训练平台数据库实践--20230927
  • 全国职业技能大赛云计算赛项---Linux系统调优案例
  • Docker部署ZooKeeper分布式协调服务
  • 算法 出现次数超过一半的数字-(哈希+摩尔投票)
  • 如何搭建游戏平台?
  • 【华为OD机试python】数字反转打印【2023 B卷|100分】
  • MATLAB配置编译器(包括vs和mingw)
  • 基本网络协议
  • Tungsten Fabric Rabbitmq故障处理
  • sqlServer 检测慢 sql
  • Mac电脑音视频播放器: Infuse for Mac中文
  • 优化积分商城页面的8个实用技巧
  • Python机器学习实战-特征重要性分析方法(2):内置特征重要性(附源码和实现效果)
  • vue中v-for和v-if同时使用的解决办法
  • 【解决方法】树莓派4B安装wiringpi失败、gpio -v与gpio readall命令not found(arm64架构)
  • oracle 递归
  • SSM - Springboot - MyBatis-Plus 全栈体系(十三)
  • Python|OpenCV-访问并修改图片像素值,鉴别彩色和灰色图像(6)
  • 【Python基础】if __name__ == ‘__main__‘:和assert函数
  • 设计模式——1. 单例模式
  • 操作文档的用户故事怎么写,敏捷开发
  • 14.抽象工厂模式
  • 铁路用热轧钢轨
  • win11+wsl+git+cmake+x86gcc+armgcc+clangformat+vscode环境安装
  • HDLBits-Edgedetect
  • 云计算与大数据——部署Hadoop集群并运行MapReduce集群(超级详细!)
  • 基于jenkins+k8s实现devops
  • 一文了解企业如何实现文件自动化实时同步
  • 低代码系统哪里好
  • C#WPF通知更改公共类使用实例