无损卡尔曼滤波器(Unscented Kalman Filter, UKF)#附MATLAB代码

无损卡尔曼滤波(UKF)结合无损变换(UT)与标准卡尔曼滤波,通过UT避免线性化误差。本文介绍了UKF的概念、UT变换原理,以及简化的UKF和扩维UKF滤波算法,并提供了MATLAB代码示例,包括仿真和猴子数据的实验分析。
摘要由CSDN通过智能技术生成

无损卡尔曼滤波

概念

无损卡尔曼滤波又称无迹卡尔曼滤波(Unscented Kalman Filter,UKF),是无损变换(Unscented Transform,UT)与标准卡尔曼滤波体系的结合,通过UT变换使非线性系统方程适用于线性假设下的标准卡尔曼体系。

而扩展卡尔曼滤波(Extended Kalman Filter,EKF)通过线性化非线性函数实现递推滤波,通常采用泰勒级数展开,然后求取Jacobi矩阵,其精度低,并且计算复杂

无损变换(Unscented Transform,UT)

UT变换是用固定数量的参数去近似一个高斯分布,它对非线性函数的概率密度分布进行近似,而不是对非线性函数做近似 ,算法实现不受模型复杂度的影响,所得到的的非线性函数的统计量的准确性可以达到三阶,而之前EKF的准确性只能达到一阶;它无需计算Jacobi矩阵,这样就能处理不可导的非线性函数。

some understanding:
一般validation set 用于神经网络超参数的选择。但是在认知神经科学这边一般不用。
统计量:

这里指的统计量含义是不能保证每次你做变换都能达到三阶,因为毕竟参数那么多,说不准哪一次就不是了。它指的是一种期望,即很多次很多次时候后平均差不多到三阶。
虽然无损变换能够达到三阶,但是卡尔曼变换是近似高斯分布,所以只能用到两阶。(一阶矩是期望,二阶中心距是方差,三阶中心距是向左向右倾斜的程度 skew。在均值不为0的情况,原点矩只有纯数学意义。)

它对非线性函数的概率密度分布进行近似,而不是对非线性函数做近似:

这句话可以理解为EKF是想办法把原来的非线性函数线性化,这样高斯分布经过一个线性函数还是高斯函数,然后带到卡尔曼那个线性模型中。而UT则不管你函数是线性还是非线性,甚至是否是连续的都不关心,我直接把我高斯分布采的点带进去,得出来一堆乱七八糟的点再加个权,就是我估计经过变换后随机变量的均值了,乱七八糟的点在和均值做个计算加个权就变成了变换后随机变量的方差了。实际上如果只把变换前高斯分布均值带入非线性函数得到的点并不是变换后随机变量的均值。有了均值和方差我就把他近似高斯分布了。然而实际上可能变换后的随机变量可能要无穷多个moments才能表示出来。但是我ut不管那么多,我可以准确估计一阶和二阶矩,这就是它的伟大之处啊!

其实现原理为:在原先分布中按某一规则取一些点,使这些点的均值和协方差状态分布与原状态分布的均值和协方差相等;将这些点代入非线性函数中,相应得到非线性函数值点集,通过这些点集可求取变换的均值和协方差。UT变换的实现一般分为以下三个步骤:

  1. 构造sigma点集
    根据随机变量x的统计量均值 x ‾ \overline{x} x和协方差P x _x x,构造Sigma点集
    χ i = { x ‾ + ( ( n + λ ) P x ) i i = 1 , . . . , n x ‾ − ( ( n + λ ) P x ) i i = n + 1 , . . . , 2 n x ‾ i = 0 \chi_i=\left\{ \begin{array}{rcl} \overline{x} +(\sqrt{(n+\lambda)P_x})_i & & {i=1,...,n}\\ \overline{x} -(\sqrt{(n+\lambda)P_x})_i & & {i=n+1,...,2n}\\ \overline{x} & & {i=0} \end{array} \right. χi=x+((n+λ)Px )ix((n+λ)Px )ixi=1,...,ni=n+1,...,2ni=0其中, λ \lambda λ为尺度参数,调整其值可以提高逼近精度,n为变量x的维度。用这一组采样点可以近似近似地表达变量x的高斯分布。括号右下角i表示第i列。

  2. 对Sigma点集做非线性变换
    Y i = f ( χ i ) , i = 0 , 1 , 2 , . . . , 2 n Y_i=f(\chi_i),i=0,1,2,...,2n Yi=f(χi),i=0,1,2,...,2n
    经过变换后的Sigma点集{Y i _i i}即可近似地表示y=f(x)的分布。

  3. 计算函数映射后的均值和方差
    对变换后的Sigma点集{Y i _i i}做加权处理,从而得到输出量y的均值 y ‾ \overline{y} y和协方差P y _y y
    W 0 ( m ) = λ / ( n + λ ) W^{(m)}_0=\lambda/(n+\lambda)

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值