您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 粒子滤波及matlab实现
粒子滤波及matlab实现粒子滤波就是指:通过寻找一组在状态空间中传播的随机样本来近似的表示概率密度函数,用样本均值代替积分运算,进而获得系统状态的最小方差估计的过程,这些样本被形象的称为“粒子”,故而叫粒子滤波。粒子滤波通过非参数化的蒙特卡洛(MonteCarlo)模拟方法来实现递推贝叶斯滤波,适用于任何能用状态空间模型描述的非线性系统,精度可以逼近最优估计。粒子滤波器具有简单、易于实现等特点,它为分析非线性动态系统提供了一种有效的解决方法,从而引起目标跟踪、信号处理以及自动控制等领域的广泛关注。贝叶斯滤波动态系统的目标跟踪问题可以通过下图所示的状态空间模型来描述。在目标跟踪问题中,动态系统的状态空间模型可描述为11()()kkkkkkxfxuyhxv其中(),()fh分别为状态转移方程与观测方程,kx为系统状态,ky为观测值,ku为过程噪声,kv为观测噪声。为了描述方便,用0:01{,,,}kkkXxxxx与1:1{,,}kkkYyyy分别表示0到k时刻所有的状态与观测值。在处理目标跟踪问题时,通常假设目标的状态转移过程服从一阶马尔可夫模型,即当前时刻的状态kx只与上一时刻的状态-1kx有关。另外一个假设为观测值相互独立,即观测值ky只与k时刻的状态kx有关。贝叶斯滤波为非线性系统的状态估计问题提供了一种基于概率分布形式的解决方案。贝叶斯滤波将状态估计视为一个概率推理过程,即将目标状态的估计问题转换为利用贝叶斯公式求解后验概率密度(|)kkpXY或滤波概率密度(|)kkpxY,进而获得目标状态的最优估计。贝叶斯滤波包含预测和更新两个阶段,预测过程利用系统模型预测状态的先验概率密度,更新过程则利用最新的测量值对先验概率密度进行修正,得到后验概率密度。假设已知1k时刻的概率密度函数为11(|)kkpxY,贝叶斯滤波的具体过程如下:(1)预测过程,由11(|)kkpxY得到1(|)kkpxY:111111(,|)(|,)(|)kkkkkkkkpxxYpxxYpxY当给定1kx时,状态kx与1kY相互独立,因此11111(,|)(|)(|)kkkkkkkpxxYpxxpxY上式两端对1kx积分,可得Chapman-Komolgorov方程11111(|)(|)(|)dkkkkkkkpxYpxxpxYx(2)更新过程,由1(|)kkpxY得到)|(kkYxp:获取k时刻的测量ky后,利用贝叶斯公式对先验概率密度进行更新,得到后验概率111(|,)(|)(|)(|)kkkkkkkkkpyxYpxYpxYpyY假设ky只由kx决定,即1(|,)(|)kkkkkpyxYpyx因此11(|)(|)(|)(|)kkkkkkkkpyxpxYpxYpyY其中,1(|)kkpyY为归一化常数1(|)kkpyY1(|)(|)dkkkkkpyxpxYx贝叶斯滤波以递推的形式给出后验(或滤波)概率密度函数的最优解。目标状态的最优估计值可由后验(或滤波)概率密度函数进行计算。通常根据极大后验(MAP)准则或最小均方误差(MMSE)准则,将具有极大后验概率密度的状态或条件均值作为系统状态的估计值,即ˆ=argmin(|)kMAPkkkxxpxYˆ=E[()|]()(|)dMMSEkkkkkkkxfxYfxpxYx贝叶斯滤波需要进行积分运算,除了一些特殊的系统模型(如线性高斯系统,有限状态的离散系统)之外,对于一般的非线性、非高斯系统,贝叶斯滤波很难得到后验概率的封闭解析式。因此,现有的非线性滤波器多采用近似的计算方法解决积分问题,以此来获取估计的次优解。在系统的非线性模型可由在当前状态展开的线性模型有限近似的前提下,基于一阶或二阶Taylor级数展开的扩展Kalman滤波得到广泛应用。在一般情况下,逼近概率密度函数比逼近非线性函数容易实现。据此,Julier与Uhlmann提出一种UnscentedKalman滤波器,通过选定的sigma点来精确估计随机变量经非线性变换后的均值和方差,从而更好的近似状态的概率密度函数,其理论估计精度优于扩展Kalman滤波。获取次优解的另外一中方案便是基于蒙特卡洛模拟的粒子滤波器。粒子滤波早在20世纪50年代,Hammersley便采用基于序贯重要性采样(Sequentialimportancesampling,SIS)的蒙特卡洛方法解决统计学问题[121]。20世纪60年代后期,Handschin与Mayne使用序贯蒙特卡洛方法解决自动控制领域的相关问题。20世纪70年代,Handschin、Akashi以及Zaritskii等学者的一系列研究工作使得序贯蒙特卡洛方法得到进一步发展。限于当时的计算能力以及算法本身存在的权值退化问题,序贯重要性采样算法没有受到足够重视,在随后较长一段时间内进展较为缓慢。直到20世纪80年代末,计算机处理能力的巨大进展使得序贯蒙特卡洛方法重新受到关注。Tanizaki、Geweke等采用基于重要性采样的蒙特卡洛方法成功解决了一系列高维积分问题。Smith与Gelfand提出的采样-重采样思想为Bayesian推理提供了一种易于实现的计算策略。随后,Smith与Gordon等人合作,于20世纪90年代初将重采样(Resampling)步骤引入到粒子滤波中,在一定程度上解决了序贯重要性采样的权值退化问题,并由此产生了第一个可实现的SIR(Samplingimportanceresampling)粒子滤波算法(Bootstrap滤波),从而掀起粒子滤波的研究热潮。美国海军集成水下监控系统中的Nodestar便是粒子滤波应用的一个实例。进入21世纪,粒子滤波器成为一个非常活跃的研究领域,Doucet、Liu、Arulampalam等对粒子滤波的研究作了精彩的总结,IEEE出版的论文集“SequentialMonteCarloMethodsinPractice”对粒子滤波器进行了详细介绍。贝叶斯重要性采样蒙特卡洛模拟是一种利用随机数求解物理和数学问题的计算方法,又称为计算机随机模拟方法。该方法源于第一次世界大战期间美国研制原子弹的曼哈顿计划,著名数学家冯诺伊曼作为该计划的主持人之一,用驰名世界的赌城,摩纳哥的蒙特卡洛来命名这种方法。蒙特卡洛模拟方法利用所求状态空间中大量的样本点来近似逼近待估计变量的后验概率分布,如图2.2所示,从而将积分问题转换为有限样本点的求和问题。粒子滤波算法的核心思想便是利用一系列随机样本的加权和表示后验概率密度,通过求和来近似积分操作。假设可以从后验概率密度(|)kkpxY中抽取N个独立同分布的随机样本()ikx,1,,iN,则有()11(|)()NikkkkipxYxxN(0.1)这里kx为连续变量,(-)kxx为单位冲激函数(狄拉克函数),即(-)0,kkxxxx,且()d1xx。当kx为离散变量时,后验概率分布(|)kkPxY可近似逼近为()11(|)()NikkkkiPxYxxN(0.2)其中,()()()1,;iikkkkxxxx()()()0,iikkkkxxxx。()Px1图2.1经验概率分布函数Fig.2.1Empiricalprobabilitydistributionfunction设()ikx为从后验概率密度函数)|(kkYxp中获取的采样粒子,则任意函数()kfx的期望估计可以用求和方式逼近,即()k11E[()|]()(|)d()NikkkkkkifxYfxpxYxfxN(0.3)蒙特卡洛方法一般可以归纳为以下三个步骤:(1)构造概率模型。对于本身具有随机性质的问题,主要工作是正确地描述和模拟这个概率过程。对于确定性问题,比如计算定积分、求解线性方程组、偏微分方程等问题,采用蒙特卡洛方法求解需要事先构造一个人为的概率过程,将它的某些参量视为问题的解。(2)从指定概率分布中采样。产生服从己知概率分布的随机变量是实现蒙特卡洛方法模拟试验的关键步骤。(3)建立各种估计量的估计。一般说来,构造出概率模型并能从中抽样后,便可进行现模拟试验。随后,就要确定一个随机变量,将其作为待求解问题的解进行估计。在实际计算中,通常无法直接从后验概率分布中采样,如何得到服从后验概率分布的随机样本是蒙特卡洛方法中基本的问题之一。重要性采样法引入一个已知的、容易采样的重要性概率密度函数(|)kkqxY,从中生成采样粒子,利用这些随机样本的加权和来逼近后验滤波概率密度(|)kkpxY,如图2.3所示。令()(){,,1,.}iikkxwiN表示一支撑点集,其中()ikx为是k时刻第i个粒子的状态,其相应的权值为()ikw,则后验滤波概率密度可以表示为()()1(|)()NiikkkkkipxYwxx(0.4)其中,()()()(|)(|)iikkkikkpxYwqxY(0.5)图2.2重要性采样Fig.2.2Importancesampling当采样粒子的数目很大时,式(2.14)便可近似逼近真实的后验概率密度函数。任意函数()kfx的期望估计为()()()()()11(|)11E[()|]=()()(|)iNNiiikkkkkkkiiikkpxYfxYfxfxwNqxYN(0.6)序贯重要性采样算法在基于重要性采样的蒙特卡洛模拟方法中,估计后验滤波概率需要利用所有的观测数据,每次新的观测数据来到都需要重新计算整个状态序列的重要性权值。序贯重要性采样作为粒子滤波的基础,它将统计学中的序贯分析方法应用到的蒙特卡洛方法中,从而实现后验滤波概率密度的递推估计。假设重要性概率密度函数0:1:(|)kkqxy可以分解为0:1:0:11:10:11:(|)(|)(|,)kkkkkkkqxyqxyqxxy(0.7)设系统状态是一个马尔可夫过程,且给定系统状态下各次观测独立,则有0:011()()(|)kkiiipxpxpxx(0.8)1:1:1(|)(|)kkkiiipyxpyx(0.9)后验概率密度函数的递归形式可以表示为0:10:10:1(|,)(|)(|)(|)kkkkkkkkkpyxYpxYpxYpyY0:10:110:11110:111(|,)(|,)(|)(|)(|)(|)(|)(|)kkkkkkkkkkkkkkkkkkpyxYpxxYpxYpyYpyxpxxpxYpyY(0.10)粒子权值()ikw的递归形式可以表示为()()0:()0:(|)(|)iikkkikkpxYwqxY()()()()10:11()()()0:10:11(|)(|)(|)(|,)(|)iiiikkkkkkiiikkkkkpyxpxxpxYqxxYqxY()()()()11()()0:1(|)(|)(|,)iiiikkkkkiikkkpyxpxxwqxxY(0.11)通常,需要对粒子权值进行归一化处理,即()()()1iikkNiki(0.12)序贯重要性采样算法从重要性概率密度函数中生成采样粒子,并随着测量值的依次到来递推求得相应的权值,最终以粒子加权和的形式来描述后验滤波概率密度,进而得到状态估计。序贯重要性采样算法的流程可以用如下伪代码描述:()()()()1111[{,}]({,},)iiNiiNkkikkikxwSISxwYFori=1:N(1)时间更新,根据重要性参考函数()()0:1(|,)iikkkqxxY生成采样粒子()ikx;(2)量测更新,根据最新观测值计算粒子权值()ikw;EndFor粒子权值归一化,并计算目标状态。为了得到正确的状态估计,通常希望粒子权值的方差尽可能趋近于零。然而,序贯蒙特卡洛模拟方法一般都存在权值退化问题。在实际计算中,经过数次迭代,只有少数粒子的权值较大,其余粒子的权值可忽略不计。粒子权值的方差随着时间增大,状态空间中的有效粒子数较少。随着无
本文标题:粒子滤波及matlab实现
链接地址:https://www.777doc.com/doc-1762523 .html