PyBayes 主页 文档

PyBayes is an object-oriented Python library for recursive Bayesian estimation (Bayesian filtering) that is convenient to use. Already implemented are Kalman filter, particle filter and marginalized particle filter, all built atop of a light framework of probability density functions. PyBayes can optionally use Cython for large speed gains (Cython build can be several times faster in some situations).

  1. 安装

可以通过pip install -U PyBayes安装。

如果失败可以考虑手动下载源码,自己安装。

安装过程中,Cython编译可能失败。使用下面的命令安装,可以避免Cython编译加速:

python ./setup.py --use-cython=no install

  1. 主要功能

Kalman filter, particle filter and marginalized particle filter

  1. 遇到的问题

在执行python pybayes.GaussPdf(np.array([0.0, 0.0]), np.array([[200.0, 0.0],[0.0, 200.0]]))时报错:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Anaconda\lib\site-packages\pybayes\pdfs.py", line 548, in __init__
self._set_rv(mean.shape[0], rv)
File "D:\Anaconda\lib\site-packages\pybayes\pdfs.py", line 418, in _set_rv
return self._set_rvs(exp_shape, rv, 0, None)
File "D:\Anaconda\lib\site-packages\pybayes\pdfs.py", line 379, in _set_rvs
self.rv = RV(RVComp(exp_shape)) # create RV with one anonymous component
File "D:\Anaconda\lib\site-packages\pybayes\pdfs.py", line 46, in __init__
raise TypeError("dimension must be integer (int)")
TypeError: dimension must be integer (int)

应该是跟1.9版本的NumPy不太兼容,NumPy的shape([1,2,3])返回的是(3L,),是长整型,所以修改pybayes的...\lib\site-packages\pybayes\pdfs.py文件的45行:

#if not isinstance(dimension, int):
if not isinstance(dimension, long):
  1. 简单实例

一维卡尔曼和简单界面

#coding=utf8

import sys
from PySide.QtCore import *
from PySide.QtGui import * import pybayes as pb
import numpy as np _A=np.array([[1.]])
_C=np.array([[1.]])
_Q=np.array([[1.]])
_R=np.array([[1.]])
s_pdf=pb.GaussPdf(np.array([1.]), np.array([[1.]]))
kf=pb.KalmanFilter(A=_A,C=_C,Q=_Q,R=_R,state_pdf=s_pdf)
p=kf.posterior() def update(x):
kf.bayes(np.array([x]))
return p.mean()[0],p.variance()[0] class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(320, 205)
self.pushButton = QPushButton(Dialog)
self.pushButton.setGeometry(QRect(210, 160, 75, 25))
self.pushButton.setObjectName("pushButton")
self.textBrowser = QTextBrowser(Dialog)
self.textBrowser.setGeometry(QRect(10, 10, 300, 131))
self.textBrowser.setObjectName("textBrowser")
self.textEdit = QTextEdit(Dialog)
self.textEdit.setGeometry(QRect(35, 160, 100, 25))
self.textEdit.setObjectName("textEdit") self.retranslateUi(Dialog)
QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QApplication.translate("Dialog", "卡尔曼滤波器", None, QApplication.UnicodeUTF8))
self.pushButton.setText(QApplication.translate("Dialog", "更新", None, QApplication.UnicodeUTF8)) class MainUi(QDialog,Ui_Dialog):
def __init__(self,parent = None):#parent默认为0
super(MainUi,self).__init__(parent)#固定形式 self.setupUi(self)
self.connectSlot() def connectSlot(self):#连接逻辑和界面
#self.textEdit.textChanged.connect(self.changeWord)#同步textEdit和textBrowser的内容
self.pushButton.clicked.connect(self.changeWord) def clearText(self):
self.textEdit.setText("") def changeWord(self):#更改textBrowse显示内容
mean,var=update(float(self.textEdit.toPlainText()))
_text = u"<font color = blue>滤波值:%f<br />方差:%f</font>"%(mean,var)
self.textBrowser.setText(_text) def main():
app = QApplication(sys.argv)
ui = MainUi()#没有给parent赋值
ui.show()
sys.exit(app.exec_()) if __name__ == '__main__':
main()

PyBayes的安装和使用的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  3. Sublime Text3安装JsHint

    介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...

  4. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  5. gentoo 安装

    加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optima ...

  6. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  7. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  8. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  9. tLinux 2.2下安装Mono 4.8

    Tlinux2.2发行版基于CentOS 7.2.1511研发而成,内核版本与Tlinux2.0发行版保持完全一致,更加稳定,并保持对Tlinux2.0的完全兼容.Mono 4版本要求CentOS 7 ...

随机推荐

  1. C++:向函数传递对象(对象、对象指针、对象引用)

    3.5.1   使用对象作为函数参数,其方法与传递基本类型的变量相同 //例3.21 使用对象作为函数参数 #include<iostream> using namespace std; ...

  2. 转 Difference between WCF and Web API and WCF REST and Web Service

    http://www.dotnet-tricks.com/Tutorial/webapi/JI2X050413-Difference-between-WCF-and-Web-API-and-WCF-R ...

  3. RecyclerView(6)自定义RecyclerView.LayoutManager

    A LayoutManager is responsible for measuring and positioning item views within a RecyclerView as wel ...

  4. uva 111 - History Grading (dp, LCS)

    题目链接 题意:给N,第二行是答案,n个数c1---cn, 代表第一个的顺序是c1,第二个数顺序是c2; 下面每一行是学生的答案,格式同上. 注意:这个给的顺序需要处理一下,不能直接用. 思路:LCS ...

  5. [swustoj 771] 奶牛农场

    奶牛农场 Description 将军有一个用栅栏围成的矩形农场和一只奶牛,在农场的一个角落放有一只矩形的箱子,有一天将军要出门,他就把奶牛用一根绳子套牢,然后将绳子的另一端绑到了那个箱子不靠栅栏的角 ...

  6. [转] jQuery Infinite Ajax Scroll(ias) 分页插件介绍

    原文链接:http://justflyhigh.com/index.php/articlec/index/index.php?s=content&m=aticle&id=91 Infi ...

  7. ti processor sdk linux am335x evm /bin/setup-uboot-env.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-uboot-env.sh hacking # 说明: # 本文主要对TI的sdk中 ...

  8. RMAN 备份详解

    一.数据库备份与RMAN备份的概念 1.数据库完全备份:按归档模式分为归档和非归档 归档模式 打开状态,属于非一致性备份        关闭状态,可以分为一致性和非一致性 非归档模式 打开状态,非一致 ...

  9. Hadoop中OutputFormat解析

    一.OutputFormat OutputFormat描述的是MapReduce的输出格式,它主要的任务是: 1.验证job输出格式的有效性,如:检查输出的目录是否存在. 2.通过实现RecordWr ...

  10. Islands and Bridges(POJ 2288状压dp)

    题意:给你一个图和每个点的价值,边权值为连接两点权值的积,走哈密顿通路,若到达的点和上上个点相连则价值加三点乘积,求哈密顿通路的最大价值,和最大价值哈密顿通路的条数. 分析:开始看这个题很吓人,但想想 ...