未提供项目描述
项目描述
BayesFilter
BayesFilter 是一个用于贝叶斯滤波和平滑的Python库。此库提供了实现贝叶斯滤波器、Rauch-Tung-Striebel 滤波器以及其他相关方法的工具。唯一的依赖项是NumPy。
安装
要安装 BayesFilter,只需使用 pip
pip install bayesfilter
用法
基本结构
库由几个模块组成,每个模块负责贝叶斯滤波和平滑过程中的不同部分
distributions.py
: 定义了分布类,包括用于滤波器的高斯分布。filtering.py
: 实现了 BayesianFilter 类,负责运行滤波过程。model.py
: 包含了 StateTransitionModel 类,用于状态转换。observation.py
: 定义了 Observation 类,用于观测模型。smoothing.py
: 实现了 RTS (Rauch-Tung-Striebel) 滤波器。unscented.py
: 提供了无味变换的函数。utilities.py
: 包含了整个库中使用的实用函数。test_filtering_smoothing.py
: 包含了滤波和平滑的测试。
示例
以下是如何使用提供的库设置和运行贝叶斯滤波器的基本示例
- 设置函数:
def setup_functions():
def transition_func(x, delta_t_s):
return np.array([x[0]])
def transition_jacobian_func(x, delta_t_s):
return np.array([[1.0]])
def observation_func(x):
return np.array([np.sin(x[0]), np.cos(x[0])])
def observation_jacobian_func(x):
return np.array([[np.cos(x[0])], [-np.sin(x[0])]])
return transition_func, transition_jacobian_func, observation_func, observation_jacobian_func
- 设置滤波器和观测:
def setup_filter_and_observations():
rng = np.random.default_rng(0)
transition_func, transition_jacobian_func, observation_func, observation_jacobian_func = setup_functions()
transition_model = StateTransitionModel(
transition_func,
1e-8*np.eye(1),
transition_jacobian_func
)
initial_state = Gaussian(np.array([0.0]), np.eye(1))
filter = BayesianFilter(transition_model, initial_state)
true_state = np.array([-0.1])
noise_std = 0.2
observations = []
for theta in np.linspace(0, 2*np.pi, 1000):
observation = observation_func(true_state) + rng.normal(0, noise_std, 2)
observations.append(Observation(observation, noise_std*np.eye(2), observation_func, observation_jacobian_func))
return filter, observations, true_state
- 运行滤波器:
def test_filter_noisy_sin(use_jacobian=True):
filter, observations, true_state = setup_filter_and_observations()
filter.run(observations, np.linspace(0, 2*np.pi, 1000), 100.0, use_jacobian=use_jacobian)
np.testing.assert_allclose(filter.state.mean(), true_state, atol=1e-2)
测试
库包含了一组测试,以确保滤波和平滑算法的功能。这些测试可以按照以下方式运行
python test_filtering_smoothing.py
文档
distributions.py
定义了用于状态表示和传播的高斯分布类。
filtering.py
实现了 BayesianFilter
类,负责执行具有预测和更新步骤的滤波过程。
model.py
包含 StateTransitionModel
类,表示状态转换模型。
observation.py
定义了 Observation
类,表示观测模型。
smoothing.py
实现了用于 Rauch-Tung-Striebel 滤波的 RTS
类。
unscented.py
提供了无味变换的函数,包括 unscented_transform
和 propagate_gaussian
。
utilities.py
包含如 propagate_covariance
的实用函数。
test_filtering_smoothing.py
包含过滤和平滑测试以验证实现的正确性。
作者
Hugo Hadfield
许可证
本项目遵循MIT许可证。
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
bayesfilter-0.0.4.tar.gz (9.0 kB 查看哈希值)
构建分发
bayesfilter-0.0.4-py3-none-any.whl (11.1 kB 查看哈希值)
关闭
bayesfilter-0.0.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 205144b1155f1881f790805ec3c31e180579a648382294970ce69599511a193b |
|
MD5 | 6ea5f0870da18a24d2784cb25d6d007d |
|
BLAKE2b-256 | 86be7a357c4c4522176251dd53b1ec80532968fa3280d8fb5734e64d5c783201 |
关闭
bayesfilter-0.0.4-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 85bcbb6e21e751660d5668c679deead4c475db55aa7ea9f14f8fa4ef1dacbac9 |
|
MD5 | eed499f475fd21c89b1ea79defff52fc |
|
BLAKE2b-256 | 0561c72aaadca0b181b6180836ba11e44d843eda0d2a55a7076051cb01466920 |