文档

initctekf

从检测报告中创建常数回合率扩展卡尔曼滤波器

语法

Filter = initctekf(检测)

描述

例子

过滤器= initctekf (检测创建并初始化一个常数回合率扩展卡尔曼滤波器,过滤器,根据检测报告中的信息,检测

例子

全部折叠

从初始检测报告中创建并初始化一个二维常数回合率扩展卡尔曼滤波器对象。

根据物体位置的初始二维测量(-250,-40)创建检测报告。假设测量噪声不相关。

通过添加a将测量扩展到三维z- 0的分量。

检测= objectDetection(0,[-250;-40;0],“MeasurementNoise”, 2.0 *眼(3),...“SensorIndex”, 1“ObjectClassID”, 1“ObjectAttributes”, {“汽车”2});

根据检测报告创建新的筛选器并显示筛选器属性。

Filter = initctekf(检测)
filter = trackingEKF with properties: State: [5x1 double] StateCovariance: [5x5 double] StateTransitionFcn: @constturn StateTransitionJacobianFcn: @constturnjac ProcessNoise: [5x5 double] HasAdditiveProcessNoise: 1 MeasurementFcn: @ctmeas MeasurementJacobianFcn: @ctmeasjac MeasurementNoise: [3x3 double] HasAdditiveMeasurementNoise: 1

显示状态。

过滤器。状态
ans =5×1-250 0 -40 0 0

显示状态协方差矩阵。

过滤器。状态Covariance
ans =5×52 00 00 0 100 00 00 0 2 00 00 0 100 00 00 0 100

初始化二维恒定转动速率扩展卡尔曼滤波器从最初的检测报告,从初始测量球坐标。如果要使用球坐标,则必须提供测量参数结构作为检测报告的一部分框架字段设置为“球”.设置目标的方位角为,射程为1000米,射程速率为-4.0米/秒。

帧=“球”;Sensorpos = [25,-40,-10].';传感器= [0;5;0];松弛=眼睛(3);

创建测量参数结构。集“HasElevation”.然后,测量包括方位角、距离和距离率。

Measparms = struct(“帧”框架,“OriginPosition”sensorpos,...“OriginVelocity”sensorvel,“定位”宽松的,“HasVelocity”,真的,...“HasElevation”、假);Meas = [45;1000;-4];Measnoise = diag([3.0,2,1.0].^2);检测= objectDetection(0,meas,“MeasurementNoise”...measnoise,“MeasurementParameters”measparms)
detection = objectDetection with properties: Time: 0 Measurement: [3x1 double] measuentnoise: [3x3 double] SensorIndex: 1 ObjectClassID: 0 measuentparameters: [1x1 struct] ObjectAttributes: {}
Filter = initctekf(检测);

过滤状态向量。

disp (filter.State)
732.1068 -2.8284 667.1068 -2.8284 0

输入参数

全部折叠

检测报告,指定为objectDetection类对象。

例子:detection = objectDetection(0,[1;4.5;3],' measuentnoise ', [1.0 0 0;0 2.0 0;0 0 1.5])

输出参数

全部折叠

扩展卡尔曼滤波器,指定为atrackingEKF类对象。

算法

  • 该函数计算过程噪声矩阵假设一秒时间步长。该函数假设加速度标准偏差为1米/秒2,转弯速率加速度标准偏差为1°/s2

  • 您可以使用此函数作为FilterInitializationFcn的属性multiObjectTracker对象。

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

在R2017a中引入

这个话题有用吗?