我正在努力在路径中心分配高概率,在路径边缘分配低概率。
这是我当前结果的图片。然而,概率值在拐角处重叠。
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()
我假设在拐角处,值相加到接近点并增加值,但我不确定应该如何处理这个问题。我想让所有点都具有相同的概率值。
有没有办法避免拐角处概率值重叠?
谢谢!
路径拐角处概率值重叠的一个可能原因可能是内核带宽的选择(代码中的 sigma_p)。如果带宽太大,则路径上附近点的贡献可能会重叠,并导致拐角处的概率值更高。
为了避免此问题,您可以尝试减小 sigma_p 的值,以减少附近点的贡献之间的重叠量。这应该会导致沿路径的概率值分布更加均匀。