若由本篇博文增加关注,就解封本篇博文的VIP权限哈,记得在下方留言哈
这周我详细把动态规划的步骤又过了几遍,这为这周的DP-TBD编程打了很好的基础。
- 首先,你要明确DP-TBD具有状态这一大块,和观测这一大块。这是十分重要的,因为在编程时,需要分为这两部分进行编程。因此,我们要了解DP-TND的系统模型与量测模型。
- 假设雷达是在x-y这个二维平面上进行量测的。且假设目标是进行匀速直线的。
- 这时候,描述一个目标,需要x轴坐标:px,k;x轴方向的速度vx,k;y轴坐标:py,k;y轴方向的速度vy,k;这四个数据。
故目标的状态变量可以表示为: x k = [ p x , k , v x , k , p y , k , v y , k ] \mathbf{x}_{k}=\left[p_{x, k}, v_{x, k}, p_{y, k}, v_{y, k}\right] xk=[px,k,vx,k,py,k,vy,k]’,看清楚了,那有个转置。 - 在动态规划中,我们假设目标状态转移是符合一阶马尔可夫模型。又因为在状态发生转移过程中也会加入噪声,我们假设噪声的统计模型符合正态分布,
那么,状态转移方程为: x k ∣ x k − 1 ∼ N ( . ; F x k − 1 , Q ) \mathbf{x}_{k} | \mathbf{x}_{k-1} \sim N\left(.; F \mathbf{x}_{k-1}, Q\right) xk∣xk−1∼N(.;Fxk−1,Q)
这个表示均值为Fx k−1,而协方差是Q的高斯分布。 - F称为状态转移矩阵,其表达式为二阶单位矩阵与 ( 1 T 0 1 ) \left(\begin{array}{ll}1 & T \\ 0 & 1\end{array}\right) (10T1)的直积,这个直积不是矩阵的简单相乘,不知道的自己查一下。最后 F = [ 1 T 0 0 0 1 0 0 0 0 1 T 0 0 0 1 ] F=\left[\begin{array}{llll}1 & T & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & T \\ 0 & 0 & 0 & 1\end{array}\right] F=⎣⎢⎢⎡1000T100001000T1⎦⎥⎥⎤
- Q称为过程噪声协方差矩阵,其表达式为:k*二阶单位矩阵与
(
T
3
/
3
T
2
/
2
T
2
/
2
T
)
\left(\begin{array}{cc}T^{3} / 3 & T^{2} / 2 \\ T^{2} / 2 & T\end{array}\right)
(T3/3T2/2T2/2T)的直积,这个k是控制噪声强度的,可以表示为噪声能量谱密度。
到这里,在状态这一部分的叙述结束了,接下来要叙述量测的部分。
- 假设每次量测都是有着Nx×Ny个分辨单元的二维像素点平面,那么其可以表示为 z k = { z k ( i , j ) } , i = 1 , ⋯ , N x , j = 1 , ⋯ , N y z_{k}=\left\{z_{k}(i, j)\right\}, i=1, \cdots, N_{x}, j=1, \cdots, N_{y} zk={zk(i,j)},i=1,⋯,Nx,j=1,⋯,Ny
- 这个zk (i,j)的统计特性为
z
k
(
i
,
j
)
=
{
w
k
(
i
,
j
)
A
k
+
w
k
(
i
,
j
)
z _ { k } ( i , j ) = \left\{ \begin{array} { c } { w _ { k } ( i , j ) } \\ { A _ { k } + w _ { k } ( i , j ) } \end{array} \right.
zk(i,j)={wk(i,j)Ak+wk(i,j)
其中,wk(i,j)为回波噪声,一般服从高斯分布,因此,在本项目中,我采用的是服从标准正态分布,不要忘了转化为标准正态分布的公式哈。而Ak则是目标信号,其幅值恒定,相位在0到2Π上均匀分布。
至此,我们已经将DP-TBD的有关模型叙述完毕。
4.现在我来叙述一下DP-TBD的大致算法流程,算法是编程的主心骨,要想最终编程能够实现,我们必须要熟悉整个算法流程。本项目采用的阶段值函数是状态转移误差与阶段量测误差之积取对数,同时是单目标检测前跟踪。当然你可以选取其他的值函数。 - 初始化:此处的初始化要分别对于状态,量测,值函数进行初始化;
- 递推累积:从第二帧一直到最后一帧,进行值函数的累计,每一帧累积后均选取值函数最大值作为阶段值函数。
- 进行门限判决:将上一步中最后得到的值函数,进行门限判决,找出高于门限的相应值函数。
- 航迹回溯:由上一步得到的值函数来反向进行航迹回溯。
最后,代码编辑部分这周只进行了一小部分,所以代码编辑的详细步骤就放在下周的文章中。