2026a

# cvmeasjac


匀速运动测量函数的雅可比

函数库: TyRadar

# 语法

measurementjac = cvmeasjac(state)
measurementjac = cvmeasjac(state, frame)
measurementjac = cvmeasjac(state, frame, sensorpos)
measurementjac = cvmeasjac(state, frame, sensorpos, sensorvel)
measurementjac = cvmeasjac(state, frame, sensorpos, sensorvel, laxes)
measurementjac = cvmeasjac(state, measurementParameters)

# 说明

measurementjac = cvmeasjac(state) 返回直角坐标系中等速卡尔曼滤波器运动模型的测量雅可比。state 指定跟踪筛选器的当前状态。示例


measurementjac = cvmeasjac(state, frame) 还指定了测量坐标系,frame。示例


measurementjac = cvmeasjac(state, frame, sensorpos) 还指定了传感器位置 sensorpos。示例


measurementjac = cvmeasjac(state, frame, sensorpos, sensorvel) 还指定了传感器速度 sensorvel。


measurementjac = cvmeasjac(state, frame, sensorpos, sensorvel, laxes) 还指定了本地传感器轴的方 laxes。


measurementjac = cvmeasjac(state, measurementParameters) 指定测量参数 measurementParameters。示例

# 示例

直角坐标系下匀速物体的雅可比测量矩阵

定义物体在二维匀速运动中的状态。状态是每个空间维度上的位置和速度。在矩形坐标中构建测量雅各布。

using TyRadar
state = [1; 10; 2; 20]
jacobian = cvmeasjac(state)
jacobian = 3×4 Matrix{Float64}:
 1.0  0.0  0.0  0.0
 0.0  0.0  1.0  0.0
 0.0  0.0  0.0  0.0
球坐标系下匀速物体的雅可比测量矩阵

定义物体在二维匀速运动中的状态。状态是每个维度上的位置和速度。计算与球面坐标相关的测量雅各布。

using TyRadar
state = [1; 10; 2; 20]
measurementjac = cvmeasjac(state, "spherical")
measurementjac = 4×4 Matrix{Float64}:
 -22.9183       0.0       11.4592       0.0
   0.0          0.0        0.0          0.0
   0.447214     0.0        0.894427     0.0
   7.10543e-16  0.447214   1.42109e-15  0.894427
转移球坐标系下的匀速物体的测量雅可比矩阵

定义物体在二维匀速运动中的状态。状态是每个空间维度上的位置和速度。计算以 (5; -20; 0) m 为中心的球面坐标的测量雅各布。

using TyRadar
state = [1; 10; 2; 20]
sensorpos = [5; -20; 0]
measurementjac = cvmeasjac(state, "spherical", sensorpos)
measurementjac = 4×4 Matrix{Float64}:
 -2.52101    0.0       -0.458366  0.0
  0.0        0.0        0.0       0.0
 -0.178885   0.0        0.98387   0.0
  0.590322  -0.178885   0.107331  0.98387
利用测量参数创建匀速物体的雅可比测量矩阵

定义物体在二维匀速运动中的状态。该状态包括每个空间维度上的位置和速度。测量值是相对于位于 (20; 40; 0) m 处的框架的球面坐标。

using TyRadar
using TyBase: eye
state2d = [1; 10; 2; 20]
sensorpos = [20, 40, 0]
frame = "spherical"
sensorvel = [0; 5; 0]
laxes = eye(3)
measurementjac = cvmeasjac(state2d, frame, sensorpos, sensorvel, laxes)
measurementjac = 4×4 Matrix{Float64}:
  1.20623     0.0       -0.603113    0.0
  0.0         0.0        0.0         0.0
 -0.447214    0.0       -0.894427    0.0
  0.0470751  -0.447214  -0.0235376  -0.894427

将测量参数放入一个结构中,并使用替代语法。

measparm = MeasurementParameters(;
    Frame=frame, OriginPosition=sensorpos, OriginVelocity=sensorvel, Orientation=laxes
)
measurementjac = cvmeasjac(state2d, measparm)
measurementjac = 4×4 Matrix{Float64}:
  1.20623     0.0       -0.603113    0.0
  0.0         0.0        0.0         0.0
 -0.447214    0.0       -0.894427    0.0
  0.0470751  -0.447214  -0.0235376  -0.894427

# 输入参数

state - 卡尔曼滤波器状态向量
实值 2N 元素向量

卡尔曼滤波器的匀速运动状态向量,指定为实值的 2N 元素列向量,其中 N 是运动的空间自由度数。状态应为笛卡尔状态。对于每个空间运动自由度,状态向量的形式如表所示。

空间维度 状态矢量结构
1-D [x; vx]
2-D [x; vx; y; vy]
3-D [x; vx; y; vy; z; vz]

例如,x 代表 x 坐标,vx 代表 x 方向的速度。如果运动模型是一维的,则沿 y 轴和 z 轴的数值假定为零。如果运动模型为 2-D,则沿 z 轴的值假定为零。位置坐标单位为 m ,速度坐标单位为 m/s。

示例: [5; .1; 0; -.2; -3; .05]

数据类型: Float64

frame - 测量输出 frame
"rectangular"(默认) | "spherical"

测量输出 frame,指定为 "rectangular" 或 "spherical"。当 frame 为 "rectangular" 时,测量结果由 x、y 和 z 笛卡尔坐标组成。指定为 "spherical" 时,测量结果由方位角、仰角、测距和测距率组成。

数据类型: String

sensorpos - 传感器位置
[0;0;0](默认) | 实值 3 × 1 列向量

传感器相对于导航 frame 的位置,指定为实值 3 × 1 列向量。单位为 m 。

数据类型: Float64

sensorvel - 传感器速度
[0;0;0](默认) | 实值 3 × 1 列向量

传感器相对于导航 frame 的速度,指定为实值 3 × 1 列向量。单位为 m/s。

数据类型: Float64

laxes - 本地传感器坐标轴
[1,0,0;0,1,0;0,0,1](默认) | 3 × 3 正交矩阵

本地传感器坐标轴,指定为 3 × 3 的正交矩阵。每一列分别指定本地 x 轴、y 轴和 z 轴相对于导航 frame 的方向。也就是说,该矩阵是从全局 frame 到传感器 frame 的旋转矩阵。

数据类型: Float64

measurementParameters - 测量参数
structure | 结构数组

以结构或结构数组形式指定的测量参数。结构的字段包括:

字段 说明 示例
Frame 用于报告测量结果的 frame,指定为其中一个值:

  • "Rectangular" - 以矩形坐标报告检测结果;

  • "Spherical"- 以球形坐标报告检测结果。

"spherical"
OriginPosition frame 原点相对于父 frame 的位置偏移,以 [x y z] 实值向量形式指定。 [0 0 0]
OriginVelocity frame 原点相对于父 frame 的速度偏移,以 [vx vy vz] 实值向量形式指定。 [0 0 0]
Orientation frame 旋转矩阵,指定为 3 × 3 实值正交矩阵。 [1 0 0; 0 1 0; 0 0 1]
HasAzimuth 逻辑标量,表示测量是否包含方位角。

当 frame 字段为 "Rectangular" 时,此字段无关。
1
HasElevation 逻辑标量,表示测量是否包含仰角信息。对于在矩形 frame 中报告的测量值,如果 HasElevation 为 false,则报告的测量值假定仰角为 0 度。 1
HasRange 表示测量中是否包含量程的逻辑标量。

当 frame 为 "Rectangular" 时,此字段无关。
1
HasVelocity 逻辑标量,表示报告的检测是否包含速度测量。对于在矩形 frame 中报告的测量值,如果 HasVelocity 为假,则测量值以 [x y z] 的形式报告。如果 HasVelocity 为 true,则以 [x y z vx vy vz] 的形式报告测量结果。对于在球形 frame 中报告的测量结果,如果 HasVelocity 为 true,则测量结果包含测距速率信息。 1

如果只想执行一个坐标变换,例如从主体 frame 到传感器 frame 的变换,则只需指定一个测量参数结构。如果要执行多个坐标变换,则需要指定一个测量参数结构阵列。

数据类型: struct

# 输出参数

measurementjac - 度量雅可比
实值 3 × N 矩阵 | 实值 4 × N 矩阵

测量雅可比矩阵,指定为实数 3 × N 或 4 × N 矩阵。N 是状态向量的维数。第一个维度和意义取决于 frame 参数的值。

frame 测量雅可比
"rectangular" 测量值 [x; y; z] 相对于状态向量的雅可比。测量矢量是相对于局部坐标系的。坐标单位为 m 。
"spherical" 测量向量 [az; el; r; rr] 相对于状态向量的雅可比。测量矢量分量指定对象相对于本地传感器坐标系的方位角、仰角、范围和测距率。角度单位是度。量程单位为 m ,量程速率单位为 m/s。

# 另请参阅

ctmeasjac | cvmeas