python - 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)
解决方案
推荐阅读
- machine-learning - 给定上下文和可能的单词,如何计算哪个单词最适合?
- elasticsearch - Search Guard 使用 SSL 连接到远程 Elasticsearch 集群
- angular - *ngFor 中是否可以进行反射
- azureservicebus - MassTransit Azure 服务总线,设置定期计划
- json - 如何在关系表laravel 5.8中解码Json数据
- python - 在 Keras 中使用 ConvLSTM 对移动 MNIST 进行非相干帧预测
- java - 需要在 Testng 运行时跳过测试用例
- javascript - 操作包含文件路径的字符串以仅获取文件名
- swift - Swift - 超时执行网络调用的递归函数?
- excel - 从 Powershell 写入 Excel:如何设置值的单元格格式?