路径角点的正态分布概率

问题描述 投票:0回答:1

我正在努力在路径中心分配高概率,在路径边缘分配低概率。

这是我当前结果的图片。然而,概率值在拐角处重叠。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

gridPath = "resources/myGrid3/"
pathFile = "pathNorm.csv"
myFile = "myPath8.csv"

pathDf = pd.read_csv(gridPath + pathFile)
myDf = pd.read_csv(gridPath + myFile)

pathDf = pathDf.drop_duplicates(["x"])

maxXGrid = pathDf.x.max() + 2
maxYGrid = pathDf.y.max() + 2
minXGrid = pathDf.x.min() - 2
minYGrid = pathDf.y.min() - 2

dx1 = 0.1
dx2 = 0.1

x1 = np.arange(minXGrid, maxXGrid, dx1)
x2 = np.arange(minYGrid, maxYGrid, dx2)
X1, X2 = np.meshgrid(x1, x2)
X = np.column_stack((X1.flatten(), X2.flatten()))

sigma_p = 0.7

path_pdf = np.sum((1 / (np.sqrt(2 * np.pi) * sigma_p)) * np.exp(-0.5 * (1 / (sigma_p ** 2)) * (np.sqrt((X1[:, :, None] - pathDf.x.values) ** 2 + (X2[:, :, None] - pathDf.y.values) ** 2)) ** 2), axis=2)
path_pdf /= np.sum(path_pdf)  # Normalize the pdf

fig = plt.figure(3)
ax = fig.add_subplot(111)
f = ax.pcolor(X1, X2, path_pdf)
plt.colorbar(f, ax=ax)
ax.scatter(myDf.x, myDf.y, color='white', label="Path", marker="x", s=0.1)
ax.set_xlabel('$x$-axis (m)', fontsize=12)
ax.set_ylabel('$y$-axis (m)', fontsize=12)
ax.scatter(pathDf.x.iloc[0], pathDf.y.iloc[0], c='b', marker='o', label='Start')
ax.set_aspect('equal')
ax.set_title('PDF of Path')
ax.legend()

plt.show()

我假设在拐角处,值相加到接近点并增加值,但我不确定应该如何处理这个问题。我想让所有点都具有相同的概率值。

有没有办法避免拐角处概率值重叠?

谢谢!

python numpy normal-distribution
1个回答
0
投票

路径拐角处概率值重叠的一个可能原因可能是内核带宽的选择(代码中的 sigma_p)。如果带宽太大,则路径上附近点的贡献可能会重叠,并导致拐角处的概率值更高。

为了避免此问题,您可以尝试减小 sigma_p 的值,以减少附近点的贡献之间的重叠量。这应该会导致沿路径的概率值分布更加均匀。

© www.soinside.com 2019 - 2024. All rights reserved.