Python光学仿真理解Jones矩阵学习
作者:微小冷 发布时间:2022-03-10 21:11:39
标签:Python,光学仿真,Jones,矩阵
Jones向量
假设光波沿z轴传播,那么其三个方向的电场分量可以表示为
Jones矩阵
能够保证二维列向量形状不变的运算有无穷多种,但最符合我们直觉的一定是 2 × 2矩阵。好在这种矩阵已经可以提供足够多的运算,从而满足我们描述偏振变化的需求。
光在通过波片之后,会在不同方向产生差异性的相位延迟,对于与x轴角度为 Ψ,相位差为 Φ 的波片,其Jones矩阵为
Jones矩阵的表示
为了对Jones矩阵所对应的偏振状态进行绘制,我们需要进一步理解Jones矩阵中每个值所对应的物理概念。如果将Jones矩阵写成虚数形式,可以表示为
那么,对于任意Jones矩阵,我们可以很方便地绘制其对应的偏振图像。方便起见,我们只对1.064um光波在z轴方向传播5um这段距离进行采样,然后画出
def drawJones(J=[1,-2j]):
J = np.array(J).reshape(2,1)
# 设1.064um的光在z方向传播5um后,沿传播方向看去的振幅分布
z = np.arange(0,5,0.01)
k = 2*np.pi/1.064
# 将J改写成x和y方向的振幅序列
J = np.abs(J)*np.cos(k*z+np.angle(J))
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax1.plot(J[0],J[1])
ax2 = fig.add_subplot(122,projection='3d')
ax2.plot3D(z,J[0],J[1])
plt.show()
if __name__ == "__main__":
drawJones()
其图像为
现在光路中引入 λ / 4波片,令其旋转一周,观察一下线偏振光会有怎样的变化,设波片与x轴所成夹角为 Ψ,则其对应的Jones矩阵为
代码为
def drawQuaterPlate():
quater = lambda psi : np.array(
[[1-np.cos(2*psi),-1j*np.sin(2*psi)],
[-1j*np.sin(2*psi),1+np.cos(2*psi)]])
z = np.arange(0,5,0.01)
k = 2*np.pi/1.064
# 初始光波为x方向线偏振光
J0 = np.array([1,0]).reshape(2,1)
fig = plt.figure()
ax = fig.add_subplot(111,xlim=(-2,2),ylim=(-2,2))
ax.grid()
line, = ax.plot([],[],lw=0.2)
time_text = ax.text(0.1,0.9,'',transform=ax.transAxes)
thetas = np.linspace(0,np.pi*2,80)
def init():
line.set_data([],[])
time_text.set_text("")
return line, time_text
def animate(theta):
J = quater(theta)@J0 #经过波片后的Jones矩阵
arrJ = np.abs(J)*np.cos(k*z+np.angle(J)) #采样后的振幅
line.set_data(arrJ[0],arrJ[1])
time_text.set_text("angle:"+str(theta))
return line, time_text
ani = animation.FuncAnimation(fig, animate, thetas,
interval=100, init_func=init)
ani.save('polor.gif',writer='imagemagick')
plt.show()
最终得到偏振情况与波片角度的关系
可见,当角度合适的时候, λ / 4波片会将线偏振光变为圆偏振光。
以上就是Python光学仿真理解Jones矩阵学习的详细内容,更多关于Python光学仿真Jones矩阵的资料请关注脚本之家其它相关文章!
来源:https://blog.csdn.net/m0_37816922/article/details/109607941


猜你喜欢
- 使用TensorFlow的一个优势是,它可以维护操作状态和基于反向传播自动地更新模型变量。 TensorFlow通过计算图来更新变量和最小化
- 1.c#可以调用msyql的导入导出命令,但是需要先判断客户机是否安装了mysql,及其安装mysql的路径问题。2.查询mysql安装路径
- 本文实例讲述了golang简单位运算。分享给大家供大家参考,具体如下:// http://play.golang.org/p/idG7Ri_
- 问题描述使用 Navicat 导入之前转储好的 sql 文件,报错错误原因在信息日志当中往上翻,发现没有选择数据库,所以报错的原因就是没有提
- 锁分类:从对数据操作的粒度分 :表锁:操作时,会锁定整个表。行锁:操作时,会锁定当前操作行。从对数据操作的类型分:读锁(共享锁):针对同一份
- 用vue写业务代码时候,后端大神丢给我一堆数据,要求是做全选,反选功能,然后把用户更改的数据全部返回给他基本思路如果父级选中了,那么父级下面
- 1.查询表名: 代码如下:select table_name,tablespace_name,temporary from user_tab
- 现在我主要教大家如何去实战,做一个简易的知乎日报API 首先你要熟悉django的基本用法,会写模型,会写视图函数,会配置url。1.配置字
- 当我们使用 tensorflow 训练神经网络的时候,模型持久化对于我们的训练有很重要的作用。如果我们的神经网络比较复杂,训练数据比较多,那
- Python 模块安装一. 打开命令提示符win + R 输入 cmd 点击确定或者win + S 搜索输入 cmd二. 环境变量没有问题的
- 字符串 -- 不可改变的序列如同大多数高级编程语言一样,变长字符串是 Python 中的基本类型。Python 在“后台”分配内存以保存字符
- 前言:处理图片需要,需把图片都转换成1920*1280的大小, python实现很方便,需要导入图片处理的Image包和匹配的glob包,很
- 在开发过程中,收到这样一个问题反馈,在网站上传 100 MB 以上的文件经常失败,重试也要等老半天,这就难为需要上传大规格文件的用户了。那么
- Python自带的 functools 模块提供了一些常用的高阶函数,也就是用于处理其它函数的特殊函数。换言之,就是能使用该模块对可调用对象
- openCV是基于C++开发的一个强大的图像处理库。在用C++处理图像或视频时通常会使用到openCV这个库,但是这个库并非C++中的标准库
- 公司里很多部门,每个部门可以发多条信息,但每条信息只对应一个部门部门类:class Dep(models.Model): nam
- 多态问起面向对象的三大特性,几乎每个人都能对答如流:封装、继承、多态。今天我们就要来说一说 Python 中的多态。所谓多态:就是指一个类实
- Reflect对象是一个全局的普通的对象。Reflect的原型就是Object.我们首先来验证下 看看Reflect的原型是否是Object
- 在前面的文章中介绍了如何用Python读写Excel数据,今天再介绍一下如何用Python修改Excel数据。需要用到xlutils模块。下
- wxpython最为一款python GUI库,由于简单和轻便外加强大的功能而受到很多python爱好者的喜爱,pymysql作为pytho