MATLAB仿真光的衍射(七)

这篇具有很好参考价值的文章主要介绍了MATLAB仿真光的衍射(七)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 在光的干涉和衍射中,我们常见的例子都是基于已知的光强公式,像本专栏前几篇文章中提到的双缝干涉、单缝衍射、牛顿环等。

对于二维的光的衍射,在很多情况下难以写出具体的光强表达式,更不能用之前的方式表示出光强的分布,这时,我们可以选择运用傅里叶光学的计算方式,得到光经过衍射后的分布情况。

傅里叶光学的具体内容可以参考吕乃光《傅里叶光学》一书。

在matlab中,给出了对应的函数来解决仿真问题。

fft2()函数,进行二维的DFT运算,使用快速傅里叶变换算法返回矩阵的二维傅里叶变换,等同于计算:

%fft(fft(X).').'

如果输入的矩阵 X 是一个多维数组,fft2 将采用高于 2 的每个维度的二维变换。

另一个可能用到的函数是fftshift()(将零频分量移到频谱中心)

官方的解释为:此 MATLAB 函数 通过将零频分量移动到数组中心,重新排列傅里叶变换 X。

这是因为fft2()函数在计算时,常常将中心的索引位置放置在角落中,这样最大强度的放置位置不在中心,需要搭配fftshift()函数来调整。

我们可以在下面的仿真中看到这个过程。

这里举两个例子,分别仿真方形孔和圆孔的衍射,代码如下:

clear;
x = (-2:0.05:2);
y = (-2:0.05:2);
A = y.'*x;
i1 = 0;
for a = -2:0.05:2
    j1 = 0;
    i1 = i1+1;
    for b = -2:0.05:2
        j1 = j1+1;
        if abs(a) <= 0.1 & abs(b) <= 0.2
            A(i1,j1) = 1;
        else
            A(i1,j1) = 0;
        end
    end
end

subplot(1,2,1)
imshow(A)
title('方形孔径');
fft_v = abs(fft2(A));
fft_v = fftshift(fft_v);
subplot(1,2,2)
imshow(fft_v/max(max(fft_v)))
title('方形孔径的傅里叶变换')

结果:

matlab光学仿真,# MATLAB光学建模仿真,matlab,开发语言,线性代数

 当我们将fftshift()函数注释掉,观察发生的变化:

%fft_v = fftshift(fft_v);

结果: 

matlab光学仿真,# MATLAB光学建模仿真,matlab,开发语言,线性代数

可以看出,此时光强的最大值默认在角落。

对圆形孔径的仿真如下:

clear;
x = (-2:0.05:2);
y = (-2:0.05:2);
A = y.'*x;
i1 = 0;
for a = -2:0.05:2
    j1 = 0;
    i1 = i1+1;
    for b = -2:0.05:2
        j1 = j1+1;
        r = sqrt(a^2+b^2);
        if r <= 0.2
            A(i1,j1) = 1;
        else
            A(i1,j1) = 0;
        end
    end
end

 

subplot(1,2,1)
mesh(x,y,A);
xlabel('x')
ylabel('y')
zlabel('E')
title('圆形孔径');
fft_v = abs(fft2(A));
fft_v = fftshift(fft_v);
subplot(1,2,2)
mesh(x,y,fft_v);
title('圆形孔径的傅里叶变换')
xlabel('fx')
ylabel('fy')
zlabel('E')

结果:

matlab光学仿真,# MATLAB光学建模仿真,matlab,开发语言,线性代数

可以看出,运用傅里叶光学的计算方式,我们可以计算任意结构的傅里叶变换,并得到衍射结果。
整体的仿真步骤可以概括为以下几步:

首先,确定将要仿真的二维图形,并将他用0和1表示出来,其中1表示可以通光的部分;

其次,将对应矩阵输入fft2()函数,得到的结果输入fftshift()函数将强度的最大值置于中心;

最后,根据想要的图形(二维或三维,灰度图或彩色图)设置输出。

来源:《高等光学仿真——光波导、激光》文章来源地址https://www.toymoban.com/news/detail-720500.html

到了这里,关于MATLAB仿真光的衍射(七)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 独立逆变器系统MATLAB-simulink建模及仿真

             独立逆变器不同于并网逆变器,是一种将直流电转换为特定频率与幅值交流电的电力电子装置,一般作为EPS、UPS以及孤岛微电网系统的雏形装置。由于其负载的多样性导致独立逆变器必须具备快速适应负载变化的特性。本设计通过对独立逆变器系统传递函数分析并

    2023年04月08日
    浏览(31)
  • 车辆行驶控制运动学模型的matlab建模与仿真,仿真输出车辆动态行驶过程

    目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 基本假设 4.2 运动学方程 5.完整工程文件 车辆行驶控制运动学模型的matlab建模与仿真,仿真输出车辆动态行驶过程. 版本:MATLAB2022a        车辆运动学模型从几何学的角度研究车辆的运动规律。包括车辆的空

    2024年01月20日
    浏览(34)
  • 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Motion Planning),附几十种规

    2024年02月05日
    浏览(30)
  • 【数学建模】MM1排队系统仿真【含GUI Matlab源码 3616期】

    获取代码方式1: 完整代码已上传我的资源:【数学建模】基于matlab GUI MM1排队系统仿真【含Matlab源码 3616期】 点击上面蓝色字体,直接付费下载,即可。 获取代码方式2: 付费专栏数学建模(Matlab) 备注: 点击上面蓝色字体付费专栏数学建模(Matlab),扫描上面二维码,付

    2024年02月04日
    浏览(25)
  • 水下机器人双机械手系统动态建模与控制仿真(Matlab代码实现)

    ​       目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 水下机器人-机械手系统(Underwater vehicle-manipulator systems, UVMS)可以完成除观测之外的水下采样、抓取、操作等任务,在海洋科学考察、海洋工程等领域得到广泛应用。通过对近年来国内外UVMS的研究现状

    2024年02月08日
    浏览(36)
  • 单摆的动力学建模以及matlab仿真(牛顿法和拉格朗日方程法)

    有空再写 首先我们先确定广义坐标,并同时计算出来摆杆的转动惯量 接着列拉格朗日方程 计算动能(转动动能)  计算势能(取铰链处为零势能高度):  计算L 计算拉格朗日方程中的中间量   将上述的中间量带入拉格朗日方程,得到动力学模型: 变换一下形式:  当角

    2023年04月08日
    浏览(35)
  • MATLAB使用Simulink 进行建模与仿真方法 - Simulink基本操作与入门教程

    Simulink 是 MATLAB 很强大的功能组件,广泛用于系统建模、仿真和分析。下面分享给大家MATLAB使用Simulink 进行建模与仿真方法、步骤,希望能够帮助大家。 电脑 MATLAB及Simulink 组件 MATLAB使用Simulink 进行建模与仿真 1 我们打开MATLAB软件,然后在命令窗口中输入simulink或点击左上角的

    2024年02月05日
    浏览(37)
  • 基于MATLAB/Simulink的三相并网逆变器dq阻抗建模及扫频仿真

    本文主要介绍三相并网逆变器dq阻抗建模的相关知识,和大家分享一下怎么使用MATLAB/Simulink来进行理论模型的搭建以及如何通过扫频获取阻抗模型,一方面是给自己留点学习资料,也希望对大家能有所帮助。如果有什么问题或者错误,欢迎留言。 本文涉及的代码和模型就不提

    2024年02月11日
    浏览(90)
  • 《现代永磁同步电机控制原理及MATLAB仿真》第一章·三相永磁同步电机的数学建模

        目录——三相永磁同步电机的数学建模 Clark变换与仿真建模 Park变换与仿真建模 同步旋转坐标系下的数学建模 静止坐标系下的数学建模​编辑 Matlab自带三相PMSM的仿真模块设置     三相永磁同步电机是一个复杂的非线性系统,为了更好的设计先进的PMSM控制算法,因此需

    2024年02月04日
    浏览(32)
  • 【机器人1】基于POE公式的UR5机械臂正运动学建模求解与matlab仿真

    下一篇:【机器人2】基于POE公式的UR5机械臂逆运动学建模求解与matlab仿真 螺旋轴表示成:绕某个轴的转动与沿该轴的移动的复合。一种形式是 { q , s ^ , h } {boldsymbol{q}, boldsymbol{hat{s}}, h} { q , s ^ , h } : 其中, q ∈ R 3 boldsymbol{q} in mathbb{R}^{3} q ∈ R 3 为轴上任一点; s ^

    2024年02月06日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包