跳转到主要内容

未提供项目描述

项目描述

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: 包含了滤波和平滑的测试。

示例

以下是如何使用提供的库设置和运行贝叶斯滤波器的基本示例

  1. 设置函数:
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
  1. 设置滤波器和观测:
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
  1. 运行滤波器:
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_transformpropagate_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 查看哈希值)

上传时间 Python 3

由以下组织支持