MATLAB 夫琅禾费衍射仿真 GUI

MATLAB 夫琅禾费衍射仿真 GUI

矩孔衍射
圆孔
双缝
单缝

单缝_2D强度,点击3D即可切换到2D

基于MATLAB App Designer开发的交互式夫琅禾费衍射仿真工具,支持实时参数调节与多视图可视化。

主要功能

  • 四种衍射模式:
    • 🟦 矩形孔衍射(宽/高独立调节)
    • ⚪ 圆孔衍射(直径调节)
    • ░ 单缝衍射(缝宽调节)
    • ░░ 双缝衍射(缝宽/间距调节)
  • 动态参数控制:
    • 🌈 波长调节(300-800nm连续可调)
    • 📏 衍射距离(0-1000mm)
    • 🎚️ 孔径尺寸(0.001-8mm)
    • 🎯 孔径中心位置调节(X/Y方向)
  • 可视化功能:
    • 2D强度分布图(灰度映射)(点击3D即可切换到2D)
    • 3D强度曲面图(Jet色彩映射)
    • 实时坐标系同步更新

快速入门

环境要求

  • MATLAB R2020b 或更新版本
  • 必需工具箱:
    • MATLAB App Designer
    • Image Processing Toolbox(用于图像显示)

安装步骤

  1. 克隆仓库或下载.mlapp文件:
    git clone https://github.com/littleboy1218/Fraunhofer-diffraction.git
    
  2. 启动MATLAB并导航至项目目录

运行应用程序

  • 方法1:直接运行(推荐)

     >> appdesigner('main.mlapp');  % 在编辑器中打开
    
  • 方法2:编译运行(需安装MATLAB Compiler)

     >> app = mian.malpp;
     >> app.run();  % 直接启动独立应用
    

界面操作指南

面板区域功能说明
🔧 参数调节区(左)- 下拉菜单选择孔径类型
- 旋钮/滑块调节参数
📊 显示区(右)- 上:衍射图案二维显示
- 下:三维强度分布

典型操作流程

  1. 通过下拉菜单选择孔径类型
  2. 使用中央旋钮调节波长(635nm对应红光)(双击调节)
  3. 拖动右侧滑块调整孔径尺寸(双击调节)
  4. 观察衍射图案的实时变化
  5. 点击3D视图进行视角旋转(支持鼠标拖拽)

项目结构

Fraunhofer-Diffraction-Simulator/
├── Rectangular_5.mlapp       # 主应用程序文件
├── Resources/                # 图标资源
│   ├── aperture_icons/       # 孔径类型图标
│   └── preview_images/       # 示例图像
├── Documentation/            # 理论文档
│   ├── Fraunhofer_Theory.pdf # 衍射理论
│   └── User_Manual.pdf       # 详细使用手册
└── LICENSE                   # MIT许可证文件

开发扩展

核心算法

% 夫琅禾费衍射计算核心(部分代码)
function Fraunhofer(app)
    N = 300; % 固定采样点数
    lambda = app.Wave.Value*1e-6; % 单位转换(mm→m)
    
    % 生成坐标网格
    [X,Y] = meshgrid(linspace(-app.wide2/2, app.wide2/2, N));
    
    % 不同孔径类型的衍射计算
    switch app.flag
        case 1 % 矩形孔
            I = (sinc(app.Delta_x*X/(lambda*app.d)).^2) .* ...
                (sinc(app.Delta_y*Y/(lambda*app.d)).^2);
        case 2 % 单缝
            % ...(类似计算)...
    end
    
    % 归一化显示
    imagesc(app.UIAxes2, I/max(I(:)));
end

扩展建议

  1. 新增孔径类型

    • 修改DropDown.Items属性添加新选项
    • DropDownValueChanged回调中补充计算逻辑
  2. 添加数据导出

    % 在右侧面板添加按钮回调函数
    function exportButtonPushed(app, event)
        imwrite(getframe(app.UIAxes2).cdata, 'diffraction_pattern.png');
    end
    

常见问题

无法启动应用程序
✅ 确认:

  • 使用支持App Designer的MATLAB版本
  • Image Processing Toolbox已安装
  • 文件路径不含中文或特殊字符

3D视图显示异常
✅ 尝试:

app.UIAxes3.View = [30, 30];  % 重置视角
axis(app.UIAxes3, 'equal');   % 修复比例失真

贡献指南

欢迎通过以下方式参与改进:

  1. 提交Issue报告问题或建议
  2. Fork仓库并创建Pull Request
  3. 完善文档或添加测试案例

源代码

🌐 GitHub


📜 许可证
本项目采用 MIT License,允许自由使用、修改和分发,请保留原始版权声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Haclyon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值