retroCorrect
描述
的retroCorrect
纠正国家估计和协方差函数使用一个按顺序测量(OOSM)。使用这个函数,指定MaxNumOOSMSteps
过滤器是一个正整数的性质。在使用这个函数之前,你必须使用retrodict
函数成功retrodict当前状态的时间OOSM。
(
纠正与OOSM测量过滤器retroCorrState
,retroCorrCov
)= retroCorrect (过滤器
,z
)z
并返回修正后的状态和状态协方差。函数的值变化状态
和StateCovariance
过滤器对象的属性retroCorrState
和retroCorrCov
,分别。如果过滤器
是一个trackingIMM
对象,函数也改变了ModelProbabilities
财产的过滤器
。
___= retroCorrect (___,
指定的测量参数的测量measparams
)z
。
谨慎
您可以使用该语法只有在指定的过滤器
是一个trackingEKF
或trackingIMM
对象。
例子
使用Retrodiction改善滤波估计
使用三维恒定速度生成一个真理轨迹模型。
rng (2021)%的可重复的结果initialState = [1;0.4;2;0.3;1;-0.2);% [x;vx;y;v;z;款)dt = 1;%时间步步骤= 10;sigmaQ = 0.2;%对过程噪声标准差州=南(6步骤);州(:1)= initialState;为2 = 2:步骤w = sigmaQ * randn (3,1);州(:,(二)= constvel(州(:,ii-1), w, dt);结束
生成位置测量的真理。
positionSelector = [1 0 0 0 0 0;0 0 1 0 0 0;0 0 0 0 0 1);格= 0.2;%为测量噪声标准差位置= positionSelector *;措施=职位+格* randn(步骤3);
在x - y坐标图显示真理和度量。
图绘制(职位(1:),职位(2:)“罗”,“DisplayName”,“真理”);持有在;:情节(措施(1),(2,:)“软”,“DisplayName”,“措施”);包含(“x”(m))ylabel (“y (m)”)传说(“位置”,“西北”)
假设,在第九步,测量延迟,因此不可用。
delayedMeasure =措施(:,9);措施(:9)=南;
构建一个扩展卡尔曼滤波器(EKF)基于恒定速度模型。
估计=南(6步骤);协方差=南(6 6步骤);估计(:1)= positionSelector ' *措施(:1);协方差(::1)= 1 *眼(6);过滤器= trackingEKF (@constvel @cvmeas,…“状态”(:1)估计,…“StateCovariance”协方差(:,:1),…“HasAdditiveProcessNoise”假的,…“ProcessNoise”眼睛(3),…“MeasurementNoise”主席sigmaR ^ 2 *眼(3),…“MaxNumOOSMSteps”3);
一步通过卡尔曼滤波器的测量。
为2 = 2:步骤预测(过滤器);如果~任何(isnan(衡量(:,(二)))%跳过如果不可用正确的(过滤器、措施(:,(二));结束估计(:,(二)= filter.State;协方差(:,:,(二)= filter.StateCovariance;结束
显示估计的结果。
情节(估计(1:),估计(3:)“gd”,“DisplayName”,“估计”);
Retrodict第九步,正确的当前估计通过按顺序在第九步测量。
[retroState, retroCov] = retrodict(过滤器,1);[retroCorrState, retroCorrCov] = retroCorrect(过滤器,delayedMeasure);
第九步retrodicted状态。
情节([retroState (1); retroCorrState (1)]。…[retroState (3), retroCorrState (3)),…“kd”,“DisplayName”,“Retrodicted”)
您可以使用的行列式最终状态协方差由retrodiction看到改进。一个较小的协方差行列式表示改善状态估计。
detWithoutRetrodiciton =检波器(协方差(:,:,结束)
detWithoutRetrodiciton = 8.5281 e-06
detWithRetrodiciton =侦破(retroCorrCov)
detWithRetrodiciton = 7.9590 e-06
RetrodicttrackingIMM
过滤器
考虑一个目标以一个恒定的速度移动模型。最初的立场是在[100;0,1米。速度是1;1;0]米每秒。
rng (2022)%的可重复的结果initialPosition = [100;0;1);速度= [1;1;0);
假设测量噪声协方差矩阵
measureCovaraince =诊断接头([1;1;0.1]);
生成一个测量每一秒的持续时间5秒。
测量=南(3、5);dt = 1;为i = 1:5测量(:,i) = initialPosition +我* dt *速度+ sqrt (measureCovaraince) * randn (3,1);结束
假设在第四个第二是按顺序测量。只有五秒后可用。
oosm =测量(:,4);测量(:,4)=南;
创建一个trackingIMM
过滤器与真正的初始位置使用initekfimm
函数。设置OOSM步骤五的最大数量。
检测= objectDetection (0, initialPosition);imm = initekfimm(检测);imm。米axNumOOSMSteps = 5;
更新过滤器与可用的测量。
为我= 1:5预测(imm) dt);如果~ isnan(测量(:,i))正确(imm,测量(:,我));结束结束
显示当前状态,状态协方差的对角线,概率模型。
disp (“= = = = = = = = = = = = = = =之前Retrodiction = = = = = = = = = = = = = = = ")
= = = = = = = = = = = = = = =之前Retrodiction = = = = = = = = = = = = = = =
disp (当前状态:“+换行符+ num2str (imm.State '))
当前状态:106.7626 1.56623 6.15405 1.233862 1.000669 -0.1441939
disp (“对角元素的状态协方差:“+换行符+ num2str(诊断接头(imm.StateCovariance) '))
对角元素状态协方差:0.91884 1.1404 0.91861 1.2097 0.91569 1.1156
disp (“模型probabities:”+换行符+ num2str (imm.ModelProbabilities '))
模型probabities: 0.51519 0.0016296 0.48318
Retrodict过滤器与OOSM retrocorrect过滤器。
[retroState, retroCov] = retrodict (imm, 1);oosm retroCorrect (imm);
retrodiction后显示结果。从结果,状态协方差的大小减少OOSM后应用,表明retrodiction使用OOSM可以改进估计。
disp (“= = = = = = = = = = = = = = = Retrodiction后= = = = = = = = = = = = = = = ")
= = = = = = = = = = = = = = = Retrodiction后= = = = = = = = = = = = = = =
disp (当前状态:“+换行符+ num2str (imm.State '))
当前状态:106.6937 1.621093 6.124384 1.261032 1.117407 -0.2363415
disp (“对角元素的状态协方差:“+换行符+ num2str(诊断接头(imm.StateCovariance) '))
对角元素状态协方差:0.80678 1.0429 0.81196 1.0962 0.80353 1.0231
disp (“模型probabities:”+换行符+ num2str (imm.ModelProbabilities '))
模型probabities: 0.5191 0.00034574 0.48055
输入参数
过滤器
- - - - - -跟踪滤波器的对象
trackingKF
对象|trackingEKF
对象|trackingIMM
跟踪滤波器对象,指定为一个trackingKF
,trackingEKF
,或trackingIMM
对象。
z
- - - - - -乱序执行测量
P1实值向量
乱序执行测量,指定为一个P1实值向量,P是测量的大小。
measparams
- - - - - -测量参数
结构|数组的结构
测量参数,指定为一个结构或一个结构数组。结构传递到指定的测量功能MeasurementFcn
财产的跟踪滤波器。结构可以包含这些字段:
场 | 描述 |
框架 |
枚举类型指示帧用来测量报告。当检测报告使用直角坐标系统,集 |
OriginPosition |
位置偏移起源的孩子相对于父帧,表示为一个3×1的向量。 |
OriginVelocity |
速度抵消起源的孩子相对于父帧,表示为一个3×1的向量。 |
取向 |
帧定位,指定为3 x3的实值正交坐标系旋转矩阵。旋转的方向取决于 |
IsParentToChild |
指示是否一个逻辑标量 |
HasElevation |
一个逻辑标量表示如果测量包括高程。在一个矩形框架测量报告,如果 |
HasAzimuth |
一个逻辑标量表示如果测量包括方位。 |
HasRange |
一个逻辑标量表示如果测量包含范围。 |
HasVelocity |
一个逻辑标量表示,如果检测报告包括速度测量。在一个矩形框架测量报告,如果 |
输出参数
retroCorrState
——国家retrodiction纠正
米1实值向量
国家由retrodiction纠正,作为一个返回米1实值向量,米过滤器的大小状态。
retroCorrCov
——由retrodiction状态协方差修正
米——- - - - - -米实值positive-define矩阵
由retrodiction状态协方差修正,作为一个返回米——- - - - - -米实正定矩阵。
更多关于
Retrodiction和Retro-Correction
假设当前时间步的过滤器k。在时间k的后验状态和状态协方差滤波器x(k|k),P(k|k),分别。一个按顺序测量(OOSM)在时间τ现在到达时间k。找到l这样τ是这两个之间的时间步连续时间的步骤:
在哪里l是一个正整数,l<k。
在retrodiction步骤中,当前状态和状态协方差k预计回到OOSM时。您可以获得retrodicted状态通过传播状态转换函数落后。对于一个线性状态转换函数,retrodicted状态表示为:
在哪里F(τ,k)是时间步中落后的状态转移矩阵k对时间步τ。获得retrodicted协方差为:
在哪里问(k,τ)是过程噪声协方差矩阵,
在这里,P(k|k-l)是先天状态协方差k预测协方差信息的时间k-l,
在第二步中,retro-correction、当前状态和使用OOSM状态协方差修正。得到修正后的状态为:
在哪里z(τ)是OOSM时间τ和W(k,τ),滤波器增益,表示为:
您可以获得相当于测量时间τ基于状态估计k,z(τ|k),如
在这些表达式,R(τ)是测量OOSM和协方差矩阵:
在哪里H(τ)是测量雅可比矩阵。
得到修正后的协方差为:
在哪里
交互式多模型(IMM)过滤器(trackingIMM
),每个member-filter retrodicted OOSM时相同的方式上面描述的过程。在获得retrodicted状态和测量,每个member-filter retro-corrects的当前状态过滤如上所述。
与常规滤波器相比,IMM滤波器需要维护每个member-filter的概率。在retrodiction步骤中,每个模型的概率是第一retrodicted使用概率转移矩阵。基于OOSM,过滤器可以获得每个使用retrodicted member-filter状态的可能性,过滤概率,和测量。然后,使用每个过滤器的可能性,转移概率矩阵,和模型概率在当前时间,每个过滤器的过滤获得更新后的模型概率在当前时间k。更多细节,请参阅[2]。
引用
[1]Bar-Shalom Y。,Huimin Chen, and M. Mallick. “One-Step Solution for the Multistep out-of-Sequence-Measurement Problem in Tracking.”IEEE航空航天和电子系统40,不。1(2004年1月):27-37。
[2]Bar-shalom, y和惠民。“IMM估计含测量。”IEEE航空航天和电子系统第41卷。。1、2005年1月,页90 - 98。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
在代码生成,在调用过滤器,你不能改变它的MaxNumOOSMSteps
财产。
版本历史
介绍了R2021b
Beispiel offnen
您有一张这本Beispiels geanderte版本。您这本Beispiel麻省理工学院古老Anderungen offnen吗?
MATLAB-Befehl
您有窗户的链接geklickt,汪汪汪der diesem MATLAB-Befehl entspricht:
在das MATLAB-Befehlsfenster Fuhren您窝Befehl军队Eingabe来自。浏览器unterstutzen MATLAB-Befehle。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。