首页 > 其他分享 >Matlab:实现夫琅禾费圆孔衍射仿真

Matlab:实现夫琅禾费圆孔衍射仿真

时间:2024-09-14 10:54:34浏览次数:10  
标签:禾费 圆孔 夫琅 jinc 衍射 Matlab 计算 lambda

绘图结果

原理

%% 夫琅禾费衍射例子——经过圆孔
clc;             % 清除命令行窗口
clear all;       % 清除工作区中的所有变量
close all;       % 关闭所有打开的图形窗口

% 参数设置
L = 0.2;         % 计算区域的物理尺寸 (m)
N = 200;         % 网格点的数量
dx = L / N;      % 网格的空间分辨率
x = linspace(-L/2, L/2, N); % x方向的坐标
y = x;                      % y方向的坐标,与x相同
[X, Y] = meshgrid(x, y);    % 创建二维网格坐标,用于计算

% 圆孔参数和波长设置
w = 1e-3;            % 圆孔的半径 (m)
lambda = 632.8e-9;   % 光波的波长 (m),红光
z = 50;              % 圆孔到屏幕的距离 (m)
k = 2 * pi / lambda; % 波数,k = 2π/λ
lz = lambda * z;     % λz,用于后续计算

% 圆孔处的波场计算
XY = X.^2 + Y.^2; % 计算 x^2 + y^2,用于定义网格上每一点到圆心的距离的平方
U1 = w^2 .* (jinc(w/lz * sqrt(XY))); % 圆孔衍射后的初始场分布,利用jinc函数

% 夫琅禾费衍射公式的实现
H = exp(1i * k * z) / (1i * lambda * z) .* exp(1i * k * (XY) / (2 * z)); % 衍射传递函数
U2 = U1 .* H; % 圆孔后场的远场表示

% 计算光强分布
I2 = (U1 ./ lz).^2; % 计算光场的强度分布

% 绘制结果
figure('color','w') % 创建一个白色背景的图形窗口
subplot(1,2,1);
imagesc(x, y, nthroot(I2, 3)); % 绘制光强分布图,使用三次方根拉伸颜色显示以增强对比度
colormap('gray') % 使用灰度色表
xlabel('x(m)');  % 设置x轴标签
ylabel('y(m)');  % 设置y轴标签
axis square;     % 使用方形轴
axis xy;         % 保持x-y坐标系的方向
title('通过小孔的夫琅禾费衍射');

subplot(1,2,2);
plot(x,I2(N/2,:));  % x 轴上的某一行的光强分布
% plot(y,I2(:,N/2)); % y 轴上的某一列的光强分布
xlabel('x(m)');   % 设置x轴标签
ylabel('光强度(W/m^2)'); % 设置y轴标签
title('x轴轮廓');
axis square;      % 使用方形轴

% 定义jinc函数
function [out] = jinc(x)
    % 计算 jinc 函数的值,jinc(x) = J1(2πx)/x
    mask = (x ~= 0);          % 找到 x 中所有不等于 0 的元素的位置
    out = pi * ones(size(x)); % 初始化输出为 π
    out(mask) = besselj(1, 2 * pi * x(mask)) ./ x(mask); % 对 x 不为 0 的位置计算 jinc 函数值
end

标签:禾费,圆孔,夫琅,jinc,衍射,Matlab,计算,lambda
From: https://blog.csdn.net/weixin_46682376/article/details/142216283

相关文章

  • MATLAB:rect 矩形函数
    rect函数functiony=rect(x)%初始化输出数组y,大小与输入x相同,初始值为0%当|x|<=0.5时,函数值为1;否则为0。y=zeros(size(x));y(abs(x)<=0.5)=1;end示例:%定义时间向量,范围从-1到1,步长为0.01t=-1:0.01:1;%调用rect函数计算矩形脉冲的值y=rect(......
  • 基于MATLAB蚁群算法优化的小波变换图像压缩
    随着计算机技术和网络速度的飞速发展,数字图像越来越成为人们生活中不可或缺的一部分,然而由于存储和传输的限制,如何对数字图像进行高效压缩成为了研究的热点问题,小波变换作为一种基于多尺度分析的信号处理方法,在数字图像压缩中有着广泛的应用。然而传统的小波变换图像压缩方法......
  • matlab基础之脚本与函数
    脚本与函数MATLAB命令的两种执行方式:交互式命令执行方式程序执行要充分利用MATLAB数据结构的特点(矩阵运算、矢量化编程),充分利用MATLAB自带的函数M文件:是一个文本文件,拓展名为.m可以用任何编辑程序来建立和编辑,默认matlabM文件就是将处理问题的各种命令融合到一个文件中......
  • 【MATLAB版】代码中输入所需数学公式,代码自行运行计算出结果
    在MATLAB中,可以使用符号计算工具箱(SymbolicMathToolbox)来输入和处理复杂的公式。可以定义符号变量并使用它们来表示数学表达式,然后进行符号运算、简化、求解方程、微积分运算等。具体步骤如下:1、加载符号工具箱并定义符号变量要进行复杂公式的符号计算,首先需要定义符号变......
  • 【逐行注释】自适应Q的AUKF|MATLAB代码|无需下载,可直接复制到MATLAB上面运行
    文章目录自适应UKF逐行注释的说明运行结果完整代码各模块解释自适应UKF自适应无迹卡尔曼滤波(AdaptiveUnscentedKalmanFilter,AUKF)是一种用于状态估计的滤波算法。它是基于无迹卡尔曼滤波(UnscentedKalmanFilter,UKF)的改进算法。自适应无迹卡尔曼滤波在无迹......
  • 小众创新组合!LightGBM+BO-Transformer-LSTM多变量回归交通流量预测(Matlab)
    小众创新组合!LightGBM+BO-Transformer-LSTM多变量回归交通流量预测(Matlab)目录小众创新组合!LightGBM+BO-Transformer-LSTM多变量回归交通流量预测(Matlab)效果一览基本介绍程序设计参考资料效果一览基本介绍1.Matlab实现LightGBM+BO-Transformer-LSTM......
  • 基于matlab的黄金搜索法【开源/可直接复制粘贴】
    黄金搜索法是一种无须函数导数的数值优化方法。它基于黄金分割比例来选择新的搜索区间,以逐步缩小搜索范围并逼近极值点。在每次迭代中,算法会根据当前搜索区间的长度和黄金分割比例来计算两个新的点,并在这两个点处评估函数值。然后,根据这两个点的函数值比较结果,选择包含更优解(......
  • 【使用 3D FDTD 代码和 UPML 进行微带分支线耦合器分析】三维有限差分时域方法在平面
       ......
  • 【使用UPML的3D FDTD代码进行微带低通滤波器分析】应用三维有限差分时域法分析平面微
       ......
  • MATLAB新能源车牌识别系统
    MATLAB新能源车牌识别系统是一种利用MATLAB软件开发的自动识别新能源车辆车牌的系统。该系统通过图像处理和模式识别技术,能够从摄像头或者图片中准确地提取新能源车辆车牌的信息。该系统的工作流程如下:图像获取:通过摄像头或者从文件中获取图像数据。图像预处理:对获取的图......