用Python实现边界框(bounding box)二维高斯分布建模的代码
时间: 2024-05-08 07:16:22 浏览: 192
以下是Python实现边界框(bounding box)二维高斯分布建模的代码:
```python
import numpy as np
from scipy.stats import multivariate_normal
# Define the bounding box coordinates
x_min, x_max = 0, 10
y_min, y_max = 0, 10
# Define the mean and covariance matrix for the 2D Gaussian distribution
mu = np.array([5, 5])
sigma = np.array([[3, 0], [0, 3]])
# Create a meshgrid for the bounding box
x, y = np.mgrid[x_min:x_max:0.1, y_min:y_max:0.1]
pos = np.dstack((x, y))
# Evaluate the Gaussian distribution at each point in the meshgrid
rv = multivariate_normal(mu, sigma)
z = rv.pdf(pos)
# Plot the Gaussian distribution and the bounding box
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.contourf(x, y, z)
ax.set_xlim(x_min, x_max)
ax.set_ylim(y_min, y_max)
ax.set_aspect('equal')
plt.show()
```
此代码创建了一个2D高斯分布,其中边界框由$x_{min}=0$,$x_{max}=10$,$y_{min}=0$和$y_{max}=10$定义。高斯分布的均值是$(5,5)$,协方差矩阵是$3\times 3$的单位矩阵。使用`numpy`的`mgrid`函数创建一个网格,其中$x$和$y$的范围是从$x_{min}$到$x_{max}$和从$y_{min}$到$y_{max}$,步长为$0.1$。通过使用`multivariate_normal`函数从`scipy.stats`模块计算高斯分布在网格中的每个点上的值。最后,使用`matplotlib`绘制高斯分布和边界框。
阅读全文