首页 > 解决方案 > Spyde 导入模块但无法使用它

问题描述

我收到一个非常奇怪的错误,我真的不明白为什么。

我可以成功导入名为“filterpy”的模块,但是当我运行代码时出现错误:模块“filterpy”没有属性“kalman”

有趣的是,spyder 编辑器告诉我存在这样的模块,实际上它甚至允许我使用自完成。

我错过了什么吗?

谢谢,加布里埃尔

代码如下,库可以用pip安装

import numpy as np
import filterpy as fp

def fx(x, dt):
     # state transition function - predict next state based
    # on constant velocity model x = vt + x_0
    F = np.array([[1, dt, 0, 0], [0, 1, 0, 0], [0, 0, 1, dt], [0, 0, 0, 1]], dtype=float)
    return np.dot(F, x)

def hx(x):
    # measurement function - convert state into a measurement
   # where measurements are [x_pos, y_pos]
   return np.array([x[0], x[2]])

dt = 0.1
# create sigma points to use in the filter. This is standard for Gaussian processes
points = fp.kalman.MerweScaledSigmaPoints(4, alpha=.1, beta=2., kappa=-1)

kf = fp.kalman.UnscentedKalmanFilter(dim_x=4, dim_z=2, dt=dt, fx=fx, hx=hx, points=points)
kf.x = np.array([-1., 1., -1., 1]) # initial state
kf.P *= 0.2 # initial uncertainty
z_std = 0.1
kf.R = np.diag([z_std**2, z_std**2]) # 1 standard
kf.Q = fp.common.Q_discrete_white_noise(dim=2, dt=dt, var=0.01**2, block_size=2)

zs = [[i+np.random.randn()*z_std, i+np.random.randn()*z_std] for i in range(50)] # measurements
for z in zs:
    kf.predict()
    kf.update(z)
    print(kf.x, 'log-likelihood', kf.log_likelihood)

标签: pythonmoduleloading

解决方案


推荐阅读