retrodict
描述
的retrodict
函数执行retrodiction,预测状态估计和协方差落后的时间按顺序测量(OOSM)。使用这个函数,指定MaxNumOOSMSteps
过滤器是一个正整数的性质。使用这个函数后,使用retroCorrect
或retroCorrectJPDA
函数使用OOSM更新当前状态估计。
(
retrodicts过滤时间retroState
,retroCov
)= retrodict (过滤器
,dt
)dt
,并返回retrodicted状态和状态协方差。函数值也变化状态
和StateCovariance
过滤器对象的属性retroState
和retroCov
,分别。此外,如果过滤器
是一个trackingIMM
,函数也改变了ModelProbabilities
财产的过滤器
。
(___,
还返回retrodiction的状态retrodictStatus
)= retrodict (___)retrodictStatus
作为真正的
成功的和假
失败。retrodiction过程可能会失败如果长度的状态存储在指定的过滤器(历史MaxNumOOSMSteps
财产的过滤器)不包括指定的请求时间dt
输入。
例子
使用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
对象
跟踪滤波器对象,指定为一个trackingKF
,trackingEKF
,或trackingIMM
对象。
dt
- - - - - -Retrodiction时间
负的整数
Retrodiction时间,以秒为单位指定为一个负的整数。指定retrodiction时间之间的时差的时间OOSM拍摄和当前的时间。
输出参数
retroState
——Retrodicted状态
米1实值向量
Retrodicted状态,作为一个返回米1实值向量,米过滤器的大小状态。
retroCov
——Retrodicted状态协方差
米——- - - - - -米实正定矩阵
Retrodicted状态协方差,作为一个返回米——- - - - - -米实正定矩阵。
retrodictStatus
——Retrodiction状态
真正的
|假
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国家网站不优化的访问你的位置。