产生径向指数涡旋光束的叉型光栅 程序
该程序需要依赖Python的numpy和matplotlib库。
首先,定义一个产生叉型光栅的函数。
python
import numpy as np
def make_hologram(size, pitch, angle):
x, y = np.meshgrid(np.linspace(-size/2, size/2, size), np.linspace(-size/2, size/2, size))
s = np.sin(np.deg2rad(angle))
c = np.cos(np.deg2rad(angle))
phase = np.exp(1j * 2 * np.pi * (c * x + s * y) / pitch)
return (phase + np.conj(phase[::-1,::-1])) / 2
其中,size表示光栅的大小,pitch表示光栅的周期,angle表示光栅的方向。
然后,定义一个产生径向指数涡旋的函数。
python
def make_oes(size, radius, m):
x, y = np.meshgrid(np.linspace(-size/2, size/2-1, size), np.linspace(-size/2, size/2-1, size))
r = np.sqrt(x2 + y2)
theta = np.arctan2(y, x)
phase = np.exp(1j * m * theta) * np.exp(-r2 / radius2)
al(phase)
其中,size表示图像的大小,radius表示涡旋的大小,m表示径向指数。linspace numpy
将叉型光栅和径向指数涡旋相乘,可以得到带有径向指数涡旋的光束。
python
size = 512
pitch = 20
angle = 45
radius = 150
m = 3
hologram = make_hologram(size, pitch, angle)
oes = make_oes(size, radius, m)
beam = oes * hologram
import matplotlib.pyplot as plt
plt.imshow(np.abs(beam), cmap='gray')
plt.show()
最后,使用matplotlib库将得到的光束可视化。
完整代码:
python
import numpy as np
import matplotlib.pyplot as plt
def make_hologram(size, pitch, angle):
x, y = np.meshgrid(np.linspace(-size/2, size/2, size), np.linspace(-size/2, size/2, size))
s = np.sin(np.deg2rad(angle))
c = np.cos(np.deg2rad(angle))
phase = np.exp(1j * 2 * np.pi * (c * x + s * y) / pitch)
return (phase + np.conj(phase[::-1,::-1])) / 2
def make_oes(size, radius, m):
x, y = np.meshgrid(np.linspace(-size/2, size/2-1, size), np.linspace(-size/2, size/2-1, size))
r = np.sqrt(x2 + y2)
theta = np.arctan2(y, x)
phase = np.exp(1j * m * theta) * np.exp(-r2 / radius2)
al(phase)
size = 512
pitch = 20
angle = 45
radius = 150
m = 3
hologram = make_hologram(size, pitch, angle)
oes = make_oes(size, radius, m)
beam = oes * hologram
plt.imshow(np.abs(beam), cmap='gray')
plt.show()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论