Documentation

# initcaekf

Create constant-acceleration extended Kalman filter from detection report

## Syntax

``filter = initcaekf(detection)``

## Description

example

````filter = initcaekf(detection)` creates and initializes a constant-acceleration extended Kalman `filter` from information contained in a `detection` report. For more information about the extended Kalman filter, see `trackingEKF`.```

## Examples

collapse all

Create and initialize a 3-D constant-acceleration extended Kalman filter object from an initial detection report.

Create the detection report from an initial 3-D measurement, (-200;30;0) , of the object position. Assume uncorrelated measurement noise.

```detection = objectDetection(0,[-200;-30;0],'MeasurementNoise',2.1*eye(3), ... 'SensorIndex',1,'ObjectClassID',1,'ObjectAttributes',{'Car',2});```

Create the new filter from the detection report and display its properties.

`filter = initcaekf(detection)`
```filter = trackingEKF with properties: State: [9x1 double] StateCovariance: [9x9 double] StateTransitionFcn: @constacc StateTransitionJacobianFcn: @constaccjac ProcessNoise: [3x3 double] HasAdditiveProcessNoise: 0 MeasurementFcn: @cameas MeasurementJacobianFcn: @cameasjac MeasurementNoise: [3x3 double] HasAdditiveMeasurementNoise: 1 ```

Show the filter state.

`filter.State`
```ans = 9×1 -200 0 0 -30 0 0 0 0 0 ```

Show the state covariance matrix.

`filter.StateCovariance`
```ans = 9×9 2.1000 0 0 0 0 0 0 0 0 0 100.0000 0 0 0 0 0 0 0 0 0 100.0000 0 0 0 0 0 0 0 0 0 2.1000 0 0 0 0 0 0 0 0 0 100.0000 0 0 0 0 0 0 0 0 0 100.0000 0 0 0 0 0 0 0 0 0 2.1000 0 0 0 0 0 0 0 0 0 100.0000 0 0 0 0 0 0 0 0 0 100.0000 ```

Initialize a 3D constant-acceleration extended Kalman filter from an initial detection report made from an initial measurement in spherical coordinates. If you want to use spherical coordinates, then you must supply a measurement parameter structure as part of the detection report with the `Frame` field set to `'spherical'`. Set the azimuth angle of the target to $4{5}^{\circ }$, the elevation to $2{2}^{\circ }$, the range to 1000 meters, and the range rate to -4.0 m/s.

```frame = 'spherical'; sensorpos = [25,-40,-10].'; sensorvel = [0;5;0]; laxes = eye(3);```

Create the measurement parameters structure. Set `'HasVelocity'` and `'HasElevation'` to `true`. Then, the measurement vector consists of azimuth, elevation, range, and range rate.

```measparms = struct('Frame',frame,'OriginPosition',sensorpos, ... 'OriginVelocity',sensorvel,'Orientation',laxes,'HasVelocity',true, ... 'HasElevation',true); meas = [45;22;1000;-4]; measnoise = diag([3.0,2.5,2,1.0].^2); detection = objectDetection(0,meas,'MeasurementNoise', ... measnoise,'MeasurementParameters',measparms)```
```detection = objectDetection with properties: Time: 0 Measurement: [4x1 double] MeasurementNoise: [4x4 double] SensorIndex: 1 ObjectClassID: 0 MeasurementParameters: [1x1 struct] ObjectAttributes: {} ```
`filter = initcaekf(detection);`

Display the state vector.

`disp(filter.State)`
``` 680.6180 -2.6225 0 615.6180 2.3775 0 364.6066 -1.4984 0 ```

## Input Arguments

collapse all

Detection report, specified as an `objectDetection` object.

Example: `detection = objectDetection(0,[1;4.5;3],'MeasurementNoise', [1.0 0 0; 0 2.0 0; 0 0 1.5])`

## Output Arguments

collapse all

Extended Kalman filter, returned as a `trackingEKF` object.

## Algorithms

• The function computes the process noise matrix assuming a one-second time step and an acceleration-rate standard deviation of 1 m/s3.

• You can use this function as the `FilterInitializationFcn` property of a `multiObjectTracker` object.