在生活工作中的各种系统可以分为线性系统和非线性系统,因此相对应的滤波算法也就分为线性滤波算法和非线性滤波算法。在线性滤波算法中,卡尔曼滤波算法(KF)是一种经典的线性滤波算法,具有最小均方误差(MMSE)准则下的较好的鲁棒性和最优特性。它可以在对线性系统滤波过程中获得最小均方误差准则下的最优估计,但是它有两个前提条件:(1)系统状态与噪声都要服从 高斯分布;(2)动态系统模型与测量模型都必须要足够精确。但是在实际应用中这两个前提条件都基本上是无法满足的,而且经典的卡尔曼滤波最优特性只可以在线性条件下获得。
对于非线性系统,研究人员提出了许多种的次优滤波算法。这些算法主要包括以下两个大类:(1)对非线性系统的系统函数进行逼近;(2)对非线性系统的状态分布进行逼近。
对非线性系统的系统函数进行逼近的算法主要包含扩展卡尔曼滤波算法(EKF)。扩展卡尔曼滤波算法的基本思想是围绕状态估计对非线性系统函数进行泰勒级数展开,得到线性化的系统方程,然后应用线性系统卡尔曼滤波公式进行滤波,从而完成对目标的滤波估计等。扩展卡尔曼滤波这类的算法又有许多改进的算法:(1)扩展卡尔曼滤波:通过截取展开的泰勒级数的一阶项,将非线性系统函数转化为线性系统函数,然后运用卡尔曼滤波(KF)进行滤波[3];(2)二阶卡尔曼滤波:顾名思义,就是截取展开的泰勒级数的二阶项,以此来逼近非线性系统方程。
扩展卡尔曼滤波器(EKF)是卡尔曼滤波器(KF)一种改进,但它是对非线性系统的一种滤波算法,但是它依旧存在着几个比较大的问题:(1)非线性系统模型必须满足小扰动假设,即假设非线性方程的理论解与实际解之差为小量,即它只能运用在非线性较弱的系统中,对于非线性较强的系统则不适用。(2)扩展卡尔曼滤波要求非线性系统要存在雅克比矩阵。在实际的应用中,有的非线性系统是没有办法去获得它的雅克比矩阵的。(3)扩展卡尔曼滤波要求对雅克比矩阵进行计算,这是一件计算复杂,极其容易出错的工作,因此扩展卡尔曼滤波的计算量极其庞大。(4)扩展卡尔曼滤波是将非线性系统函数按照泰勒级数展开,然后截取它的一阶项,舍去它的二阶项、其他高阶项,这就要求该非线性系统的泰勒级数展开项的二阶项、高阶项是可以舍去的,不然就会出现非常大的误差,导致滤波震荡和发散。因此它的进度不是很高,估计均值只能达到二阶精度。
本文将对扩展卡尔曼滤波(EKF)和无味卡尔曼滤波(UKF)进行Matlab仿真,并利用MATLAB GUI设计相应的界面,实现这两种不同的非线性卡尔曼滤波方法对不同的曲线进行滤波,并分析这两种滤波方法对不同曲线和不同噪声下的滤波效果。