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
0
投稿
猜你喜欢
- Go 中接口也是一个使用得非常频繁的特性,好的软件设计往往离不开接口的使用,比如依赖倒置原则(通过抽象出接口,分离了具体实现与实际使用的耦合
- Python的绘图库也允许用户创建优雅的图形,本章给大家介绍的是关于ggplot绘制画图的技巧,ggplot2建立在grid系统上,这个系统
- 本文程序针对Python选课系统进行开发,供大家参考,具体内容如下角色:学校、学员、课程、讲师要求:1. 创建北京、上海 2 所学校2. 创
- 如何用OdbcRegTool组件来创建一个数据源?OdbcRegTool是一个免费组件,在服务器上安装后,就可以来创建一个数据源:<h
- 我的同事Fara给大家介绍了戴尔网站首页的改版设计,这里我还想和大家介绍一下戴尔是如何从网站用户使用体验的角度进行设计,让大家进一步了解戴尔
- 本文实例讲述了php遍历CSV类。分享给大家供大家参考。具体如下:<?phpclass CSVIterator implements
- 1. 用SimpleITK读取dicom序列:import SimpleITK as sitkimport numpy as npimg_p
- 1. 在 Python 中 XML 文件的编码问题1.Python 使用的xml.etree.ElementTree库只支持解析和生成标准的
- 转换为字符串类型tips['sex_str'] = tips['sex'].astype(str)转换为数值
- 效果: 思路:利用onmousemove事件,然后获取鼠标的坐标,之后把DIV挨个遍历,最后把鼠标的坐标赋给DIV。代码:<
- 在cssrain整理的一个 试题集 中有这么一道题:<SCRIPT LANGUAGE="JavaScript"&g
- 动机: 查询功能是我们在网站上见过的最普遍也是最常用的一个功能模块了。以往的信息查询都是连接到数据库的,每一次点击都必须要后台数据库的支持。
- 简单使用最开始,我们用最短的代码体验一下logging的基本功能。import logginglogger = logging.getLog
- 为什么要修改镜像源?一般使用python安装库,会用到pip install xxx 指令或者conda install xxx指令,因为p
- 以下公共方法支持列表,元组,字典,字符串。内置函数Python 包含了以下内置函数:函数描述备注len(item)计算容器中元素个数del(
- 不论是企业网站、个人博客,或者购物网站、游戏网站,我们都希望能吸引访问者并且给他们留下愉快的访问体验。可用性是用户体验的一种度量,它可以用访
- 小毅的blog:http://andymao.com/andy/注:本文实例在IE5.x下可能会显示不出来,请使用IE6、IE7、Firef
- 在使用matplotlib模块时画坐标图时,往往需要对坐标轴设置很多参数,这些参数包括横纵坐标轴范围、坐标轴刻度大小、坐标轴名称等 在mat
- 比如说在1-3000之内生成随机永不重复数,点击运行代码的时候请注意,此代码比较占用资源,如果硬件配置比较菜请把count改小。俺的电脑配置
- table估计每个跟web打过交道的人都会经常接触到,跟js结合能做出很多不错的体验。这里打算结合js做一个系列,包括一些操作和效果,虽然现