单模光纤二维模场分布的MATLAB仿真

news2025/1/15 20:50:08

在上一篇文章中,我们介绍了单模光纤的一维模场分布,能看出沿着径向的光场分布情况,并分析能量的分布

这一篇中,我们绘制光纤横截面上的二维光场分布:代码如下:

clear
close all
V = 2.4000;
U = 1.6453;
W = 1.7473;

Npoint = 21;
Rx = 2;
Ry = 2;
x = linspace(-Rx,Rx,Npoint);
y = linspace(-Ry,Ry,Npoint);
[X Y] = meshgrid(x,y);
R = sqrt(X.^2+Y.^2);

E1 = besselj(0,U*R);
E2 = besselj(0,U).*besselk(0,W.*R)./besselk(0,W);
E = E1;
pos = find(R >= 1);
E(pos) = E2(pos);

imagesc(x,y,E)
colormap(gray),colorbar
xlabel('x')
xlabel('y')
title('E')

figure
[C, h]=contour(x,y,E);
colorbar;
axis equal
xlabel('x')
xlabel('y')
title('E')

figure 
[px,py] = gradient(E)
contour(X,Y,E)
hold on
quiver(X,Y,px,py)
hold off
axis equal
meshgrid函数产生网格,可以用一下代码来观察:
x = 1:3;
y = 1:5;
[X,Y] = meshgrid(x,y)

对应的输出结果如下:

 这里我们绘制的灰度图,可以将对应的语句注释掉:

%colormap(gray)

转换为彩色图形

从图中可以看出,纤芯部分的光强最强,整体成圆对称分布;

图三的箭头很好的说明了这一点;

注意这里的箭头不代表光强降低,反而代表光强增加

这是由箭头绘制时,梯度函数gradient的结果决定的

如果想要得到通常意义上的梯度图(沿着光强降低的方向绘制箭头),可以使用:

quiver(X,Y,-px,-py)

结果:

 可以看出,同一位置的数字两两对应组成了整个矩阵的位置坐标

find函数找出坐标R比1大的数值,返回对应的数组序号。

本身它的输入参数应当是一个数组,返回数组中每个非零元素的线性索引向量

不过,我们通过R>=1得到一个数组,这相当于进行了数组的逻辑运算,我们可以用下列代码来观察:

R >= 1

注意命令行中的输出矩阵,由0和1组成,可以代表该位置的R是否大于1

imagesc函数用于绘制图像,生成像素网络

具体可以参考《MATLAB基础操作》专栏的二维绘图和三维绘图介绍

这个函数在每一个位置(矩阵)输出一个颜色,颜色的选择根据矩阵在该位置的数值决定。

contour函数绘制等高线图,这里没有打开等高线的标签,可以通过一下语句打开

set(h,'ShowText','on','TextStep',get(h,'LevelStep'))

在每一条等高线上增加“高度”。

输出结果如下:

gradient函数 F 的一维数值梯度。输出 FX 对应于 ∂F/∂x,即 x(水平)方向上的差分。点之间的间距假定为 1。

同理Fy对应于y方向上的差分

quiver函数在由 X 和 Y 指定的笛卡尔坐标上绘制具有定向分量 U 和 V 的箭头。例如,第一个箭头源于点 X(1) 和 Y(1),按 U(1) 水平延伸,按 V(1) 垂直延伸。默认情况下,quiver 函数缩放箭头长度,使其不重叠。

 来源《MATLAB高等光学仿真——光波导、激光》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/557665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C4D R26 渲染学习笔记(1):C4D版本选择和基础知识(更新中)

C4D版本知识 C4D通过R来进行版本区分,现在2023年5月22日最新版的是R26。说一下特殊版本。 C4D版本介绍特点R19OC快乐版3.07最高版本,OC是C4D最具性价比的渲染器,OC学习成本低,渲染速度快,但是注意OC 3.07只支持10系N…

如何提取微信公众号的链接?非常简单!

今天在公众号里面想要复制公众号链接,用于小程序里面引导用户关注,因为小程序里面的关注公众号只能是扫码小程序才能使用,想起以前使用的原始链接跳转方法,就想试一试,结果公众号后台居然没有链接可以复制了&#xff0…

代码随想录算法训练营day49 | 121. 买卖股票的最佳时机,122.买卖股票的最佳时机II

代码随想录算法训练营day49 | 121. 买卖股票的最佳时机,122.买卖股票的最佳时机II 121. 买卖股票的最佳时机解法一:动态规划解法二:贪心算法 122.买卖股票的最佳时机II解法一:动态规划解法二:贪心算法 121. 买卖股票的…

数据要素流通使用的安全风险分析及应对策略

数据要素流通使用的安全风险分析及应对策略 刘业政1,2, 宗兰芳1, 金斗1,袁昆1,2 1 合肥工业大学管理学院,安徽 合肥 230009 2 大数据流通与交易技术国家工程实验室,上海 201203 摘要:系统地分析了数据要素流通使用过程中存在的安全…

直播预告 | 医疗人工智能入行经验分享

(本文阅读时间:2 分钟) 或许大家从不同程度上听说或使用过智能导诊机器人、语音电子病历或是智能问诊?这些高端大气又便利的产物都是人工智能在医疗健康领域的重要应用场景产品及服务。 “AI医疗”是人工智能技术赋能医疗健康产业…

综述 | 基于 Transformer 网络的多模态学习

关注公众号,发现CV技术之美 Transformer 网络结构作为一种性能卓越的神经网络学习器,已经在各类机器学习问题中取得了巨大的成功。伴随着近年来多模态应用和多模态大数据的蓬勃发展,基于Transformer 网络的多模态学习已经成为了人工智能领域的…

chatgpt赋能Python-python_for_loop

Python For Loop: 了解循环结构控制的重要性 在Python编程中,循环结构控制是必备技能之一。它允许程序员重复执行指定的代码块,而不需要手动多次输入。Python提供了几种类型的循环结构,其中for循环是最常用的之一。我们将在本文中讨论for循环…

( 回溯算法) 332. 重新安排行程 ——【Leetcode每日一题】

❓332. 重新安排行程 难度:困难 给你一份航线列表 tickets ,其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生&#xf…

【泛微ecology_oracle】如何把查询到的单列人力资源id合并成多人力资源格式

如何把查询到的单列人力资源id合并成多人力资源格式 在泛微ecology中,单列人力资源id合并成多人力资源的使用场景在泛微ecology中,在数据库里人员姓名存储形式那如何实现人力资源字段合并多人力资源字段呢? 在泛微ecology中,单列人…

Node.js博客项目开发思路笔记

博客项目介绍 1. 目标 开发一个博客系统,具备博客基本功能只开发 server 端,不关心前端 2. 需求 首页、作者页、博客详情页登陆页管理中心、新建页、编辑页 3. 技术方案 数据如何存储 博客 idtitlecontentcreatetimeauthor1标题 1内容 11111112z…

Vue购物车实例练习

功能介绍 金额 单价 * 数量金额会自动根据数量的变化进行变化,我们可以点击按钮增加或减少商品的数量。合计金额:只有在序号列号勾选上才会被计入总金额中,金额总数会根据用户的操作自动更新数据。删除:如图我们勾选了第2个商品&…

【开源项目】Easy-Trans数据翻译服务的快速入门及原理解析

项目介绍 easy-trans是一款用于做数据翻译的代码辅助插件&#xff0c;利用mybatis plus/jpa/beetsql 等ORM框架的能力自动查表&#xff0c;让开发者可以快速的把id/字典码 翻译为前端需要展示的数据。 快速入门 maven依赖 <properties> <fhs.release.version>2.…

痞子衡嵌入式:MCUBootUtility v5.0发布,初步支持i.MXRT1180

--   痞子衡维护的NXP-MCUBootUtility工具距离上一个大版本(v4.0.0)发布过去4个多月了&#xff0c;期间痞子衡也做过两个小版本更新&#xff0c;但不足以单独介绍。这一次痞子衡为大家带来了全新大版本v5.0.0&#xff0c;这次更新主要是想和大家特别聊聊恩智浦新一代 i.MXRT …

一个传统剧团的自救

今天我和大家分享一个 最近我在网上看到的案例。 是这样说的 在岭南地区 有一个较为偏远的地方 当地有一个传统的戏团 他们依托当地传统习俗 把戏曲一代一代流传下来 但是到了现在。 戏团面临传承中断 戏团解散的困境。 当地文化宣传员小林 知道这个情况后。 立马展开调查 并且…

Linux——gcc/g++编译器

gcc是用来编译C语言代码的编译器&#xff0c;而g是用来编译C代码的编译器的。 而gcc和g都是软件&#xff0c;需要使用yum进行下载 注&#xff1a;需要使用root权限才能下载 在C语言编译的过程中&#xff0c;会有四个过程: 1预处理&#xff0c;2编译&#xff0c;3汇编&#xf…

CB06551 PRD-B040SSIB-63

​ CB06551 PRD-B040SSIB-63 步进电机驱动器有什么参数   步进电机驱动器基本参数如下&#xff1a; a、供电电源&#xff0c;可据所驱动步进电机的电源规格进行选择。交流电源供电的&#xff0c;如AC80V&#xff0c;可用220V市电经降压变压器&#xff0c;提供给驱动器。选用变…

YOLO-NAS 如何将 YOLO-v8 甩在身后?

在使用目标检测模型方面&#xff0c;我已经积累了一些经验。所以当我听说这个火热的新玩意儿叫做 YOLO-NAS 时&#xff0c;我知道我必须去尝试一下。让我告诉你&#xff0c;这个家伙真是让人惊叹。它就像是目标检测模型中的埃隆马斯克——大胆、创新&#xff0c;稍微有点让人害…

关于我被敲诈勒索骗了 1w 多这件事

大家好&#xff0c;我是程序员贺同学。 昨晚遭遇了人生中第一次诈骗&#xff0c;损失金额 1w多&#xff0c;趁这两天情绪缓了缓&#xff0c;把过程记录了下来&#xff0c;希望对看到的人有所帮助。 昨晚报完警回来快 23 点&#xff0c;把手机上的重要图片&#xff0c;视频&…

嵌入式 QT多界面切换

目录 1. 添加界面类实现 1.1 添加第二个界面的类 1.2 添加第2个界面的头文件和槽函数 2. 工程管理实现 在Qt中&#xff0c;多界面切换是指在一个应用程序中使用多个不同的界面&#xff0c;并在它们之间进行切换。这种切换可以是用户触发的&#xff0c;例如点击按钮或选择菜…

建议收藏,最全ChatGPT 中文调教指南:提供各个领域的角色提示词(prompts)及使用技巧,当然也有不正经指南

ChatGPT是一种基于GPT&#xff08;Generative Pre-trained Transformer&#xff09;模型的聊天机器人&#xff0c;能够回答用户提出的问题和进行对话。它是由OpenAI开发的人工智能产品&#xff0c;具有自然语言处理和深度学习技术。 ChatGPT在日常的对话中&#xff0c;表现的非…