• 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, '光强');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    3、效果展示

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

    在这里插入图片描述

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

  • 相关阅读:
    禾匠商城系统 企业转账到零钱 修改成 商家转账到零钱
    MATLAB R2023b安装包下载链接
    董事长孙进任职资格获批,盛京银行坎坷向前
    网络安全(黑客)自学
    C++ std::future
    BUUCTF rip 1
    初识 My Batis一 什么是My Batis,JDBC缺点,My Batis简化,Mapper 代理开发,My Batis 核心配置文件
    1.6 IntelliJ IDEA开发工具
    阿里三年功能测试的一些感悟
    在nodejs中实现实时通信的几种方式
  • 原文地址:https://blog.csdn.net/qq_45485087/article/details/133324655