Main Content


Singer acceleration trackingEKF initialization



filter = initsingerekf(detection) initializes a Singer acceleration extended Kalman filter (trackingEKF) based on the detection input.


collapse all

For a rectangular frame, the Singer acceleration measurement function, singermeas, assumes a position measurement in 3-D space. Define a position measurement [1;3;0] that has measurement noise [1 0.2 0; 0.2 2 0; 0 0 1].

detection = objectDetection(0, [1;3;0],...
    'MeasurementNoise', [1 0.2 0; 0.2 2 0; 0 0 1]);

Use the initsingerekf function to create a trackingEKF filter using the measurements defined above.

ekf = initsingerekf(detection);

Verify the values of the state and measurement noise.

filterState = ekf.State
filterState = 9×1


filterMeasureNoise = ekf.MeasurementNoise
filterMeasureNoise = 3×3

    1.0000    0.2000         0
    0.2000    2.0000         0
         0         0    1.0000

Input Arguments

collapse all

Object detection, specified as an objectDetection object. You can specify the following fields for the MeasurementParameters property of the objectDetection object. When you do not specify a field, the default value is used.

FieldDescriptionDefault Value

Frame used to report measurements, specified as one of these values:

  • 'rectangular' — Detections are reported in rectangular coordinates.

  • 'spherical' — Detections are reported in spherical coordinates.

OriginPositionPosition offset of the origin of the frame relative to the parent frame, specified as an [x y z] real-valued vector.[0 0 0]
OriginVelocityVelocity offset of the origin of the frame relative to the parent frame, specified as a [vx vy vz] real-valued vector.[0 0 0]
OrientationFrame rotation matrix, specified as a 3-by-3 real-valued orthonormal matrix.[1 0 0; 0 1 0; 0 0 1]
HasAzimuthLogical scalar indicating if azimuth is included in the measurement.1
HasElevationLogical scalar indicating if elevation is included in the measurement. For measurements reported in a rectangular frame, and if HasElevation is false, the reported measurements assume 0 degrees of elevation.1
HasRangeLogical scalar indicating if range is included in the measurement.1
HasVelocityLogical scalar indicating if the reported detections include velocity measurements. For measurements reported in the rectangular frame, if HasVelocity is false, the measurements are reported as [x y z]. If HasVelocity is true, measurements are reported as [x y z vx vy vz].0
IsParentToChildLogical scalar indicating if Orientation performs a frame rotation from the parent coordinate frame to the child coordinate frame. When IsParentToChild is false, then Orientation performs a frame rotation from the child coordinate frame to the parent coordinate frame.0

Output Arguments

collapse all

Extended Kalman filter, returned as a trackingEKF object.


  • You can use the initsingerekf function as the FilterInitializationFcn property of trackingEKF.

  • When creating the Kalman filter, the function configures the process noise assuming a target maneuver time constant, τ = 20s and a unit target maneuver standard deviation, σ = 1 m/s2. The function uses the singerProcessNoise function.

  • The Singer process noise assumes an invariant time step and additive process noise.


[1] Singer, Robert A. "Estimating optimal tracking filter performance for manned maneuvering targets." IEEE Transactions on Aerospace and Electronic Systems 4 (1970): 473-483.

[2] Blackman, Samuel S., and Robert Popoli. "Design and analysis of modern tracking systems." (1999).

[3] Li, X. Rong, and Vesselin P. Jilkov. "Survey of maneuvering target tracking: dynamic models." Signal and Data Processing of Small Targets 2000, vol. 4048, pp. 212-235. International Society for Optics and Photonics, 2000.

Extended Capabilities

Introduced in R2020b