使用Mueller矩阵对光进行偏振

时间:2018-07-18 02:03:25

标签: python matrix

我想问一下穆勒矩阵运算和斯托克斯参数。 给定Mueller矩阵:

enter image description here

灯光状态的输入为:

enter image description here

最后,通过半波片产生光输出的操作:

enter image description here

我进行了计算之后,θx= 0°的S_out为[1 1 0 0],这意味着光是水平偏振的。但是,当θx= 45°时,我没有得到维基百科所述的垂直光偏振[1 -1 0 0]:

enter image description here

这是我产生结果的python代码:

y=0
M_HWP=np.matrix([[1, 0, 0, 0], [0, math.cos(4*y), math.sin(4*y), 0], [0, 
      math.sin(4*y), -(math.cos(4*y)), 0], [0, 0, 0, -1]])
z=45
M_HWP2=np.matrix([[1, 0, 0, 0], [0, math.cos(4*z), math.sin(4*z), 0], [0, 
      math.sin(4*z), -(math.cos(4*z)), 0], [0, 0, 0, -1]])

S_in=np.matrix('1 ;1 ;0 ;0')
print ("S_in\n",S_in)

Zerodeg=M_HWP*S_in
print("Horizontal polarized \n",Zerodeg)
fourtyfivedeg=np.rint(M_HWP2*S_in)
print("Vertically polarized \n",fourtyfivedeg)

这是我使用Python编程语言进行计算的结果:

enter image description here

看来我的垂直光偏振是错误的。我希望任何人都可以帮助我澄清这个问题。 非常感谢和问候。

1 个答案:

答案 0 :(得分:1)

math.sin()math.cos()使用弧度而不是度数,因此应首先转换角度:

y=math.radians(0)
M_HWP=np.matrix([[1, 0, 0, 0], [0, math.cos(4*y), math.sin(4*y), 0], [0,
      math.sin(4*y), -(math.cos(4*y)), 0], [0, 0, 0, -1]])
z=math.radians(45)
M_HWP2=np.matrix([[1, 0, 0, 0], [0, math.cos(4*z), math.sin(4*z), 0], [0,
      math.sin(4*z), -(math.cos(4*z)), 0], [0, 0, 0, -1]])

S_in=np.matrix('1 ;1 ;0 ;0')
print ("S_in\n",S_in)

Zerodeg=M_HWP*S_in
print("Horizontal polarized \n",Zerodeg)
fourtyfivedeg=np.rint(M_HWP2*S_in)
print("Vertically polarized \n",fourtyfivedeg)

如果您愿意,我还会建议一些不同的实现方式

 import numpy as np
 import math

def polar(I,angle):
    M = np.array([
        [1,0,0,0],
        [0,math.cos(4*math.radians(angle)),math.sin(4*math.radians(angle)),0],
        [0, math.sin(4 * math.radians(angle)), -math.cos(4 * math.radians(angle)), 0],
        [0,0,0,-1]
    ])

    return np.matmul(M,I)

I = [[1.0],[1.0],[0.0],[0.0]]

print(polar(I,0))
print(polar(I,45))

输出:

  

[[1。] [1.] [0.] [0。]]

     

[[1.0000000e + 00] [-1.0000000e + 00] [1.2246468e-16] [   0.0000000e + 00]]

您可以看到1.2246468e-16,因为它是从度到弧度的转换,即〜0