第讲UKF滤波算法
- 格式:pdf
- 大小:283.17 KB
- 文档页数:43
EKFUKFPF算法的比较程序在估计理论中,EKF(Extended Kalman Filter),UKF(Unscented Kalman Filter)和PF(Particle Filter)是三种常用的非线性滤波算法。
它们在不同的环境和应用中具有不同的优点和缺点。
下面将对这三种算法进行比较。
首先,EKF是最常用的非线性滤波算法之一、它通过线性化状态转移方程和测量方程来近似非线性问题。
EKF在处理高斯噪声的情况下表现良好,但在处理非高斯噪声时会有较大的误差。
由于线性化过程的存在,EKF对于高度非线性和非高斯问题可能表现不佳。
此外,EKF对系统模型的准确性要求较高,较大的模型误差可能导致滤波结果的不准确性。
其次,UKF通过构造一组代表系统状态的Sigma点,通过非线性映射来近似非线性函数。
相较于EKF,UKF无需线性化系统模型,因此适用于更广泛的非线性系统。
UKF的优点是相对较好地处理了非线性系统和非高斯噪声,但在处理维数较高的问题时,计算开销较大。
最后,PF是一种基于粒子的滤波方法,通过使用一组代表系统状态的粒子来近似概率密度函数。
PF的优点是它可以处理非线性系统和非高斯噪声,并且在系统模型不准确或缺乏确定性时,具有较好的鲁棒性。
由于粒子的数量可以灵活调整,PF可以提供较高的估计精度。
然而,PF的计算开销较大,尤其在高维度的情况下。
综上所述,EKF、UKF和PF是三种常用的非线性滤波算法。
EKF适用于高斯噪声条件下的非线性问题,但对系统模型准确性要求高。
UKF适用于一般的非线性问题,但计算开销较大。
PF适用于非线性和非高斯噪声条件下的问题,并具有较好的鲁棒性,但在计算开销方面具有一定的挑战。
在实际应用中,我们应根据具体问题的性质和要求选择合适的算法。
比如,在低维情况下,EKF是一个可行的选择;在高维或非高斯噪声情况下,可以考虑使用UKF或PF算法。
ukf滤波算法范文UKF(Unscented Kalman Filter)是一种基于卡尔曼滤波的非线性滤波算法。
相比于传统的扩展卡尔曼滤波(EKF),UKF通过一种更好的方法来近似非线性系统的概率分布,从而提高了非线性滤波的精确度和鲁棒性。
UKF通过一种称为“无气味变换(unscented transform)”的方法来处理非线性函数。
该方法基于对概率分布的均值和协方差进行一系列的采样点选择,然后通过变换这些采样点来近似非线性函数的传播。
这些采样点被称为“Sigma点”,可以看作是真实系统状态在均值周围的一系列假设状态。
UKF的基本步骤如下:1.初始化:初始化系统状态和协方差矩阵。
2. 预测步骤(Prediction):- 通过生成Sigma点来近似系统状态的概率分布。
- 将Sigma点通过非线性函数进行变换,得到预测状态和预测协方差矩阵。
-计算预测状态的均值和协方差。
3. 更新步骤(Update):- 通过生成Sigma点来近似测量函数的概率分布。
- 将预测状态的Sigma点通过测量函数进行变换,得到预测测量和预测测量协方差矩阵。
-计算预测测量的均值和协方差。
-根据实际测量值和预测测量的概率分布,计算卡尔曼增益。
-更新预测状态和协方差。
UKF相比于EKF具有以下优势:1.不需要对非线性函数进行线性化。
EKF通过一阶泰勒展开来线性化非线性函数,这可能导致误差积累和不稳定性。
UKF通过采样点直接逼近非线性函数,避免了这个问题。
2.更好的估计准确度和收敛性。
UKF通过采样点的选择更好地逼近了真实概率分布,提高了滤波的准确度和收敛性。
3.适用于高维状态空间。
EKF在高维状态空间中存在计算复杂度高和数值不稳定的问题,而UKF则通过更好的采样点选择来解决了这个问题。
4.对初始条件不敏感。
UKF对初始条件的选择不太敏感,可以在一定程度上避免初始条件选择不当导致的滤波失效问题。
尽管UKF相比于EKF有许多优势,但它也存在一些缺点。
UKF 算法滤波性能分析高海南 3110038011一、仿真问题描述考虑一个在二维平面x-y 内运动的质点M ,其在某一时刻k 的位置、速度和M 在水平方向(x )作近似匀加速直线运动,垂直方向(y )上亦作近似匀加速直线运动。
两方向上运动具其中假设一坐标位置为(0,0)的雷达对M显然在笛卡尔坐标系下,该模型运动观测方程为非线性的。
我们根据雷达测量值使用UKF 算法对目标进行跟踪,并与EKF 算法结果进行比较。
二、问题分析1. UKF 滤波跟踪有协方差阵k R 。
ukf 算法步骤如下: (1) 计算σ点1|1i k k --ξ,依据1|1k k --x 和1|1k k --p 生成2n+1个σ点1|1i k k --ξ,0,1,2,2i n =。
在UT 变换时,取尺度参数01.0=α,0=κ,2=β。
(2) 计算σ点|ik k ξ,即()()|1|12|1|02|1||1||110(),0,1,2,2ˆˆˆi i k kk k k nm i k k i k k i n T c i ik k i k k k k k k k k k i i n ωωω---=----=⎧⎪==⎪⎪=⎨⎪⎪=--+⎪⎩∑∑ξf ξxξp ξx ξx Q (3) 计算σ点|1ˆk k -x|1k k -p 通过量测方程对k x 的传播,即(4) 计算输出的一步提前预测,即(5) 获得新的量测后,进行滤波更新:2. 扩展卡尔曼滤波算法分析(1)()()()(())()k k k k k k k k +=+⎧⎨=+⎩x f x w z h x v 的,定义k |1k ˆ=()k k k k-∂=∂x x xf x f xEKF 算法步骤如下:k 时刻的一步提前预测状态预测误差协方差阵为卡尔曼滤波增益为在k 时刻得到新的量测后,状态滤波的更新公式为状态滤波协方差矩阵为三、实验仿真与结果分析N=50,采样时间为t=0.5。
迹如图1所示。
7.3 UKF 滤波UKF 滤波,仍然采用高斯分布代替状态量的分布,不同的是,通过特别挑选的样本点来表示状态量。
这些样本点完全可以表示出GRV (高斯随机变量)的均值和方差。
即使经过非线性变换(任何非线性变换)后,也能逼近变换后的均值和方差,逼近精度可以达到二阶泰勒展开后的精度。
下面开始介绍UT 变换。
UT 变换:UT 变换是计算随机变量经过非线性变换后的统计特征的一种方法。
考虑非线性函数:(x)y f =,记x 的均值和方差为,x x P 。
现在需要计算y 的统计特性,即ˆ,y yP 。
可以采用下面的方法,构造一个矩阵,矩阵中包含21L +个simga 向量:0 1,,, 1,,2,i i i i L xx i L x i L L -ℵ=ℵ=+=ℵ=-=+ (1)其中:2()L L λακ=+-——为尺度参数;α——确定sigma 点在x 周围的分布范围,4101α-≤≤; κ——尺度参数,其值通常为3L -β——x 分布合作参数,x 分布若为高斯分布,则2β=为最优值。
i 列向量。
(矩阵均方根值可以通过进行柯西因式分解得到)构造x 的样本后,则对应于x 的每个样本点,可以计算对应的y 样本:i ()i y f =ℵ(2)通过y 样本,可以计算,y y P2(m)02(c)0()()Li ii LTy i i i i y W y P W y y y y ==≈≈--∑∑ (3)其中,权重系数i W 可以由下式确定:(m)0()20(m)()11,1,,22()c c i i W L W L W W i LL λλλαβλλ=+=+-++===+ (4)UT 变换不同于蒙特卡洛法,蒙特卡洛法需要产生大量的样本点,而UT 变换不需要。
UT 变换计算非线性函数的统计特性,对于输入为高斯输入的非线性系统,计算精度至少为3阶,对于输入不是高斯输入的非线性系统,计算精度至少可以达到2阶,如果适当选择,αβ 的值,计算精度可以达到3阶或以上。
ukf滤波算法UKF(Unscented Kalman Filter)滤波算法是一种非线性滤波算法,目的是通过逼近非线性系统的状态和测量值的真实分布来估计系统的状态。
相比于传统的Kalman滤波算法,UKF采用了Sigma点来近似系统状态和测量值的分布,从而可以处理非线性系统。
UKF算法的基本思想是使用一些特定的采样点(称为Sigma点)来近似系统状态和测量值的分布。
通过对这些Sigma点进行传播和更新,可以获得系统的状态估计值。
具体来说,UKF算法包含以下几个步骤:1.初始化:确定系统的状态和观测方程,以及状态协方差矩阵和测量噪声协方差矩阵。
2. Sigma点生成:根据系统状态的均值和协方差矩阵,生成一组代表系统状态的Sigma点。
通常,Sigma点的个数是通过经验确定的,一般取2n+1个,其中n是状态向量的维度。
3. Sigma点传播:根据系统的非线性状态方程,通过将Sigma点传播到下一个时刻,得到预测的Sigma点。
这一步骤的目的是在状态空间中对预测状态进行采样。
4.状态预测:利用预测的Sigma点计算出预测的系统状态的均值和协方差矩阵。
5. Sigma点更新:根据测量模型,通过对预测的Sigma点进行线性变换,得到预测的测量值Sigma点。
这一步骤的目的是在测量空间中对预测状态进行采样。
6.测量预测:利用预测的测量值Sigma点计算出预测的测量值的均值和协方差矩阵。
7.卡尔曼增益计算:根据预测的状态和测量值的均值和协方差矩阵,计算出卡尔曼增益。
8.状态更新:利用测量值对预测的状态进行修正,得到更新后的状态估计值和协方差矩阵。
通过以上步骤,UKF算法可以通过对状态和测量值的Sigma点进行传播和更新,逼近非线性系统的状态和测量值的真实分布,从而得到系统的状态估计值。
UKF算法的优点是可以处理非线性系统,并且不需要对系统进行线性化处理。
相比于传统的扩展卡尔曼滤波(EKF)算法,UKF算法更加精确和鲁棒。
基于UKF的滤波算法设计分析与应用共3篇基于UKF的滤波算法设计分析与应用1基于UKF的滤波算法设计分析与应用随着科技的发展,各行各业的数据处理越来越重要,滤波算法在这个过程中扮演了重要的角色。
本文将探讨一种基于UKF的滤波算法,包括其设计分析以及应用。
UKF是一种针对非线性系统的滤波算法,其全称为无迹卡尔曼滤波器(Unscented Kalman Filter)。
相比于卡尔曼滤波器,UKF更加适用于非线性、非高斯的系统,并且其运行速度更快、精度更高。
在UKF的运行过程中,需要进行两次变换,分别为sigma点变换和权值变换,其中sigma点变换将高斯分布的均值和协方差矩阵转换为一些离散的点,这些点在系统的非线性关系下具有良好的近似性质,权值变换则是将这些点的权重求出,最终依据这些点和权重来进行滤波。
在实际应用中,UKF滤波算法及其改进算法大量被应用在各种领域,比如机器人控制、导航、雷达信号处理等等。
本文将以信号处理方面为例,探讨在声音信号处理中,UKF滤波算法的设计分析与应用。
在声音信号处理中,我们常常需要对信号进行滤波以去除噪声,但是传统的滤波算法在处理非线性、非高斯信号时,精度不够高。
因此,UKF滤波算法便成了一个较好的选择。
在设计UKF滤波算法时,需要根据实际需求设置相关参数,比如系统的状态变量和测量变量,以及噪声的协方差矩阵。
在应用过程中,需要将待滤波的信号和上一时刻的状态量带入UKF滤波器进行处理,得到一个经过优化的滤波结果。
在实际应用中,UKF滤波算法在音频降噪方面表现突出,其通过取sigma点进行变换,避免了需要用到高斯假设的问题。
在汽车音响中,UKF滤波算法还可以用于提高音频效果,比如降低回声和噪声,提升车内音质。
此外,在语音识别领域中,UKF滤波算法可以有效提高语音识别的准确性,避免非线性噪声的影响。
需要注意的是,UKF滤波算法并不是万能的,其在处理高维系统时会有一定难度,而且高斯分布的假设仍然是不可取的。
无迹卡尔曼滤波算法
无迹卡尔曼滤波算法(Unscented Kalman Filter,UKF)是一种用于处理非线性系统的非参数滤波算法,它可以从观测和测量数据中推断隐藏状态的值。
UKF的基本思想是基于状态变量的状态和测量变量的观测,使用一系列加权的状态估计来预测未来状态,并通过观测和测量值来校正预测值。
UKF的优点在于它可以处理非线性系统,而不需要对系统进行线性化处理,从而可以更准确地估计隐藏状态变量,准确度比传统卡尔曼滤波算法更高。
UKF是一种经典的非线性滤波算法,它可以利用观测和测量值,以及相关的不确定性信息,以准确的方式估计隐藏状态变量。
它也可以用于自适应控制,机器人移动控制,机器视觉,自动驾驶等领域。
UKF可以用来模拟复杂的物理过程,估计不同的系统参数,以及更准确地预测未来的状态,这在许多领域,如自动驾驶汽车,智能机器人,机器视觉,航空航天,大气科学和精细化工等领域中都很有用。
总之,无迹卡尔曼滤波算法是一种用于处理非线性系统的有效滤波算法,能够从观测和测量数据中推断隐藏状态的值,准确度比传统卡尔曼滤波算法更高,在航空航天,机器人,机器视觉,控制系统,大气科学和精细化工等领域都得到了广泛应用。
无迹卡尔曼滤波调参无迹卡尔曼滤波(UKF)是一种常用的非线性滤波方法,用于估计系统的状态变量。
与传统的卡尔曼滤波不同,UKF通过引入一组离散采样点,以更好地逼近系统的非线性特性。
然而,UKF的性能很大程度上依赖于其参数的调整,下面将介绍一种调参方法。
在调参之前,我们首先需要了解UKF的几个关键参数。
首先是采样点的数量,通常选择与状态变量的维度相关的值。
其次是过程噪声和观测噪声的协方差矩阵,它们描述了系统中的不确定性和噪声。
最后是一个控制参数,称为增益参数,用于平衡系统的不确定性和噪声。
为了调整这些参数,我们可以采用试错的方法。
首先,选择一组初始参数,并使用这些参数运行UKF算法。
然后,根据滤波结果的性能评估参数的适用性。
如果滤波结果不理想,需要调整参数并再次运行算法。
调整参数时,可以采用以下策略。
首先,增加采样点的数量,以更好地逼近系统的非线性特性。
然后,根据系统的动态特性和噪声水平,适当调整过程噪声和观测噪声的协方差矩阵。
最后,通过调整增益参数,平衡系统的不确定性和噪声。
在调参过程中,需要注意以下几点。
首先,要根据具体应用场景和系统的特性,选择合适的参数范围。
其次,要根据滤波结果的性能,评估参数的适用性,并进行相应的调整。
最后,要注意参数之间的相互影响,避免过多调整导致系统性能的下降。
通过试错的方法和合理的参数选择,可以有效调参并提高无迹卡尔曼滤波算法的性能。
调参过程中,需要注意参数范围的选择,滤波结果的评估以及参数之间的相互影响。
通过不断优化参数,可以提高滤波算法的准确性和鲁棒性,从而更好地估计系统的状态变量。
UKF的算法介绍——作者,niewei120,nuaa参数说明:其中sigama点的获得方法如下:例外的一种描述方式其滤波算法表示如下:UKF 中各参数的影响:α确定了采样点与均值的远近程度,通常取0 到1 之间的正值,所取值越大则距离平均值越远,当其值为零时,UKF 的滤波效果相当于EKF;UT中的k 为一比例因子,通常取为0,当状态分布可以认为是高斯分布时,可取k = n - 3(n为状态向量x 的维数);β在正态分布时取2。
当Q 和R 过大时,UKF 的状态非常不稳定,有时甚至还会发散。
整个的matlab的程序如下:(1)sigama点的计算,输出为siagma点和权重值,以及sigama点的数量function [xPts, wPts, nPts] = scaledSymmetricSigmaPoints(x,P,alpha,beta,kappa)% % This function returns the scaled symmetric sigma point distribution.%% [xPts, wPts, nPts] = scaledSymmetricSigmaPoints(x,P,alpha,beta,kappa) %% Inputs:% x mean 状态量均值% P covariance 协方差% alpha scaling parameter 1% a决定万周围Sigma点的分布状态,调节其值能够使得高阶项影响最小% beta extra weight on zero'th point% 调节beta的值可以提高方差的精度,对于高斯分布,beta为2是最优的% kappa scaling parameter 2 (usually set to default 0)% 是一个比例因子kappa=alpha^2*(n+kappa)-n%% Outputs:% xPts The sigma points sigma点% wPts The weights on the points 所在点的权重% nPts The number of points sigma点的数目%%%% (C) 2000 Rudolph van der Merwe% (C) 1998-2000 S. J. Julier.% Number of sigma points and scaling terms sigma点的个数n = size(x(:),1);nPts = 2*n+1; % we're using the symmetric SUT 采用的是对称sui,此时的sigma点为2n+1% Recalculate kappa according to scaling parameters 根据标定参数重新计算kappa值kappa = alpha^2*(n+kappa)-n;% Allocate space 分配空间wPts=zeros(1,nPts);xPts=zeros(n,nPts);% Calculate matrix square root of weighted covariance matrix 计算根号下的协方差矩阵Psqrtm=(chol((n+kappa)*P))';% Array of the sigma points sigma点的阵列xPts=[zeros(size(P,1),1) -Psqrtm Psqrtm];% Add mean back inxPts = xPts + repmat(x,1,nPts);% Array of the weights for each sigma point sigma点的权重阵列wPts=[kappa 0.5*ones(1,nPts-1) 0]/(n+kappa);% Now calculate the zero'th covariance term weight 计算0处的协方差权重wPts(nPts+1) = wPts(1) + (1-alpha^2) + beta;(2)ukf滤波算法function[xEst,PEst,xPred,PPred,zPred,inovation,S,K]=ukf(xEst,PEst,U,Q,ffun,z,R,hfun,dt,alpha,beta,kappa) % TITLE : UNSCENTED KALMAN FILTER%% PURPOSE : This function performs one complete step of the unscented Kalman filter.%% SYNTAX : [xEst,PEst,xPred,PPred,zPred,inovation]=ukf(xEst,PEst,U,Q,ffun,z,R,hfun,dt,alpha,beta,kappa)% % INPUTS : - xEst : state mean estimate at time k k时刻卡尔曼状态量均值的预测值% - PEst : state covariance at time k k时刻协方差的预测值% - U : vector of control inputs 输入的控制量% - Q : process noise covariance at time k k时刻的状态噪声%% - z : observation at k+1 k+1时刻的观测量% - R : measurement noise covariance at k+1 k+1的测量噪声的协方差%% - ffun : process model function 状态方程% - hfun : observation model function 观测方程% - dt : time step (passed to ffun/hfun) 时间步长% - alpha (optional) : sigma point scaling parameter. Defaults to% 1.影响sigma向量围绕分布的扩展因子% - beta (optional) : higher order error scaling parameter.% Default to 0. 另一个规模因子% - kappa (optional) : scalar tuning parameter 1. Defaults to% 0. 先验分布的因子%% OUTPUTS : - xEst : updated estimate of state mean at time% k+1 k+1时刻的状态量的更新值% - PEst : updated state covariance at time k+1% k+1时刻的协方差的更新值% - xPred : prediction of state mean at time k+1% k+1时刻的状态量的预测值% - PPred : prediction of state covariance at time% k+1 k+1时刻的协方差预测值% - inovation : innovation vector 更新矢量% NOTES : The process model is of the form, x(k+1) = ffun[x(k),v(k),dt,u(k)]% where v(k) is the process noise vector. The observation model is% of the form, z(k) = hfun[x(k),w(k),dt,u(k)], where w(k) is the% observation noise vector.%% This code was written to be readable. There is significant% scope for optimisation even in Matlab.%% Process defaultsif (nargin < 10)alpha=1;end;if (nargin < 11)beta=0;end;if (nargin < 12)kappa=0;end;% Calculate the dimensions of the problem and a few useful% scalarsstates = size(xEst(:),1);observations = size(z(:),1);vNoise = size(Q,2); %过程噪声wNoise = size(R,2); %观测噪声noises = vNoise+wNoise;% Augment the state vector with the noise vectors.% Note: For simple, additive noise models this part% can be done differently to save on computational cost.% For details, contact Rudolph v.d. Merweif (noises)N=[Q zeros(vNoise,wNoise); zeros(wNoise,vNoise) R];PQ=[PEst zeros(states,noises);zeros(noises,states) N];xQ=[xEst;zeros(noises,1)];elsePQ=PEst;xQ=xEst;end;% Calculate the sigma points and there corresponding weights using the Scaled Unscented% Transformation[xSigmaPts, wSigmaPts, nsp] = scaledSymmetricSigmaPoints(xQ, PQ, alpha, beta, kappa); %计算sigma点的均值、权重和sigma点的数目% Duplicate wSigmaPts into matrix for code speedup 重复wSigmaPts使得矩阵运算速度提升wSigmaPts_xmat = repmat(wSigmaPts(:,2:nsp),states,1);wSigmaPts_zmat = repmat(wSigmaPts(:,2:nsp),observations,1);% Work out the projected sigma points and their means% This routine is fairly generic. The only thing to watch out for are% angular discontinuities. There is a standard trick for doing this -% contact me (Julier) for details!xPredSigmaPts = feval(ffun,xSigmaPts(1:states,:),repmat(U(:),1,nsp),xSigmaPts(states+1:states+vNoise,:),dt);%状态更新zPredSigmaPts = feval(hfun,xPredSigmaPts,repmat(U(:),1,nsp),xSigmaPts(states+vNoise+1:states+noises,:),dt);%观测更新% Calculate the mean. Based on discussions with C. Schaefer, form% is chosen to maximise numerical robustness.% - I vectorized this part of the code for a speed increase : RvdM 2000xPred = sum(wSigmaPts_xmat .* (xPredSigmaPts(:,2:nsp) - repmat(xPredSigmaPts(:,1),1,nsp-1)),2);%状态量的一步预测值zPred = sum(wSigmaPts_zmat .* (zPredSigmaPts(:,2:nsp) - repmat(zPredSigmaPts(:,1),1,nsp-1)),2);%观测量的一步预测值xPred=xPred+xPredSigmaPts(:,1);zPred=zPred+zPredSigmaPts(:,1);% Work out the covariances and the cross correlations. Note that% the weight on the 0th point is different from the mean% calculation due to the scaled unscented algorithm.exSigmaPt = xPredSigmaPts(:,1)-xPred; %sigma点状态值的误差ezSigmaPt = zPredSigmaPts(:,1)-zPred; %sigma点量测值的误差PPred = wSigmaPts(nsp+1)*exSigmaPt*exSigmaPt';%状态量的协方差PxzPred = wSigmaPts(nsp+1)*exSigmaPt*ezSigmaPt';%状态量与观测量的协方差S = wSigmaPts(nsp+1)*ezSigmaPt*ezSigmaPt';%观测量的协方差exSigmaPt = xPredSigmaPts(:,2:nsp) - repmat(xPred,1,nsp-1);%sigma点状态值的误差的更新ezSigmaPt = zPredSigmaPts(:,2:nsp) - repmat(zPred,1,nsp-1);%sigma点量测值的误差的更新PPred = PPred + (wSigmaPts_xmat .* exSigmaPt) * exSigmaPt';%状态量的协方差的更新S = S + (wSigmaPts_zmat .* ezSigmaPt) * ezSigmaPt';%观测量的协方差的更新PxzPred = PxzPred + exSigmaPt * (wSigmaPts_zmat .* ezSigmaPt)';%状态量与观测量的协方差的更新%%%%% MEASUREMENT UPDATE 量测更新% Calculate Kalman gain 计算卡尔曼增益K = PxzPred / S;% Calculate Innovation 计算测量误差inovation = z - zPred;% Update mean 更新状态量均值xEst = xPred + K*inovation;% Update covariance 更新协方差PEst = PPred - K*S*K';。
雷达仿真实验-无迹卡尔曼滤波一、摘要无迹卡尔曼滤波(UKF)是最近几年才提出来的一种新的滤波算法, 其基本思想是基于无迹变换( unscentedtransformation, UT), 即用固定数量的参数去近似一个高斯分布, 比近似任意的非线性函数或变换更容易。
其实现原理为: 在原先状态分布中按某一规则取一些点, 使这些点的均值和协方差等于原状态分布的均值和协方差; 将这些点代入非线性函数中, 相应得到非线性函数值点集, 通过这些点求取变换后的均值和协方差。
由于这样得到的函数值没有经过线性化、没有忽略其高阶项, 因而其均值和协方差的估计比EKF 方法要精确。
针对传统算法在解决纯方位目标运动分析时存在的有偏、收敛速度慢或发散等不足, 该文将无味卡尔曼滤波( UKF)算法应用到纯方位目标运动分析中。
由于UKF 在处理非线性问题时表现良好, 以及不需要计算Jacobian 矩阵或Hessian 矩阵, 实现起来比较方便。
根据无味变换的基本原理给出了滤波过程的具体计算步骤并进行了仿真计算。
理论分析和仿真结果表明,UKF 的性能相当于二阶高斯滤波器, 它在纯方位目标运动分析中的滤波精度、稳定性和收敛时间都优于传统算法。
二、原理介绍目前,扩展卡尔曼滤波虽然被广泛用于解决非线性系统的状态估计问题,但其滤波效果在很多复杂系统中并不能令人满意。
模型的线性化误差往往会严重影响最终的滤波精度,甚至导致滤波发散。
另外,在许多实际系统中,模型的线性化过程比较繁杂,而且也不容易得到。
最近,由Juiler 等人提出了一种无迹卡尔曼滤波 (Unscented Kalman Filter, UKF)。
UKF 对状态向量的PDF 进行近似化,表现为一系列选取好的采样点。
这些采样点完全体现了高斯密度的真实均值和协方差。
当这些点经过任何非线性系统的传递后,得到的后验均值和协方差都能够精确到二阶(即对系统的非线性强度不敏感)。
由于不需要对非线性系统进行线性化,并可以很容易地应用于非线性系统的状态估计,因此,UKF 方法在许多方面都得到了广泛应用,例如模型参数估计、人头或手的方位跟踪、飞行器的状态或参数估计、目标的方位跟踪等。