PyBayes的安装和使用
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).
- 安装
可以通过pip install -U PyBayes安装。
如果失败可以考虑手动下载源码,自己安装。
安装过程中,Cython编译可能失败。使用下面的命令安装,可以避免Cython编译加速:
python ./setup.py --use-cython=no install
- 主要功能
Kalman filter, particle filter and marginalized particle filter
- 遇到的问题
在执行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):
- 简单实例
一维卡尔曼和简单界面
#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的安装和使用的更多相关文章
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法
如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...
- Sublime Text3安装JsHint
介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...
- Fabio 安装和简单使用
Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...
- gentoo 安装
加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optima ...
- 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. ...
- 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 服务器安装操 ...
- 【原】nodejs全局安装和本地安装的区别
来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...
- tLinux 2.2下安装Mono 4.8
Tlinux2.2发行版基于CentOS 7.2.1511研发而成,内核版本与Tlinux2.0发行版保持完全一致,更加稳定,并保持对Tlinux2.0的完全兼容.Mono 4版本要求CentOS 7 ...
随机推荐
- PCL—低层次视觉—点云分割(邻近信息)
分割给人最直观的影响大概就是邻居和我不一样.比如某条界线这边是中华文明,界线那边是西方文,最简单的分割方式就是在边界上找些居民问:"小伙子,你到底能不能上油管啊?”.然后把能上油管的居民坐标 ...
- PCL—低层次视觉—点云滤波(初步处理)
点云滤波的概念 点云滤波是点云处理的基本步骤,也是进行 high level 三维图像处理之前必须要进行的预处理.其作用类似于信号处理中的滤波,但实现手段却和信号处理不一样.我认为原因有以下几个方面: ...
- Classpath entry org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER will not be exported
打开navigator,修改下面的classpath文件: 将<classpathentry kind="con" path="org.maven.ide.ecli ...
- Android使用Fragment程序崩溃
调用Fragment的Activity要继承并实现Fragment.OnFragmentInteractionListener
- Android开发之ProgressDialog与ProgressBar
ProgressDialog,继承AlertDialog.所以ProgressDialog就是一个在对话框中显示ProgressDialog,并显示进度的文本信息. 并且没有取消和确定按钮,只能通过b ...
- Akka的Actor模型及使用实例
本文的绝大部分内容转载自rerun.me这一blog,老外写的东西就是好啊. ACTORS介绍 Anyone who has done multithreading in the past won't ...
- web.xml元素介绍
每一个站的WEB-INF下都有一个web.xml的设定文件,它提供了对我们站台的配置设定.web.xml中定义元素有:◆站台的名称和说明◆针对环境参数(Context)做初始化工作◆Servlet的名 ...
- mssql修改链接数为默认值
EXEC sys.sp_configure N'show advanced options', N'1' RECONFIGURE WITH OVERRIDE GO EXEC sys.sp_confi ...
- UrlRewriter.dll伪静态实现二级域名泛解析
大家应该知道,微软的URLRewrite能够对URL进行重写,但是也只能对域名之后的部分进行重写,而不能对域名进行重写, 如:可将 http://http://www.115sou.com/qq/ ...
- android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法
这篇文章介绍了android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法,有需要的朋友可以参考一下 布局文件中的TextView属性 复制代码代码如下: < ...