## Description

The `radarDataGenerator` System object™ generates detection or track reports of targets. You can specify the detection mode of the sensor as monostatic, bistatic, or electronic support measure (ESM) through the `DetectionMode` property. You can use `radarDataGenerator` to simulate clustered or unclustered detections with added random noise, and also generate false alarm detections. You can fuse the generated detections with other sensor data and track objects using a `radarTracker` object. You can also output tracks directly from the `radarDataGenerator` object. To configure whether targets are output as clustered detections, unclustered detections, or tracks, use the `TargetReportFormat` property. You can add `radarDataGenerator` to a `Platform` and then use the radar in a `radarScenario`.

Using a single-exponential model, the radar computes range and elevation biases caused by propagation through the troposphere. A range bias means that measured ranges are greater than the line-of-sight range to the target. Elevation bias means that the measured elevations are above their true elevations. Biases are larger when the line-of-sight path between the radar and target passes through lower altitudes because the atmosphere is thicker at these altitudes. See References for more details.

To generate radar detection and track reports:

1. Create the `radarDataGenerator` object and set its properties.

2. Call the object with arguments, as if it were a function.

## Creation

### Syntax

``rdr = radarDataGenerator``
``rdr = radarDataGenerator(id)``
``rdr = radarDataGenerator(___,scanConfig)``
``rdr = radarDataGenerator(___,Name,Value)``

### Description

````rdr = radarDataGenerator` creates a monostatic radar sensor that reports clustered detections and uses default property values.```

example

````rdr = radarDataGenerator(id)` sets the SensorIndex property to the specified `id`.```

example

````rdr = radarDataGenerator(___,scanConfig)` is a convenience syntax that creates a monostatic radar sensor and sets its scanning configuration to a predefined `scanConfig`, in addition to any input arguments from previous syntaxes. You can specify `scanConfig` as `'No scanning'`, `'Raster'`, `'Rotator'`, `'Sector'`, or `'Custom'`. See Convenience Syntaxes for more details on these configurations. ```

example

````rdr = radarDataGenerator(___,Name,Value)` sets Properties using one or more name-value pairs. Enclose each property name in quotes. For example, `radarDataGenerator('TargetReportFormat','Tracks','FilterInitializationFcn',@initcvkf)` creates a radar sensor that generates track reports using a tracker initialized by a constant-velocity linear Kalman filter.```

## Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the `release` function unlocks them.

If a property is tunable, you can change its value at any time.

Sensor Identification

Unique sensor identifier, specified as a positive integer. Use this property to distinguish between detections or tracks that come from different sensors in a multisensor system. Specify a unique value for each sensor. If you do not update `SensorIndex` from the default value of `0`, then the radar returns an error at the start of simulation.

Data Types: `double`

Sensor update rate, in hertz, specified as a positive real scalar. The reciprocal of the update rate must be an integer multiple of the simulation time interval. The radar generates new reports at intervals defined by this reciprocal value. Any sensor update requested between update intervals contains no detections or tracks.

Data Types: `double`

Sensor Mounting

Mounting location of the radar on the platform, in meters, specified as a 1-by-3 real-valued vector of the form [x y z]. This property defines the coordinates of the sensor along the x-axis, y-axis, and z-axis relative to the platform body frame.

Data Types: `double`

Mounting rotation angles of the radar, in degrees, specified as a 1-by-3 real-valued vector of the form [zyaw ypitch xroll]. This property defines the intrinsic Euler angle rotation of the sensor around the z-axis, y-axis, and x-axis with respect to the platform body frame, where:

• zyaw, or yaw angle, rotates the sensor around the z-axis of the platform body frame.

• ypitch, or pitch angle, rotates the sensor around the y-axis of the platform body frame. This rotation is relative to the sensor position that results from the zyaw rotation.

• xroll, or roll angle, rotates the sensor about the x-axis of the platform body frame. This rotation is relative to the sensor position that results from the zyaw and ypitch rotations.

These angles are clockwise-positive when looking in the forward direction of the z-axis, y-axis, and x-axis, respectively.

Data Types: `double`

Scanning Settings

Scanning mode of the radar, specified as `'Mechanical'`, `'Electronic'`, `'Mechanical and electronic'`, `'No scanning'`, or `'Custom'`.

`ScanMode`Purpose
`'Mechanical'`The sensor scans mechanically across the azimuth and elevation limits specified by the MechanicalAzimuthLimits and MechanicalElevationLimits properties. The scan direction increments by the radar field of view angle between dwells.
`'Electronic'`The sensor scans electronically across the azimuth and elevation limits specified by the ElectronicAzimuthLimits and ElectronicElevationLimits properties. The scan direction increments by the radar field of view angle between dwells.
`'Mechanical and electronic'`The sensor mechanically scans the antenna boresight across the mechanical scan limits and electronically scans beams relative to the mechanical angles across the electronic scan limits. The total field of regard scanned in this mode is the combination of the mechanical and electronic scan limits. The scan direction increments by the field of view angle between dwells.
`'No scanning'`The sensor beam points along the antenna boresight defined by the MountingAngles property.
`'Custom'`The sensor points the beam in the direction specified by the `LookAngle` property.

Example: `'No scanning'`

Maximum mechanical azimuth scan rate, specified as a nonnegative scalar in degrees per second. This property sets the maximum scan rate at which the sensor can mechanically scan in azimuth. The sensor sets its scan rate to step the radar mechanical angle by the field of view. If the required scan rate exceeds the maximum scan rate, the maximum scan rate is used.

#### Dependencies

To enable this property, set the `ScanMode` property to `'Mechanical'` or `'Mechanical and electronic'`.

Data Types: `double`

Maximum mechanical elevation scan rate, specified as a nonnegative scalar in degrees per second. The property sets the maximum scan rate at which the sensor can mechanically scan in elevation. The sensor sets its scan rate to step the radar mechanical angle by the field of view. If the required scan rate exceeds the maximum scan rate, the maximum scan rate is used.

#### Dependencies

To enable this property, set the `ScanMode` property to `'Mechanical'` or `'Mechanical and electronic'`. Also, set the `HasElevation` property to `true`.

Data Types: `double`

Mechanical azimuth scan limits, specified as a two-element real-valued vector of the form [azMin azMax], where azMinazMax and azMaxazMin ≤ 360. The limits define the minimum and maximum mechanical azimuth angles, in degrees, the sensor can scan from its mounted orientation.

Example: `[-10 20]`

#### Dependencies

To enable this property, set the `ScanMode` property to `'Mechanical'` or ```'Mechanical and electronic'```.

Data Types: `double`

Mechanical elevation scan limits, specified as a two-element real-valued vector of the form [elMin elMax], where –90 ≤ elMinelMax ≤ 90. The limits define the minimum and maximum mechanical elevation angles, in degrees, the sensor can scan from its mounted orientation.

Example: `[-50 20]`

#### Dependencies

To enable this property, set the `ScanMode` property to `'Mechanical'` or `'Mechanical and electronic'`. Also, set the `HasElevation` property to `true`.

Data Types: `double`

Electronic azimuth scan limits, specified as a two-element real-valued vector of the form [azMin azMax], where -90 ≤ azMinazMax ≤ 90. The limits define the minimum and maximum electronic azimuth angles, in degrees, the sensor can scan from its mounted orientation.

Example: `[-50 20]`

#### Dependencies

To enable this property, set the `ScanMode` property to `'Electronic'` or `'Mechanical and electronic'`.

Data Types: `double`

Electronic elevation scan limits, specified as a two-element real-valued vector of the form [elMin elMax], where -90 ≤ elMinelMax ≤ 90. The limits define the minimum and maximum electronic elevation angles, in degrees, the sensor can scan from its mounted orientation.

Example: `[-50 20]`

#### Dependencies

To enable this property, set the `ScanMode` property to `'Electronic'` or `'Mechanical and electronic'`. Also, set the `HasElevation` property to `true`.

Data Types: `double`

Current mechanical scan angle of radar, specified as a two-element real-valued vector of the form [az el]. az and el represent the mechanical azimuth and elevation scan angles, respectively, relative to the mounted angle of the radar on the platform.

Data Types: `double`

Current electronic scan angle of radar, specified as a two-element real-valued vector of the form [az el]. az and el represent the electronic azimuth and elevation scan angles, respectively, relative to the current mechanical angle.

Data Types: `double`

This property is read-only unless `ScanMode` is specified as `'Custom'`.

Current look angle of the sensor, specified as a two-element real-valued vector of the form [az el]. az and el represent the azimuth and elevation look angles, respectively. Look angle is a combination of the mechanical angle and electronic angle, depending on the `ScanMode` property.

 `ScanMode` `LookAngle` `'Mechanical'` `MechnicalAngle` `'Electronic'` `ElectronicAngle` `'Mechanical and electronic'` `MechnicalAngle` + `ElectronicAngle` `'No scanning'` `[0 0]` `'Custom'` `LookAngle` can be set to point the radar beam to a specific azimuth and elevation.

#### Dependencies

To enable setting this property, set the `ScanMode` property to `'Custom'`. Otherwise, this property is read-only.

Shape of the main beam of the two-way antenna pattern, specified as `'Rectangular'` or `'Gaussian'`.

• When set to `'Rectangular'`, the main beam is assumed to have an idealized rectangular shape with a uniform antenna gain within the half-power beamwidth and a zero gain outside the half-power beamwidth.

• When set to `'Gaussian'`, the main beam is approximated by an ideal Gaussian antenna pattern with no side lobes. The azimuth and the elevation half-power beamwidths are determined by the corresponding values of the `AzimuthResolution` and `ElevationResolution` properties.

The radar main beam is assumed to have the specified beam shape only within the effective field of view. Outside the effective field of view, the two-way antenna pattern is assumed to be zero. When `BeamShape` is set to `'Gaussian'`, the field of view in the azimuth and the elevation directions is assumed to be twice the corresponding half-power beamwidth. When `BeamShape` is set to `'Rectangular'`, the azimuth and the elevation fields of view are set to be equal to the corresponding half-power beamwidth. When `HasScanLoss` is `true`, the azimuth and the elevation half-power beamwidths are adjusted to include beam broadening due to scanning off-broadside. In this case, the half-power beamwidths are determined by the corresponding values of the `EffectiveAzimuthResolution` and `EffectiveElevationResolution` properties.

#### Dependencies

To enable this property, set the `ScanMode` property to `'Custom'`.

Data Types: `char` | `string`

Current effective azimuthal and elevation fields of view, specified as 2-element vector, `[azfov, elfov]`.

• When `BeamShape` is set to `'Gaussian'`, ```EffectiveFieldOfView=2*[AzimuthResolution ElevationResolution]```.

• When `BeamShape` is set to `'Rectangular'`, ```EffectiveFieldOfView=[AzimuthResolution ElevationResolution]```.

When `HasScanLoss` is `true`, `EffectiveFieldOfView` includes the effect of beam broadening when the radar is pointed to an off-broadside angle. In that case it is determined by the corresponding values of the `EffectiveAzimuthResolution` and `EffectiveElevationResolution` properties. Units are in degrees.

Example: `[3,4]`

#### Dependencies

To enable this property, set the `ScanMode` property to `'Custom'`.

Data Types: `double`

Current effective azimuthal resolution of the sensor, specified as a scalar. When `HasScanLoss` is `true`, `EffectiveAzimuthResolution` includes the effect of beam broadening when the radar is pointed to an off-broadside angle. At boresight `EffectiveAzimuthResolution` equals to the value of the `AzimuthResolution` property. `EffectiveAzimuthResolution` equals `AzimuthResolution` for all look angles when the `HasScanLoss` property is set to `false`.

#### Dependencies

To enable this property, set the `ScanMode` property to `'Custom'`.

Current effective elevation resolution of the sensor, specified as a scalar. When `HasScanLoss` is `true`, `EffectiveElevationResolution` includes the effect of beam broadening when the radar is pointed to an off-broadside angle. At boresight `EffectiveElevationResolution` equals to the value of the `ElevstionResolution` property. `EffectiveElevationResolution` equals `ElevstionResolution` for all look angles when the `HasScanLoss` property is set to `false`.

#### Dependencies

To enable this property, set the `ScanMode` property to `'Custom'`.

Detection Reporting Specifications

Detection mode, specified as `'Monostatic'`, `'ESM'`, or `'Bistatic'`. When set to `'Monostatic'`, the sensor generates detections from reflected signals originating from a collocated radar emitter. When set to `'ESM'`, the sensor operates passively and can model ESM and (radar warning receiver) RWR systems. When set to `'Bistatic'`, the sensor generates detections from reflected signals originating from a separate radar emitter. For more details on detection mode, see Radar Sensor Detection Modes.

Example: `'Monostatic'`

Enable the radar to scan in elevation and measure target elevation angles, specified as a logical `0` (`false`) or `1` (`true`). Set this property to `true` to model a radar sensor that can estimate target elevation.

Data Types: `logical`

Enable the radar to measure target range rates, specified as a logical `0` (`false`) or `1` (`true`). Set this property to `true` to model a radar sensor that can measure range rates from target detections.

Data Types: `logical`

Enable the addition of noise to radar sensor measurements, specified as a logical `1` (`true`) or `0` (`false`). Set this property to `true` to add noise to the radar measurements. Otherwise, the measurements have no noise. Even if you set `HasNoise` to `false`, the sensor reports the measurement noise covariance matrix specified in the `MeasurementNoise` property of its object detection outputs.

When the sensor reports tracks, the sensor uses the measurement covariance matrix to estimate the track state and state covariance matrix.

Data Types: `logical`

Enable creating false alarm radar measurements, specified as a logical `1` (`true`) or `0` (`false`). Set this property to `true` to report false alarms. Otherwise, the radar reports only actual detections.

Data Types: `logical`

Enable occlusion from extended objects, specified as a logical `1` (`true`) or `0` (`false`). Set this property to `true` to model occlusion from extended objects. The sensor models two types of occlusion, self occlusion and inter-object occlusion. Self occlusion occurs when one side of an extended object occludes another side. Inter-object occlusion occurs when one extended object stands in the line of sight of another extended object or a point target. Note that both extended objects and point targets can be occluded by extended objects, but a point target cannot occlude another point target or an extended object.

Data Types: `logical`

Enable ghost targets in target reports, specified as a logical `1` (`true`) or `0` (`false`). The sensor generates ghost targets for multipath propagation paths up to three reflections between transmission and reception of the radar signal. The sensor only generates ghost targets when the `DetectionMode` property is set to `'Monostatic'`.

Data Types: `logical`

Enable range ambiguities, specified as a logical `0` (`false`) or `1` (`true`). Set this property to `true` to enable sensor range ambiguities. In this case, the sensor does not resolve range ambiguities, and target ranges beyond the MaxUnambiguousRange are wrapped into the interval ```[0, MaxUnambiguousRange]```. When `false`, the sensor reports targets at their unambiguous range.

Data Types: `logical`

Enable range-rate ambiguities, specified as a logical `0` (`false`) or `1` (`true`). Set this property to `true` to enable sensor range-rate ambiguities. When `true`, the sensor does not resolve range rate ambiguities. Target range rates beyond the MaxUnambiguousRadialSpeed are wrapped into the interval ```[0, MaxUnambiguousRadialSpeed]```. When `false`, the sensor reports targets at their unambiguous range rates.

#### Dependencies

To enable this property, set the `HasRangeRate` property to `true`.

Data Types: `logical`

Enable the INS input argument, which passes the current estimate of the sensor platform pose to the sensor, specified as a logical `0` (`false`) or `1` (`true`). When `true`, pose information is added to the `MeasurementParameters` structure of the reported detections or the `StateParameters` structure of the reported tracks, based on the `TargetReportFormat` property. Pose information enables tracking and fusion algorithms to estimate the state of the target in the scenario frame.

Data Types: `logical`

Enable scan loss due to electronic scanning off-broadside, specified as false or true. Scan loss models the effect of antenna array beam broadening when the radar points to an off-broadside angle.

#### Dependencies

To enable this property, set the `ScanMode` property to `'Custom'`.

Data Types: `logical`

Source of the maximum for the number of detection or track reports, specified as one of these options:

• `'Auto'` — The sensor reports all detections or tracks.

• `'Property'` — The sensor reports the first N valid detections or tracks, where N is equal to the `MaxNumReports` property value.

Maximum number of detection or track reports, specified as a positive integer. The sensor reports detections, in order of increasing distance from the sensor, until reaching this maximum number.

#### Dependencies

To enable this property, set the `MaxNumReportsSource` property to `'Property'`.

Data Types: `double`

Format of generated target reports, specified as one of these options:

• `'Clustered detections'` — The sensor generates target reports as clustered detections, where each target is reported as a single detection that is the centroid of the unclustered target detections. The sensor returns clustered detections as a cell array of `objectDetection` objects. To enable this option, set the `DetectionMode` property to `'Monostatic'` and set the `EmissionsInputPort` property to `false`.

• `'Tracks'` — The sensor generates target reports as tracks, which are clustered detections that have been processed by a tracking filter. The sensor returns tracks as an array of `objectTrack` objects. To enable this option, set the `DetectionMode` property to `'Monostatic'` and set the `EmissionsInputPort` property to `false`.

• `'Detections'` — The sensor generates target reports as unclustered detections, where each target can have multiple detections. The sensor returns unclustered detections as a cell array of `objectDetection` objects.

Coordinate system used to report detections, specified as one of these options:

• `'Scenario'` — Detections are reported in the rectangular scenario coordinate frame. The scenario coordinate system is defined as the local navigation frame at simulation start time. To enable this value, set the HasINS property to `true`.

• `'Body'` — Detections are reported in the rectangular body system of the sensor platform.

• `'Sensor rectangular'` — Detections are reported in the sensor rectangular body coordinate system.

• `'Sensor spherical'` — Detections are reported in a spherical coordinate system derived from the sensor rectangular body coordinate system. This coordinate system is centered at the sensor and aligned with the orientation of the radar on the platform.

When the `DetectionMode` property is set to `'Monostatic'`, you can specify the `DetectionCoordinates` as `'Body'` (default for `'Monostatic'`), `'Scenario'`, ```'Sensor rectangular'```, or `'Sensor spherical'`. When the `DetectionMode` property is set to `'ESM'` or `'Bistatic'`, the default value of the `DetectionCoordinates` property is ```'Sensor spherical'```, which cannot be changed.

Example: `'Sensor spherical'`

Measurement Resolution and Bias

Azimuth resolution of the radar, in degrees, specified as a positive scalar. The azimuth resolution defines the minimum separation in azimuth angle at which the radar can distinguish between two targets. The azimuth resolution is typically the half-power beamwidth of the azimuth angle beamwidth of the radar.

Tunable: Yes

Data Types: `double`

Elevation resolution of the radar, in degrees, specified as a positive scalar. The elevation resolution defines the minimum separation in elevation angle at which the radar can distinguish between two targets. The elevation resolution is typically the half-power beamwidth of the elevation angle beamwidth of the radar.

Tunable: Yes

#### Dependencies

To enable this property, set the `HasElevation` property to `true`.

Data Types: `double`

Range resolution of the radar, in meters, specified as a positive scalar. The range resolution defines the minimum separation in range at which the radar can distinguish between two targets.

Tunable: Yes

Data Types: `double`

Range-rate resolution of the radar, in meters per second, specified as a positive real scalar. The range rate resolution defines the minimum separation in range rate at which the radar can distinguish between two targets.

Tunable: Yes

#### Dependencies

To enable this property, set the `HasRangeRate` property to `true`.

Data Types: `double`

Azimuth bias fraction of the radar, specified as a nonnegative scalar. Azimuth bias is expressed as a fraction of the azimuth resolution specified in the `AzimuthResolution` property. This value sets a lower bound on the azimuthal accuracy of the radar and is dimensionless.

Data Types: `double`

Elevation bias fraction of the radar, specified as a nonnegative scalar. Elevation bias is expressed as a fraction of the elevation resolution specified by the `ElevationResolution` property. This value sets a lower bound on the elevation accuracy of the radar and is dimensionless.

#### Dependencies

To enable this property, set the `HasElevation` property to `true`.

Data Types: `double`

Range bias fraction of the radar, specified as a nonnegative scalar. Range bias is expressed as a fraction of the range resolution specified by the `RangeResolution` property. This property sets a lower bound on the range accuracy of the radar and is dimensionless.

Data Types: `double`

Range-rate bias fraction of the radar, specified as a nonnegative scalar. Range-rate bias is expressed as a fraction of the range-rate resolution specified by the `RangeRateResolution` property. This property sets a lower bound on the range rate accuracy of the radar and is dimensionless.

#### Dependencies

To enable this property, set the `HasRangeRate` property to `true`.

Data Types: `double`

Detection Settings

Center frequency of the radar band, specified as a positive scalar. Units are in Hz.

Tunable: Yes

Data Types: `double`

Radar waveform bandwidth, specified as a positive real scalar. Units are in Hz.

Example: `100e3`

Tunable: Yes

Data Types: `double`

Types of detectable waveforms, specified as an L-element vector of nonnegative integers. Each integer represents a type of waveform detectable by the radar.

Example: `[1 4 5]`

Data Types: `double`

Probability of correct classification of a detected waveform, specified as a positive scalar, an L-element vector of nonnegative real values, or an L-by-L matrix of nonnegative real values, where L is the number of waveform types detectable by the sensor, as indicated by the value set in the `WaveformTypes` property. Matrix values must be in the range [0, 1].

The (i, j) matrix element represents the probability of classifying the ith waveform as the jth waveform. When you specify this property as a scalar from 0 through 1, the value is expanded along the diagonal of the confusion matrix. When specified as a vector, the vector is aligned as the diagonal of the confusion matrix. When defined as a scalar or a vector, the off-diagonal values are set to (1 – val)/(L –1), where val is the value of the diagonal element.

Data Types: `double`

Minimum operational sensitivity of receiver, specified as a scalar. Sensitivity includes isotropic antenna receiver gain. Units are in dBmi.

Example: `-10`

Data Types: `double`

Minimum signal-to-noise ratio (SNR) required to declare a detection, specified as a scalar. Units are in dB.

Example: `-1`

Data Types: `double`

Probability of detecting a reference target, specified as a scalar in the range (0, 1]. This property defines the probability of detecting a reference target with a radar cross-section (RCS), `ReferenceRCS`, at the reference detection range, `ReferenceRange`.

Tunable: Yes

Data Types: `double`

Reference range for the given probability of detection and the given reference radar cross-section (RCS), in meters, specified as a positive real scalar. The reference range is the range, at which a target having a radar cross-section specified by the `ReferenceRCS` property is detected with a probability of detection specified by the `DetectionProbability` property.

Tunable: Yes

Data Types: `double`

Reference radar cross-section (RCS) for a given probability of detection and reference range, specified as a real scalar. The reference RCS is the RCS value at which a target is detected with a probability specified by `DetectionProbability` at the specified `ReferenceRange` value. Units are in decibel square meters (dBsm).

Tunable: Yes

Data Types: `double`

False alarm report rate within each radar resolution cell, specified as a positive real scalar in the range [10–7, 10–3]. Units are dimensionless. The object determines resolution cells from the `AzimuthResolution` and `RangeResolution` properties and, when enabled, from the `ElevationResolution` and `RangeRateResolution` properties.

Tunable: Yes

Data Types: `double`

Angular field of view of the radar, in degrees, specified as a 1-by-2 positive real-valued vector of the form [azfov elfov]. The field of view defines the total angular extent spanned by the sensor. The azimuth field of view, azfov, must be in the range (0, 360]. The elevation field of view, elfov, must be in the range (0, 180]. Targets outside of the angular field of view will not be detected. Units are in degrees.

#### Dependencies

To enable this property, set the `ScanMode` property to any value except `'Custom'`. When the `ScanMode` property is set to `'Custom'`, the field of view is determined by the angular resolutions specified in `AzimuthResolution` and `ElevationResolution` properties and the current look angle specified in `LookAngle`

Data Types: `double`

Minimum and maximum range of radar, specified as a 1-by-2 nonnegative real-valued vector of the form `[min, max]`. The radar does not detect targets that are outside this range. The maximum range, `max`, must be greater than the minimum range, `min`. Units are in meters

Tunable: Yes

Minimum and maximum range rate of radar, in meters per second, specified as a 1-by-2 real-valued vector of the form `[min, max]`. The radar does not detect targets that are outside this range rate. The maximum range rate, `max`, must be greater than the minimum range rate, `min`.

Tunable: Yes

#### Dependencies

To enable this property, set the `HasRangeRate` property to `true`.

Maximum unambiguous detection range, specified as a positive scalar. Maximum unambiguous range defines the maximum range for which the radar can unambiguously resolve the range of a target. When `HasRangeAmbiguities` is set to `true`, targets detected at ranges beyond the maximum unambiguous range are wrapped into the range interval `[0, MaxUnambiguousRange]`. Units are in meters.

This property also applies to false target detections when you set the `HasFalseAlarms` property to `true`. In this case, the property defines the maximum range at which false alarms can be generated.

Example: `5e3`

Tunable: Yes

#### Dependencies

To enable this property, set the `HasRangeAmbiguities` property to `true`.

Data Types: `double`

Maximum unambiguous radial speed, specified as a positive scalar. Radial speed is the magnitude of the target range rate. Maximum unambiguous radial speed defines the radial speed for which the radar can unambiguously resolve the range rate of a target. When `HasRangeRateAmbiguities` is set to `true`, targets detected at range rates beyond the maximum unambiguous radial speed are wrapped into the range rate interval `[–MaxUnambiguousRadialSpeed, MaxUnambiguousRadialSpeed]`. Units are in meters per second.

This property also applies to false target detections obtained when you set both the `HasRangeRate` and `HasFalseAlarms` properties to `true`. In this case, the property defines the maximum radial speed at which false alarms can be generated.

Tunable: Yes

#### Dependencies

To enable this property, set `HasRangeRate` and `HasRangeRateAmbiguities` to `true`.

Data Types: `double`

Radar loop gain, specified as a real scalar. `RadarLoopGain` depends on the values of the `DetectionProbability`, `ReferenceRange`, `ReferenceRCS`, and `FalseAlarmRate` properties. Radar loop gain is a function of the reported signal-to-noise ratio of the radar, SNR, the target radar cross-section, RCS, and the target range, R, as described by this equation:

SNR = `RadarLoopGain` + RCS – 40log10(R)

SNR and RCS are in decibels and decibel square meters, respectively, R is in meters, and `RadarLoopGain` is in decibels.

Data Types: `double`

Interference and Emission Inputs

Enable interference input, specified as a logical `0` (`false`) or `1` (`true`). Set this property to `true` to enable interference input when running the radar.

#### Dependencies

To enable this property, set `DetectionMode` to `'Monostatic'` and set `EmissionsInputPort` to `false`.

Data Types: `logical`

Enable emissions input, specified as a logical `0` (`false`) or `1` (`true`). Set this property to `true` to enable emissions input when running the radar.

#### Dependencies

To enable this property, set `DetectionMode` to `'Monostatic'` and set `InterferenceInputPort` to `false`.

Data Types: `logical`

Unique identifier of the monostatic emitter, specified as a positive integer. Use this index to identify the monostatic emitter providing the reference emission for the radar.

#### Dependencies

To enable this property, set `DetectionMode` to `'Monostatic'` and set `EmissionsInputPort` to `true`.

Data Types: `double`

Tracking Settings

Kalman filter initialization function, specified as a function handle or as a character vector or string scalar of the name of a valid Kalman filter initialization function.

The table shows the initialization functions that you can use to specify `FilterInitializationFcn`.

Initialization FunctionFunction Definition
`initcaabf`Initialize constant-acceleration alpha-beta Kalman filter
`initcvabf`Initialize constant-velocity alpha-beta Kalman filter
`initcakf`Initialize constant-acceleration linear Kalman filter.
`initcvkf`Initialize constant-velocity linear Kalman filter.
`initcaekf`Initialize constant-acceleration extended Kalman filter.
```initctekf ```Initialize constant-turnrate extended Kalman filter.
`initcvekf`Initialize constant-velocity extended Kalman filter.
```initcaukf ```Initialize constant-acceleration unscented Kalman filter.
`initctukf`Initialize constant-turnrate unscented Kalman filter.
`initcvukf`Initialize constant-velocity unscented Kalman filter.

You can also write your own initialization function. The function must have the following syntax:

`filter = filterInitializationFcn(detection)`
The input to this function is a detection report like those created by an `objectDetection` object. The output of this function must be a tracking filter object, such as `trackingKF`, `trackingEKF`, `trackingUKF`, or `trackingABF`.

To guide you in writing this function, you can examine the details of the supplied functions from within MATLAB®. For example:

`type initcvekf`

#### Dependencies

To enable this property, set the `TargetReportFormat` property to `'Tracks'`.

Data Types: `function_handle` | `char` | `string`

Threshold for track confirmation, specified as a 1-by-2 vector of positive integers of the form `[M N]`. A track is confirmed if it receives at least `M` detections in the last `N` updates. `M` must be less than or equal to `N`.

• When setting `M`, take into account the probability of object detection for the sensors. The probability of detection depends on factors such as occlusion or clutter. You can reduce `M` when tracks fail to be confirmed or increase `M` when too many false detections are assigned to tracks.

• When setting `N`, consider the number of times you want the tracker to update before it makes a confirmation decision. For example, if a tracker updates every 0.05 seconds, and you want to allow 0.5 seconds to make a confirmation decision, set `N = 10`.

Example: `[3 5]`

#### Dependencies

To enable this property, set the `TargetReportFormat` property to `'Tracks'`.

Data Types: `double`

Threshold for track deletion, specified as a 1-by-2 vector of positive integers of the form `[P R]`. If a confirmed track is not assigned to any detection `P` times in the last `R` tracker updates, then the track is deleted. `P` must be less than or equal to `R`.

• To reduce how long the radar maintains tracks, decrease `R` or increase `P`.

• To maintain tracks for a longer time, increase `R` or decrease `P`.

Example: `[3 5]`

#### Dependencies

To enable this property, set the `TargetReportFormat` property to `'Tracks'`.

Data Types: `double`

Coordinate system used to report tracks, specified as one of these options:

• `'Scenario'` — Tracks are reported in the rectangular scenario coordinate frame. The scenario coordinate system is defined as the local navigation frame at simulation start time. To enable this option, set the HasINS property to `true`.

• `'Body'` — Tracks are reported in the rectangular body system of the sensor platform.

• `'Sensor'` — Tracks are reported in the sensor rectangular body coordinate system.

#### Dependencies

To enable this property, set the `TargetReportFormat` property to `'Tracks'`.

Target Profiles

Physical characteristics of target platforms, specified as a structure or an array of structures. Unspecified fields take default values.

• If you specify the property as a structure, then the structure applies to all target platforms.

• If you specify the property as an array of structures, then each structure in the array applies to the corresponding target platform based on the `PlatformID` filed. In this case, you must specify each `PlatformID` filed as a positive integer and must not leave the field as empty.

FieldDescriptionDefault Value
`PlatformID`Scenario-defined platform identifier, defined as a positive integer.empty
`ClassID`User-defined platform classification identifier, defined as a nonnegative integer.0
`Dimensions`

Platform dimensions, defined as a structure with these fields:

• `Length`

• `Width`

• `Height`

• `OriginOffset`

0
`Signatures`Platform signatures, defined as a cell array containing an `rcsSignature` object, which specifies the RCS signature of the platform.The default `rcsSignature` object

See `Platform` (Sensor Fusion and Tracking Toolbox) for more details on these fields.

Data Types: `struct`

## Usage

### Syntax

``reports = rdr(targetPoses,simTime)``
``reports = rdr(targetPoses,interferences,simTime)``
``reports = rdr(emissions,emitterConfigs,simTime)``
``reports = rdr(emissions,simTime)``
``reports = rdr(___,insPose,simTime)``
``[reports,numReports,config] = rdr(___)``

### Description

#### Monostatic Detection Mode

These syntaxes apply when you set the `DetectionMode` property to `'Monostatic'`.

````reports = rdr(targetPoses,simTime)` returns monostatic target `reports` from the target poses, `targetPoses`, at the current simulation time, `simTime`. The object can generate reports for multiple targets. To enable this syntax: Set the `DetectionMode` property to `'Monostatic'`.Set the `InterferenceInputPort` property to `false`.Set the `EmissionsInputPort` property to `false`. ```
````reports = rdr(targetPoses,interferences,simTime)` specifies the interference signals, `interferences`, in the radar signal transmission. To enable this syntax: Set the `DetectionMode` property to `'Monostatic'`.Set the `InterferenceInputPort` property to `true`.Set the `EmissionsInputPort` property to `false`. ```
````reports = rdr(emissions,emitterConfigs,simTime)` returns monostatic target reports based on the emission signal, `emissions`, and the configurations of the corresponding emitters, `emitterConfigs`, that generate the emissions. To enable this syntax: Set the `DetectionMode` property to `'Monostatic'`.Set the `InterferenceInputPort` property to `false`.Set the `EmissionsInputPort` property to `true`. ```

#### Bistatic or ESM Detection Mode

This syntax applies when you set the `DetectionMode` property to `'Bistatic'` or `'ESM'`. In these two modes, the `TargetReportFormat` can only be `'Detections'` and the `DetcetionCoordinates` can only be ```'Sensor spherical'```.

````reports = rdr(emissions,simTime)` returns Bistatic or ESM reports form the radar signal `emissions` at the simulation time, `simTime`.```

#### Provide INS Input

This syntax applies when you set the `HasINS` property to `true`.

````reports = rdr(___,insPose,simTime)` specifies the pose information of the radar platform through an INS estimate. The `insPose` argument is the second to the last argument before the `simTime` argument. This syntax can be used with any of the previous syntaxes. See the HasINS property for more details. ```

Use this syntax if you want to output additional information of the reports.

````[reports,numReports,config] = rdr(___)` returns the number of reports, `numReports`, and the configuration of the radar, `config`, at the current simulation time.```

### Input Arguments

expand all

Radar scenario target poses, specified as an array of structures. Each structure corresponds to a target. You can generate the structure using the `targetPoses` object function of a platform. You can also create such a structure manually. This table shows the fields of the structure:

FieldDescription
`PlatformID`

Unique identifier for the platform, specified as a positive integer. This is a required field with no default value.

`ClassID`

User-defined integer used to classify the type of target, specified as a nonnegative integer. `0` is reserved for unclassified platform types and is the default value.

`Position`

Position of the target in platform coordinates, specified as a real-valued, 1-by-3 vector. This is a required field with no default value. Units are in meters.

`Velocity`

Velocity of the target in platform coordinates, specified as a real-valued, 1-by-3 vector. Units are in meters per second. The default is ```[0 0 0]```.

`Acceleration`

Acceleration of the target in platform coordinates specified as a 1-by-3 row vector. Units are in meters per second-squared. The default is `[0 0 0]`.

`Orientation`

Orientation of the target with respect to platform coordinates, specified as a scalar quaternion or a 3-by-3 rotation matrix. Orientation defines the frame rotation from the platform coordinate system to the current target body coordinate system. Units are dimensionless. The default is `quaternion(1,0,0,0)`.

`AngularVelocity`

Angular velocity of the target in platform coordinates, specified as a real-valued, 1-by-3 vector. The magnitude of the vector defines the angular speed. The direction defines the axis of clockwise rotation. Units are in degrees per second. The default is ```[0 0 0]```.

The values of the `Position`, `Velocity`, and `Orientation` fields are defined with respect to the platform body frame.

If the dimensions of the target or RCS signature change with respect to time, you can specify these two additional fields in the structure:

FieldDescription
`Dimensions`

Platform dimensions, specified as a structure with these fields:

• `Length`

• `Width`

• `Height`

• `OriginOffset`

`Signatures`Platform signatures, specified as a cell array containing an `rcsSignature` object, which specifies the RCS signature of the platform.

If the dimensions of the target and RCS signature remain static with respect to time, you can specify its dimensions and RCS signature using the Profiles property.

Interference radar emissions, specified as an array or cell array of `radarEmission` objects. You can also specify `interferences` as an array of structures with field names corresponding to the property names of the `radarEmission` object.

Radar emissions, specified as an array or cell array of `radarEmission` objects. You can also specify `emissions` as an array of structures with field names corresponding to the property names of the `radarEmission` object.

Emitter configurations, specified as an array of structures. This array must contain the configuration of the radar emitter whose `EmitterIndex` matches the value of the `EmitterIndex` property of the `radarDataGenerator`. Each structure has these fields:

 Field Description `EmitterIndex` Unique emitter index. `IsValidTime` Valid emission time, returned as `0` or `1`. The value of `IsValidTime` is `0` when emitter updates are requested at times that are between update intervals specified by `UpdateInterval`. `IsScanDone` `IsScanDone` is `true` when the emitter has completed a scan. `FieldOfView` Field of view of the emitter. `MeasurementParameters` `MeasurementParameters` is an array of structures containing the coordinate frame transforms needed to transform positions and velocities in the top-level frame to the current emitter frame.

For more details on `MeasurementParameters`, see Measurement Parameters.

Data Types: `struct`

Platform pose information from an inertial navigation system (INS), specified as a structure with these fields:

 Field Definition `Position` Position in the scenario frame, specified as a real-valued 1-by-3 vector. Units are in meters. `Velocity` Velocity in the scenario frame, specified as a real-valued 1-by-3 vector. Units are in meters per second. `Orientation` Orientation with respect to the scenario frame, specified as a `quaternion` or a 3-by-3 real-valued rotation matrix. The rotation is from the navigation frame to the current INS body frame. This is also referred to as a "parent to child" rotation.

Current simulation time, specified as a nonnegative scalar. The `radarScenario` object calls the scan radar sensor at regular time intervals. The sensor only generates reports at simulation times corresponding to integer multiples of the update interval, which is given by the reciprocal of the `UpdateRate` property.

• When called at these intervals, targets are reported in `reports`, the number of reports is returned in `numReports`, and the `IsValidTime` field of the returned `config` structure is returned as `true`.

• When called at all other simulation times, the sensor returns an empty report, `numReports` is returned as `0`, and the `IsValidTime` field of the returned `config` structure is returned as `false`.

Example: `10.5`

Data Types: `double`

### Output Arguments

expand all

Detection and track reports, returned as one of these options:

• A cell array of `objectDetection` objects, when the TargetReportFormat property is set to `'Detections'` or `'Clustered detections'`. Additionally, when the `DetectionMode` is set to `'ESM'` or `'Bistatic'`, the sensor can only generate unclustered detections and cannot generate clustered detections.

• A cell array of `objectTrack` objects, when the TargetReportFormat property is set to `'Tracks'`. The sensor can only output tracks when the `DetectionMode` is set to `'Monostatic'`. The sensor returns only confirmed tracks, which are tracks that satisfy the confirmation threshold specified in the `ConfirmationThreshold` property. For these tracks, the `IsConfirmed` property of the object is `true`.

In generated code, reports return as equivalent structures with field names corresponding to the property names of the `objectDetection` object or the property names of the `objectTrack` objects, based on the `TargetReportFormat` property.

The format and coordinates of the measurement states or track states is determined by the specifications of the `HasRangeRate`, `HasElevation`, `HasINS`, `TaregetReportFormat`, and `DetectionCoordinates` properties. For more details, see Detection and Track State Coordinates.

Number of reported detections or tracks, returned as a nonnegative integer. `numReports` is equal to the length of the `reports` argument.

Data Types: `double`

Current sensor configuration, specified as a structure. This output can be used to determine which objects fall within the radar beam during object execution.

 Field Description `SensorIndex` Unique sensor index, returned as a positive integer. `IsValidTime` Valid detection time, returned as `true` or `false`. `IsValidTime` is `false` when detection updates are requested between update intervals specified by the update rate. `IsScanDone` `IsScanDone` is `true` when the sensor has completed a scan. `FieldOfView` Field of view of the sensor, returned as a 2-by-1 vector of positive real values, [`azfov`;`elfov`]. `azfov` and `elfov` represent the field of view in azimuth and elevation, respectively. `RangeLimits` Minimum and maximum range of sensor, in meters, specified as a 1-by-2 nonnegative real-valued vector of the form `[rmin,rmax]`. `RangeRateLimits` Minimum and maximum range rate of sensor, in meters per second, specified as a 1-by-2 real-valued vector of the form `[rrmin,rrmax]`. `MeasurementParameters` Sensor measurement parameters, returned as an array of structures containing the coordinate frame transforms needed to transform positions and velocities in the top-level frame to the current sensor frame.

Data Types: `struct`

## Object Functions

To use an object function, specify the System object™ as the first input argument. For example, to release system resources of a System object named `obj`, use this syntax:

`release(obj)`

expand all

 `coverageConfig` Sensor and emitter coverage configuration `radarTransceiver` Create corresponding radar transceiver from `radarDataGenerator` `perturb` Apply perturbations to object `perturbations` Perturbation defined on object
 `step` Run System object algorithm `release` Release resources and allow changes to System object property values and input characteristics `reset` Reset internal states of System object

## Examples

collapse all

Create three targets by specifying their platform ID, position, and velocity.

```tgt1 = struct('PlatformID',1, ... 'Position',[0 -50e3 -1e3], ... 'Velocity',[0 900*1e3/3600 0]); tgt2 = struct('PlatformID',2, ... 'Position',[20e3 0 -500], ... 'Velocity',[700*1e3/3600 0 0]); tgt3 = struct('PlatformID',3, ... 'Position',[-20e3 0 -500], ... 'Velocity',[300*1e3/3600 0 0]);```

Create an airport surveillance radar that is 15 meters above the ground.

```rpm = 12.5; fov = [1.4; 5]; % [azimuth; elevation] scanrate = rpm*360/60; % deg/s updaterate = scanrate/fov(1); % Hz sensor = radarDataGenerator(1,'Rotator', ... 'UpdateRate',updaterate, ... 'MountingLocation',[0 0 -15], ... 'MaxAzimuthScanRate',scanrate, ... 'FieldOfView',fov, ... 'AzimuthResolution',fov(1));```

Generate detections from a full scan of the radar.

```simTime = 0; detBuffer = {}; while true [dets,numDets,config] = sensor([tgt1 tgt2 tgt3],simTime); detBuffer = [detBuffer; dets]; %#ok<AGROW> % Is full scan complete? if config.IsScanDone break % yes end simTime = simTime + 1/sensor.UpdateRate; end radarPosition = [0 0 0]; tgtPositions = [tgt1.Position; tgt2.Position; tgt3.Position]; ```

Visualize the results.

```clrs = lines(3); figure hold on % Plot radar position plot3(radarPosition(1),radarPosition(2),radarPosition(3),'Marker','s', ... 'DisplayName','Radar','MarkerFaceColor',clrs(1,:),'LineStyle','none') % Plot truth plot3(tgtPositions(:,1),tgtPositions(:,2),tgtPositions(:,3),'Marker','^', ... 'DisplayName','Truth','MarkerFaceColor',clrs(2,:),'LineStyle', 'none') % Plot detections if ~isempty(detBuffer) detPos = cellfun(@(d)d.Measurement(1:3),detBuffer, ... 'UniformOutput',false); detPos = cell2mat(detPos')'; plot3(detPos(:,1),detPos(:,2),detPos(:,3),'Marker','o', ... 'DisplayName','Detections','MarkerFaceColor',clrs(3,:),'LineStyle','none') end xlabel('X(m)') ylabel('Y(m)') axis('equal') legend```

Create a radar emission and then detect the emission using a `radarDataGenerator` object.

```orient = quaternion([180 0 0],'eulerd','zyx','frame'); rfSig = radarEmission('PlatformID',1,'EmitterIndex',1,'EIRP',100, ... 'OriginPosition',[30 0 0],'Orientation',orient);```

Then, create an ESM sensor using `radarDataGenerator`.

`sensor = radarDataGenerator(1,'DetectionMode','ESM');`

Detect the RF emission.

```time = 0; [dets,numDets,config] = sensor(rfSig,time)```
```dets = 1x1 cell array {1x1 objectDetection} ```
```numDets = 1 ```
```config = struct with fields: SensorIndex: 1 IsValidTime: 1 IsScanDone: 0 FieldOfView: [1 5] RangeLimits: [0 Inf] RangeRateLimits: [0 Inf] MeasurementParameters: [1x1 struct] ```

Create a radar that can be pointed directly at targets of interest to generate statistical detections. This setup is useful in cases where the azimuth and elevation of the target are already estimated by a tracker. Thus the radar can be cued to detect the target to update the track in between surveillance updates and other target track updates. To specify such a radar, set the `ScanMode` property of `radarDataGenerator` to `"Custom"`.

`rdr = radarDataGenerator(1,'ScanMode','Custom','HasElevation',true)`
```rdr = radarDataGenerator with properties: SensorIndex: 1 UpdateRate: 1 DetectionMode: 'Monostatic' ScanMode: 'Custom' InterferenceInputPort: 0 MountingLocation: [0 0 0] MountingAngles: [0 0 0] EffectiveFieldOfView: [2 10] LookAngle: [0 0] RangeLimits: [0 100000] DetectionProbability: 0.9000 FalseAlarmRate: 1.0000e-06 ReferenceRange: 100000 TargetReportFormat: 'Clustered detections' Show all properties ```

Create a target at which to point the radar. The target is located at a range of 1 km from the radar at an azimuth of 10 degrees and an elevation of 5 degrees.

```tgtRg = 1e3; tgtAz = 10; tgtEl = 5; [X,Y,Z] = sph2cart(deg2rad(tgtAz),deg2rad(tgtEl),tgtRg); tgt = struct(PlatformID=1,Position=[X Y Z]);```

Point the radar directly at the target. Generate the statistical detection.

```rdr.LookAngle = [tgtAz tgtEl]; simTime = 0; dets = rdr(tgt,simTime);```

Compare the measured target location to the actual position.

```detpos = dets{1}.Measurement; ttb = table(detpos,tgt.Position', ... RowNames=["X" "Y" "Z"],VariableNames=["Measured" "Actual"])```
```ttb=3×2 table Measured Actual ________ ______ X 968.64 981.06 Y 171.74 172.99 Z 101.94 87.156 ```

Create a `theaterPlot` object. Plot the radar, the target, and the radar detections. Overlay a plot of the radar coverage.

```tp = theaterPlot(AxesUnits=["m" "m" "m"],XLimits=[0 2e3]); pltPlotter = platformPlotter(tp,DisplayName="Radar Platform"); tgtPlotter = platformPlotter(tp,DisplayName="Targets", ... MarkerFaceColor="#D95319"); plotPlatform(pltPlotter,[0 0 0]) plotPlatform(tgtPlotter,tgt.Position) covPlotter = coveragePlotter(tp,DisplayName="Radar Coverage"); covcfg = coverageConfig(rdr); plotCoverage(covPlotter,covcfg) detPlotter = detectionPlotter(tp,DisplayName="Radar Detections"); plotDetection(detPlotter,detpos') axis equal```

expand all

## References

[1] Doerry, Armin W. "Earth Curvature and Atmospheric Refraction Effects on Radar Signal Propagation." Sandia Report SAND2012-10690, Sandia National Laboratories, Albuquerque, NM, January 2013. https://prod.sandia.gov/techlib-noauth/access-control.cgi/2012/1210690.pdf.

[2] Doerry, Armin W. "Motion Measurement for Synthetic Aperture Radar." Sandia Report SAND2015-20818, Sandia National Laboratories, Albuquerque, NM, January 2015. https://pdfs.semanticscholar.org/f8f8/cd6de8042a7a948d611bcfe3b79c48aa9dfa.pdf.

## Version History

Introduced in R2021a