今天来简单介绍一个如何用python
绘制高斯分布三维分布的曲面图。
我们知道高斯分布的二维表达式为:
G
a
u
s
s
i
a
n
=
exp
−
(
x
2
+
y
2
)
w
0
2
.
Gaussian =\exp{\frac{-(x^{2} + y^{2})}{w_0^{2}}} \,.
Gaussian=expw02−(x2+y2).
# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-3, 3, 1000)
y = np.linspace(-3, 3, 1000)
x, y = np.meshgrid(x, y)
w0 = 1
gaussian = np.exp(-((pow(x, 2) + pow(y, 2)) / pow(w0, 2)))
# 二维面振幅分布图
plt.figure()
plt.imshow(gaussian)
# 三维曲面振幅分布图
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(x, y, gaussian, cmap='jet')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
下图对应高斯二维面振幅分布图。
图二为高斯三维曲面振幅分布图。
事实上如果我们以俯视图查看图二,我们会得到和图一相同的结果。俯视图如下:
至此,高斯光的绘制已经实现了。
拓展:对于学习光学专业的人来说,上述绘制高斯分布也许并不十分完美,因为通常光学中更看重光强的分布状态,显然上述的分布状态的对比度并不完美。这时我们可以简单的设定plt.imshow()
函数中的参数cmap="hot"
来获取更加完美的高斯强度分布。
上面说到了强度分布,有些小伙伴可能会觉得不解,毕竟我们一开始给出的公式是高斯光振幅的表达式。因此这里做一下简单的说明。特别说明:虽然最开始我们给出的公式是振幅的表达式的,但是因为振幅的模的平方就是强度。所以我们也可以认为振幅代表了高斯光的强度分布。
代码如下:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3, 3, 1000)
y = np.linspace(-3, 3, 1000)
x, y = np.meshgrid(x, y)
w0 = 1
gaussian = np.exp(-((pow(x, 2) + pow(y, 2)) / pow(w0, 2)))
# 二维面振幅分布图
plt.figure()
plt.imshow(gaussian, cmap="hot")
plt.show()
运行后得到的图像结果如下:
至此,高斯光的绘制已经完美地实现了。
码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~