我想问一下穆勒矩阵运算和斯托克斯参数。 给定Mueller矩阵:
灯光状态的输入为:
最后,通过半波片产生光输出的操作:
我进行了计算之后,θx= 0°的S_out为[1 1 0 0],这意味着光是水平偏振的。但是,当θx= 45°时,我没有得到维基百科所述的垂直光偏振[1 -1 0 0]:
这是我产生结果的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编程语言进行计算的结果:
看来我的垂直光偏振是错误的。我希望任何人都可以帮助我澄清这个问题。 非常感谢和问候。
答案 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