我试图在粒子过滤器中计算某些粒子的权重,然后相应地规范化这些权重。我的代码:
def update(particles, weights, landmark, sigma):
n = 0.0
for i in range(len(weights)):
distance = np.power((particles[i][0] - landmark[0]) ** 2 + (particles[i][1] -
landmark[1])**2, 0.5)
likelihood = exp(-(np.power(distance, 2))/2 * sigma ** 2)
weights[i] = weights[i] * likelihood
n += weights[i]
weights += 1.e-30
if n != 0:
weights = weights / n
但是,我得到了一个错误: /Users/scottdayton/pycharm项目/不确定性研究/particle.py:30:RuntimeWarning:true_divide中遇到溢出 重量=重量/n /Users/scottdayton/pycharm项目/不确定性研究/particle.py:30:RuntimeWarning:在真除法中遇到无效值 重量=重量/n
正如在评论中所说,我在代码中添加了括号,但可能还有另一件事。我觉得你是在尝试将权重与可能性相乘,然后将结果标准化。为此,应将循环切割为2:
我会这样写:
相关问题 更多 >
编程相关推荐