Main Content

radarDataGenerator

Generate radar detections and tracks

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.

To learn more about how System objects work, see What Are System Objects?

Creation

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', or 'Sector'. 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.

For more information on changing property values, see System Design in MATLAB Using System Objects.

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'.

ScanModePurpose
'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

This property is read-only.

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

This property is read-only.

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.

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

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

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.

Data Types: double

Elevation resolution of the radar, in degrees, specified as a positive real 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.

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 real scalar. The range resolution defines the minimum separation in range at which the radar can distinguish between two targets.

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.

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, in hertz, specified as a positive real scalar.

Data Types: double

Radar waveform bandwidth, in hertz, specified as a positive real scalar.

Example: 100e3

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 target, specified as a scalar in the range (0, 1]. This property defines the probability of detecting a 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, in decibel square meters, 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.

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].

Data Types: double

Minimum and maximum range of radar, in meters, 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.

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.

Dependencies

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

Maximum unambiguous detection range, specified as a positive scalar in meters. 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].

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

Dependencies

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

Data Types: double

Maximum unambiguous radial speed, specified as a positive scalar in meters per second. 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].

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.

Dependencies

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

Data Types: double

This property is read-only.

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
initcaabfInitialize constant-acceleration alpha-beta Kalman filter
initcvabfInitialize constant-velocity alpha-beta Kalman filter
initcakfInitialize constant-acceleration linear Kalman filter.
initcvkfInitialize constant-velocity linear Kalman filter.
initcaekfInitialize constant-acceleration extended Kalman filter.
initctekf Initialize constant-turnrate extended Kalman filter.
initcvekfInitialize constant-velocity extended Kalman filter.
initcaukf Initialize constant-acceleration unscented Kalman filter.
initctukfInitialize constant-turnrate unscented Kalman filter.
initcvukfInitialize 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. Each structure must contain the PlatformID and Position fields. Unspecified fields take default values.

FieldDescriptionDefault Value
PlatformIDScenario-defined platform identifier, defined as a positive integer.0
ClassIDUser-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
SignaturesPlatform signatures, defined as a cell array containing an rcsSignature object, which specifies the RCS signature of the platform.The default rcsSignature object

For more details on these fields, see the properties of the Platform object with the same names.

Data Types: struct

Usage

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.

Output Additional Information

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

SignaturesPlatform 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:

FieldDescription
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:

FieldDefinition
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.

FieldDescription
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.

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

coverageConfigSensor and emitter coverage configuration
radarTransceiverCreate corresponding radar transceiver from radarDataGenerator
perturbApply perturbations to object
perturbationsPerturbation defined on object
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset 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

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Radar, Truth, Detections.

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

First, create a radar emission.

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]
    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]

              FieldOfView: [1 5]
              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

Figure contains an axes object. The axes object contains 4 objects of type line, patch. These objects represent Radar Platform, Targets, Radar Coverage, Radar Detections.

Algorithms

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.

Introduced in R2021a