Python 绘制高斯曲面图

今天来简单介绍一个如何用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()

运行后得到的图像结果如下:
在这里插入图片描述
至此,高斯光的绘制已经完美地实现了。

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

  • 14
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的大熊猫

你的鼓励将是我写作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值