gmphd

高斯混合(GM)博士滤波器

描述

gmphd对象是一个过滤器,实现了概率假设密度(PHD)使用混合高斯分量。该滤波器假设目标状态是高斯的,并使用高斯分量的混合来表示这些状态。你可以使用gmphd过滤器来跟踪扩展的对象或点目标。在跟踪,在每个传感器扫描至多一个拘留和扩展对象中的点对象的回报可以返回每个传感器扫描多次检测。

你可以直接创建一个gmphd过滤。您也可以初始化gmphd过滤器使用trackerPHD通过指定FilterInitializationFcn的属性trackingSensorConfiguration。您可以使用提供的initcvgmphd,initctgmphd,initcagmphdinitctrectgmphd初始化函数。或者,您可以创建自己的初始化函数。

创建

描述

博士= gmphd创建一个gmphd过滤器的默认属性值。

博士= gmphd(国家,stateCovariances)允许指定的高斯分布的状态和相应的状态协方差在密度每个组件。stateCovariances设置状态StateCovariances所述过滤器的性能。

例子

博士= gmphd(状态,stateCovariances,名称,值)还允许您使用一个或多个名称-值对为筛选器指定属性。将每个属性名括在引号中。

属性

全部展开

在过滤器中的每个组件的状态,指定为P——- - - - - -N矩阵,其中P状态的维数是N是组成部分的数量。该矩阵的每列对应于一个部件的状态。的默认值状态是6×2矩阵,其中,所述第一列中的元素都是0,并且第二列的元素都是1。

数据类型:|

状态估计滤波器中各分量的误差协方差,指定为P——- - - - - -P——- - - - - -N阵列,其中P状态的维数是N是组成部分的数量。每一页(P——- - - - - -P矩阵)对应于各分量的协方差矩阵。的默认值StateCovariances是一个6×6×2的数组,其中每个页面(6×6矩阵)是一个单位矩阵。

数据类型:|

状态转换函数,指定为函数句柄。这个函数计算时间步长的状态向量k从时间步长的状态向量k1。该函数还可以包含噪声值。

  • 如果HasAdditiveProcessNoise真正,指定使用下列语法之一的函数:

    x (k) = transitionfcn (x (k - 1))
    X(K)= transitionfcn(X(K-1),dT)的
    哪里X(k)的状态估计是在什么时候kdT是时间步长。

  • 如果HasAdditiveProcessNoise,指定使用下列语法之一的函数:

    X(K)= transitionfcn(X(K-1),W(K-1))
    x (k) = transitionfcn (x (k - 1), w (k - 1), dT)
    哪里X(k)的状态估计是在什么时候k,w (k)是在时间过程噪声kdT是时间步长。

例子:@constacc

数据类型:function_handle

状态转换函数的雅可比矩阵,指定为函数句柄。此函数具有与状态转换函数相同的输入参数。

  • 如果HasAdditiveProcessNoise真正,指定使用这些语法之一的雅可比功能:

    JX(K)= statejacobianfcn(X(k))的
    Jx (k) = statejacobianfcn (x (k), dT)
    哪里X(k)的是国家在时间k,dT是时间步长,还是Jx (k)表示状态转换函数相对于状态的雅可比矩阵。雅可比矩阵是aP——- - - - - -P矩阵在时间k,在那里P是状态的尺寸。

  • 如果HasAdditiveProcessNoise,指定使用这些语法之一的雅可比功能:

    (Jx (k) (Jw (k)] = statejacobianfcn (x (k), w (k))
    (Jx (k) (Jw (k)] = statejacobianfcn (x (k), w (k), dT)
    哪里w (k)是一个在时间过程噪声的 - 元素矢量k。与加性过程噪声的情况不同,非加性噪声情况下的过程噪声向量不需要具有与状态向量相同的维数。

    Jw (k)表示P——- - - - - -预测状态相对于过程噪声元素的雅可比矩阵,其中P是状态的尺寸。

如果未指定,则在每次调用时通过数值差分计算雅可比矩阵预测函数。这种计算会增加处理时间和数值精度。

例子:@constaccjac

数据类型:function_handle

过程噪声协方差:

  • HasAdditiveProcessNoise真正中,指定过程噪声协方差为实值标量或正定P——- - - - - -P矩阵。P是状态矢量的维数。如果指定为标量,基质是的倍数P——- - - - - -P单位矩阵。

  • HasAdditiveProcessNoise中,指定过程噪声协方差作为——- - - - - -矩阵。是处理噪声矢量的大小。您必须指定ProcessNoise在任何调用之前预测目标函数。

例子:[1.0 0.05;0.05 2]

可选择将过程噪声作为添加剂进行建模,指定为真正要么。当这个属性是真正,过程噪声被添加到状态向量。否则,噪声被引入到状态转换函数。

例子:真正

指示组件是否具有范围,指定为真正要么。将此属性设置为真正如果过滤器的目的是跟踪扩展对象。扩展对象可以产生多于一个的测量每个传感器扫描。将此属性设置为如果过滤器仅用于跟踪点目标。

例子:真正

来自扩展对象的测量的起源,具体如下:

  • “中心”-过滤器假设测量来自目标的平均状态。这种方法适用于当状态没有对目标的范围建模时,即使目标可能生成多个度量。

  • '程度'- 过滤器假定测量不是在目标的平均状态居中。为了计算效率,期望的测量通常计算为测量模型函数中指定的报告的测量结果的函数。

需要注意的是该功能的设置MeasurementFcnMeasurementJacobianFcn对于不同“中心”'程度'选项。参见MeasurementFcnMeasurementJacobianFcn更多细节。

依赖关系

若要启用此属性,请设置HasExtent财产'真正'

数据类型:

混合物中各成分的标签,用1-by-表示N非负整数的行向量。N是混合物中组分的数量。每个组件只能有一个标签,但是多个组件可以共享同一个标签。

例子:(1 2 3)

数据类型:|

在该混合物中各组分的重量,指定为1逐N正实值的行向量。N是混合物中组分的数量。各组分的重量以相同的顺序作为所述给定标签财产。

例子:(1.1 0.82 1.1)

数据类型:|

探测,指定为aD的 - 元素单元阵列objectDetection对象。可以直接创建的检测,也可以从传感器对象的输出,例如获得的检测radarSensor,monostaticRadarSensor,irSensorsonarSensor

数据类型:|

度量模型函数,指定为函数句柄。此函数指定从状态到度量的转换。根据HasExtentMeasurementOrigin属性,所述测量模型函数需要被不同地指定:

  1. HasExtent, 要么HasExtent真正MeasurementOrigin“中心”。在这两个例子中,

    • 如果HasAdditiveMeasurementNoise真正,指定使用下列语法之一的函数:

      z = measurementfcn (x)
      Z = measurementfcn(X,参数)
      其中,P——- - - - - -N矩阵x估计的高斯状态是什么时候kX(:,i)的代表在混合物个状态组分。的——- - - - - -N矩阵z是相应的测量,并且Z(:,i)的表示的度量结果组件。参数MeasurementParameters在所提供的objectDetections中设置检测财产。

    • 如果HasAdditiveMeasurementNoise,指定使用下列语法之一的函数:

      z = measurementfcn (x, v)
      Z = measurementfcn(X,V,参数)
      哪里v是一个R-三维测量噪声矢量。

  2. HasExtent真正MeasurementOrigin'程度'。在这种情况下,预期的测量来自目标的范围,并依赖于探测的实际分布:

    • 如果HasAdditiveMeasurementNoise真正使用指定的函数:

      z = measurementfcn (x,检测)
      其中,P——- - - - - -N矩阵x估计的高斯状态是什么时候kX(:,i)的代表在混合物个状态组分。检测是一个单元格数组吗objectDetection对象和z是预期的度量。请注意,z (:, i, j)必须返回基于?的预期度量值个状态组分和jthobjectDetection检测

    • 如果HasAdditiveMeasurementNoise使用指定的函数:

      Z = measurementfcn(X,V,检测)
      哪里v是一个R-三维测量噪声矢量。

HasExtent MeasurementOrigin 测量功能 请注意
NA

HasAdditiveMeasurementNoise 语法
真正

z = measurementfcn (x)

z = measure rementfcn (x,para)

z = measurementfcn (x, v)

Z = measurementfcn(X,V,对位)

X(:,i)的代表在混合物个状态组分。Z(:,i)的表示的度量结果组件。

真正 “中心”
真正 '程度'

HasAdditiveMeasurementNoise 语法
真正 z = measurementfcn (x,检测)
Z = measurementfcn(X,V,检测)

X(:,i)的代表在混合物个状态组分。z (:, i, j)必须返回基于?的预期度量值个状态组分和jthobjectDetection检测

数据类型:function_handle

测量函数的雅可比矩阵,指定为函数句柄。根据HasExtentMeasurementOrigin性质,测量雅可比功能需要被不同地指定:

  1. HasExtent, 要么HasExtent真正MeasurementOrigin“中心”。在这两种情况下:

    • 如果HasAdditiveMeasurmentNoise真正,指定使用这些语法之一的雅可比功能:

      JMX = measjacobianfcn(x)的
      JMX = measjacobianfcn(X,参数)
      其中,P- 元素矢量x是一个状态分量吗kJmx是个——- - - - - -P测量函数关于状态的雅可比矩阵。为测量的尺寸。参数MeasurementParameters在所提供的objectDetections中设置检测财产。

    • 如果HasAdditiveMeasurmentNoise,指定使用这些语法之一的雅可比功能:

      [JMX,JMV] = measjacobianfcn(X,V)
      [Jmx, Jmv] = measjacobianfcn (x, v,参数)
      哪里v是一个R维测量噪声向量,并且Jmv是个——- - - - - -R雅可比相对于测量噪声的测量功能。

  2. HasExtent真正MeasurementOrigin'程度'。在这种情况下,预期的测量源于目标的范围,并依赖于探测的实际分布。测量雅可比函数必须支持以下两种语法之一:万博1manbetx

    • 如果HasAdditiveMeasurmentNoise真正,用

      JMX = measjacobianfcn(X,检测)
      哪里x是否有一个状态估计组件k检测被一组检测的定义为的单元阵列objectDetection对象。Jmx表示——- - - - - -P——- - - - - -D测量函数关于状态的雅可比矩阵。为测量的尺寸,P是状态的维数,D是多少objectDetection对象检测

    • 如果HasAdditiveMeasurmentNoise,用

      [Jmx, Jmv] = measjacobianfcn (x, v,检测)
      哪里v是一个R维测量噪声向量,并且Jmv是个——- - - - - -R——- - - - - -D雅可比相对于测量噪声的测量功能。

    请注意,Jmx (:,:, j)必须定义对应于?的状态雅可比矩阵jthobjectDetection检测Jmv (:,:, j)定义了对应于的测量噪声雅可比矩阵jthobjectDetection检测

HasExtent MeasurementOrigin 测量雅可比矩阵函数 请注意
NA

HasAdditiveMeasurementNoise 语法
真正

JMX = measjacobianfcn(x)的

Jmx = measjacobianfcn (x, para)

[JMX,JMV] = measjacobianfcn(X,V)

[Jmx, Jmv] = measjacobianfcn (x, v, para)

x只是混合物中的一个高斯分量。
真正 “中心”
真正 '程度'

HasAdditiveMeasurementNoise 语法
真正 z = measurementfcn (x,检测)
Z = measurementfcn(X,V,检测)

Jmx (:,:, j)定义对应于雅可比的状态jthobjectDetection检测Jmv (:,:, j)定义了对应于的测量噪声雅可比矩阵jthobjectDetection检测

数据类型:function_handle

选择模型测量噪声作为添加剂,指定为真正要么。当这个属性是真正,测量噪声被添加到状态向量。否则,噪声被引入到测量功能。

例子:真正

最大探测次数gmphd过滤器可作为输入,指定为一个正整数。

例子:50

数据类型:|

组件的最大数目gmphd可维护滤波器,指定为正整数。

数据类型:|

对象的功能

预测 预测PHD滤波的概率假设密度
correctUndetected 正确的博士没有检测假设的滤波器
正确的 正确的博士筛选与检测
可能性 检测单元与密度成分之间关联的对数似然
附加 添加两个博士过滤器对象
合并 在密度合并部件博士过滤器
规模 在密度组分的规模权重
修剪 通过移除所选组件修剪滤波器
labeledDensity 保持部件带有指定标签的ID
extractState 从抽取目标的状态估计博士过滤器
克隆 创建重复的博士过滤器对象

例子

全部收缩

创建一个过滤器与两个三维恒定速度的组成部分。一个分量的初始状态是[0;0;0;0;0;0;0]。另一个分量的初始状态是[1;0;1;0;1;0]。每个分量初始化时,位置协方差等于1,速度协方差等于100。

状态= [零(6,1)[1; 0; 1; 0; 1; 0]];COV1 = DIAG([1 100 1 100 1 100]);协方差=猫(3,COV1,COV1);博士学位= gmphd(州,协方差,'StateTransitionFcn',@constvel,“StateTransitionJacobianFcn”@constveljac,“MeasurementFcn”@cvmeas,“MeasurementJacobianFcn”@cvmeasjac,“ProcessNoise”,眼(3),'HasAdditiveProcessNoise',假);

预测滤波器提前0.1时间步长。

预测(博士,0.1);

定义三个检测使用ojbectDetection

rng (2019);检测=细胞(3,1);检测{1}= objectDetection(0,[1;1;1] + randn(3,1));检测{2}= objectDetection(0,[0;0;0] + randn(3,1));检测{3}= objectDetection(0,[4;5;5] + randn(3,1));博士学位。Detections = detections;

计算每个检测的可能性。对于点目标滤波器,检测的划分是不必要的,每个检测占用一个单元。因此,detectionIndices是单位矩阵。结果检测1和2的可能性比检测3的可能性高,因为它们更接近组件。

detectionIndices =逻辑(眼(3));detectionIndices logLikelihood =可能性(博士)
logLikelihood =2×3-5.2485 -4.7774 -22.8899 -4.5171 -5.0008 -17.3973

更正与经缩放的似然性的过滤器。

lhood = EXP(对数似然);lhood = lhood./sum(lhood,2);正确(博士,detectionIndices,lhood);

合并各组分与合并阈值等于1。

合并(博士,1);

提取阈值等于0.5的状态估计。

minWeight = 0.5;targetStates = extractState(博士,minWeight);[TS1,TS2] = targetStates.State;

可视化的结果。

%提取测量。d =[检测{}):;测量= [d.Measurement];绘制测量值和估计值。图()plot3(测量(1,:),测量(2,:),测量(3,:),“x”,'MarkerSize'10,“MarkerEdgeColor”,“b”);保持;plot3(壹空间(1),壹空间(3),壹空间(5),“罗”);保持;plot3 (ts2 (1), ts2 (3), ts2 (5),“罗”);包含(“x”)ylabel('Y')zlabel ('Z')保持;传说(“检测项”,'组件')

参考

Vo, B. -T, W. K. Ma。"高斯混合概率假设密度滤波器"IEEE TRANSACTIONS ON信号处理,第54卷,第11期,第4091-4104页,2006年。

[2] Granstrom, Karl, Christian Lundquist和Omut Orguner。”使用高斯混合PHD滤波器扩展目标跟踪。《IEEE航空航天与电子系统汇刊》第48期。4 (2012):3268 - 3286。

扩展功能

介绍了R2019b