Main Content

radarTransceiver

Monostatic radar transceiver

Description

The radarTransceiver System object™ creates a monostatic radar object that generates samples of the received target echo at the radar.

To generate samples of the received target echo:

  1. Create the radarTransceiver 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

radarTrans = radarTransceiver creates a monostatic radar object. This object generates samples of the received target echo at the radar.

example

radarTrans = radarTransceiver(Name,Value) creates a monostatic radar transceiver object with each specified property set to the specified value. Enclose each property name in single quotes.

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.

Radar system's transmitter, specified as a phased.Transmitter object.

Radar transmit antenna, specified as either a phased.Radiator object or phased.WidebandRadiator object.

Radar receive antenna, specified as either a phased.Collector object or phased.WidebandCollector.

Radar receiver, specified as a phased.ReceiverPreamp object.

Radar mechanical scan mode, specified as one of the following:

  • 'Circular' –– The radar scans counter-clockwise in the azimuth plane. The azimuth plane is defined in the xy plane.

  • 'Sector' –– The radar scans back and forth within a sector in the azimuth plane, first in counter-clockwise direction, then in clockwise direction, and so on.

  • 'None'

Initial mechanical scan angle measured in degrees, and specified as scalar.

Dependencies

This property applies only when you set the MechanicalScanMode property to 'Circular' or 'Sector'.

Data Types: double

Mechanical azimuth coverage for sector scanning measured in degrees, and specified as a two-element row vector.

Dependencies

This property applies only when you set the MechanicalScanMode property to 'Sector'.

Data Types: double

Azimuth scanning rate for the mechanical scan measured in degrees per second, and specified as a positive scalar.

Dependencies

This property applies only when you set the MechanicalScanMode property to 'Circular' or 'Sector'.

Data Types: double

Radar electronic scan mode, specified as one of the following:

  • 'Sector' –– The radar scans back and forth within a sector in the azimuth plane, first in counter-clockwise direction, then in clockwise direction, and so on.

  • 'Custom'

  • 'None'

Coverage measured in degrees for electronic sector scanning, specified as a 2-by-2 matrix. The first row specifies the scan coverage in the azimuth direction, and the second row specifies the scan coverage in the elevation direction.

Dependencies

To enable this property, set the ElectronicScanMode property to 'Sector'.

Data Types: double

Scanning rate measured in degrees per second for the electronic scan, specified as a two-element column vector. The first row specifies the scan rate in the azimuth direction, and the second row specifies the scan rate in the elevation direction.

Dependencies

To enable this property, set the ElectronicScanMode property to 'Sector'.

Data Types: double

Offset of the radar's origin from the origin of its mounting platform, specified as a 1-by-3 vector in the form [x, y, z] and measured in meters.

Data Types: double

Angles at which the radar is mounted relative to the platform's orientation, specified as a 1-by-3 vector in Euler angles around [z, y, x] axes. These angles are also referred to as [yaw, pitch, roll] angles.

Assume the platform's orientation is defined by the axes Xp, Yp, and Zp. The roll angle specifies the counterclockwise rotation around Xp, the pitch angle specifies the counterclockwise rotation around Yp, and the yaw angle specifies the counterclockwise rotation around Zp. To obtain the radar's orientation axes Xr, Yr, and Zr from the platform's orientation axes, perform the intrinsic rotation of the platform's orientation axes [Xp, Yp, Zp] in the order of roll, pitch, and yaw.

Data Types: double

Source of number of pulses or sweeps in the signal, specified as one of the following:

  • 'Property' –– The number of pulses or sweeps in the signal is specified by the NumRepetitions property.

  • 'Input port' –– The number of pulses or sweeps in the signal is specified through an input.

Number of pulses or sweeps in the signal, specified as a positive integer.

Dependencies

To enable this property, set the NumRepetitionsSource property to 'Property'.

Data Types: double

Usage

Description

example

y = radarTrans(tgt,t) returns the target echo received at the radar y, at time t seconds due to targets in tgt.

To use this syntax, set the NumRepetitionSource to 'Property'.

y = radarTrans(proppaths,t) returns the target echo received at the radar y at time t (in seconds) due to the propagation paths specified in proppaths.

This syntax applies when you set the NumRepetitionSource to 'Property'.

y = radarTrans(___,N) specifies the number of pulses/sweeps N in the signal as a positive integer.

This syntax applies when you set the NumRepetitionSource to 'Input port'.

y = radarTrans(___,PRFIDX) specifies the PRF index of the radar waveform as a positive integer.

This syntax applies when you set the PRFSelectionInputPort property to true in the radar's Waveform property.

y = radarTrans(___,wt) specifies the transmit weights of the radar system as a column vector.

This syntax applies when you set the ElectronicScanMode property to 'Custom' and the WeightsInputPort property to true in the radar's TransmitAntenna property.

y = radarTrans(___,steert) specifies the transmit steering angle (in degrees) as a 2-by-1 vector in the form [azimuth; elevation].

This syntax applies when you set the ElectronicScanMode property to 'Custom'. Use a subarray in the transmit antenna and set its SubarraySteering property to 'Phase' or 'Time'.

y = radarTrans(___,wst) specifies the transmit weights applied to each element as either a matrix or a cell array.

This syntax applies when you set the ElectronicScanMode property to 'Custom'. Use a subarray in the transmit antenna and set its SubarraySteering property to 'Custom'.

y = radarTrans(___,wr) specifies the receive weights of the radar system as a column vector.

This syntax applies when you set the ElectronicScanMode property to 'Custom' and the WeightsInputPort property to true in the radar's ReceiveAntenna property.

y = radarTrans(___,steerr) specifies the receive steering angle (in degrees) as a 2-by-1 vector in the form [azimuth; elevation].

This syntax applies when you set the ElectronicScanMode property to 'Custom', use a subarray in the receive antenna, and set its SubarraySteering property to 'Phase' or 'Time'.

y = radarTrans(___,wsr) specifies the receive weights applied to each element as either a matrix or a cell array.

This syntax applies when you set the ElectronicScanMode to 'Custom', use a subarray in the receive antenna, and set its SubarraySteering property to 'Custom'.

example

[y,info] = radarTrans(___) also returns additional simulation metadata in the structure info.

You can combine optional input arguments when you set the properties to enable them. Optional inputs must be listed in the same order as the enabled properties.

Example: [y,info] = radarTrans(TGT,T,N,PRFIDX,WT,STEERT,WR,STEERR);[y,info] = radarTrans(TGT,T,N,PRFIDX,WT,WST,WR,WSR);

Input Arguments

expand all

Radar target that reflects the signal, specified as an array of structures. Each structure describes a point target and contains the following fields:

  • Position –– Specify the position of the target as a 1-by-3 vector (in meters) in the form of [x y z]. The position is specified in the radar mounting platform's coordinate system.

    This is a required field and there is no default value.

  • Velocity –– Specify the velocity of the target as a 1-by-3 vector (in meters) in the form of [x y z]. The velocity is specified in the radar mounting platform's coordinate system. The default value is [0 0 0].

  • Orientation –– Specify the target orientation as a scalar quaternion or a 3-by-3 real-valued orthonormal frame rotation matrix, which rotates the axes of the radar mounting platform into alignment with the axes of the target's frame. The default value is quaternion(1,0,0,0).

  • Signatures –– Specify the target radar cross section (RCS) signature as a struct or an rcsSignature object.

    If Signatures is a struct, it must have the following fields:

    • Azimuth –– Specify the azimuth angles (in degrees) at which the RCS pattern is sampled as a length-Q vector. The default is [-180 180].

    • Elevation –– Specify the elevation angles (in degrees) at which the RCS pattern is sampled as a length-P vector. The default is [-90; 90].

    • Frequency –– Specify the frequencies (in Hz) at which the RCS pattern is sampled as a length-K vector. The default is [0 1e20].

    • Pattern –– Specify the target's RCS pattern (in dBm) as either a P-by-Q matrix or a P-by-Q-by-K array. If defined as a P-by-Q-by-K array, each entry in the array specifies the RCS at the corresponding frequency and the corresponding (azimuth, elevation) direction. If defined as a P-by-Q matrix, then the pattern applies to all frequencies. The default is [0 0;0 0].

Example: tgt1 = struct('Position',[0 5e3 0],'Velocity',[0 0 0]);tgt2 = struct('Position',[10e3 0 0],'Velocity',[0 0 0]);tgt = [tgt1 tgt2];

Data Types: struct

Propagation path between transmitter and receiver, specified as an array of structures. Each structure describes a propagation path between the transmitter and the receiver, and contains the following required fields:

  • PathLength –– Specify the length of a propagation path as a positive scalar (in meters).

  • PathLoss –– Specify the propagation loss along the path as a scalar (in dB).

  • ReflectionCoefficient –– Specify the cumulative reflection coefficients for all reflections along the path as a scalar. This include the effects like reflections from a scatterer or a target.

  • AngleOfDeparture –– Specify the path's angle of departure (in degrees) as a two-column vector in the form [azimuth; elevation] angles. The angle is measured in the transmit antenna's coordinate system.

  • AngleOfArrival –– Specify the path's angle of arrival (in degrees) as a two-column vector in the form [azimuth; elevation] angles. The angle is measured in the receive antenna's coordinate system.

  • DopplerShift –– Specify the cumulative Doppler shift along path as a scalar (in Hz).

Data Types: struct

Current time at which the radar receives the target echo, specified as a nonnegative scalar in seconds.

Data Types: double

Number of pulses/sweeps in the signal, specified as a positive integer.

You can specify this input only when the NumRepetitionSource property is set to 'Input port'.

Data Types: double

PRF index of the radar waveform, specified as a positive integer.

You can specify this input only when you set the PRFSelectionInputPort property to true in the radar's Waveform property.

Data Types: double

Transmit weights of the radar system, specified as a column vector.

If a regular antenna array is used to transmit, wt is of length NTE where NTE is the number of antenna elements in the radar's transmit antenna array.

If a subarray is used to transmit, wt is of length NTS where NTS is the number of subarrays in the radar's transmit antenna array.

You can specify this input only when you set the ElectronicScanMode property to 'Custom' and the WeightsInputPort property to true in the radar's TransmitAntenna property.

Data Types: double

Transmit steering angle (in degrees), specified as a 2-by-1 vector in the form of [azimuth; elevation].

You can specify this input only when you set the ElectronicScanMode property to 'Custom'. Use a subarray in the transmit antenna, and set its SubarraySteering property to 'Phase' or 'Time'.

Data Types: double

Transmit weights applied to each element, specified as either a matrix or a cell array.

If the transmit antenna uses a:

  • phased.ReplicatedSubarray, wst must be an NTE-by-NTS matrix where NTE is the number of elements in each individual subarray and NTS is the number of subarrays. Each column in wst specifies the weights for the elements in the corresponding subarray.

  • phased.PartitionedArray and its individual subarrays have the same number of elements, wst must be an NTE-by-NTS matrix where NTE is the number of elements in each individual subarray and NTS is the number of subarrays. Each column in wst specifies the weights for the elements in the corresponding subarray.

  • phased.PartitionedArray and its subarrays can have different number of elements, wst can be one of the following:

    • NTE-by-NTS matrix, where NTE indicates the number of elements in the largest subarray and NTS is the number of subarrays.

      If wst is a matrix, the first KT entries in each column, where KT is the number of elements in the corresponding subarray, specify the weights for the elements in the corresponding subarray.

    • 1-by-NTS cell array, where NTS is the number of subarrays and each cell contains a column vector whose length is the same as the number of elements of the corresponding subarray.

You can specify this input only when you set the ElectronicScanMode property to 'Custom'. Use a subarray in the transmit antenna, and set its SubarraySteering property to 'Custom'.

Data Types: double

Receive weights of the radar system, specified as a column vector. If a regular antenna array is used to receive, wr is of length NRE, where NRE is the number of antenna elements in the radar's receive antenna array. If a subarray is used to receive, wr is of length NRS where NRS is the number of subarrays in the radar's receive antenna array.

You can specify this input only when you set the ElectronicScanMode property to 'Custom' and the WeightsInputPort property to true in the radar's ReceiveAntenna property.

Data Types: double

Receive steering angle in degrees, specified as a 2-by-1 vector in the form of [azimuth; elevation].

You can specify this input only when you set the ElectronicScanMode property to 'Custom', use a subarray in the receive antenna, and set its SubarraySteering property to 'Phase' or 'Time'.

Data Types: double

Receive weights applied to each element, specified as either a matrix or a cell array.

If the receive antenna uses a:

  • phased.ReplicatedSubarray object, wsr must be an NRE-by-NRS matrix where NRE is the number of elements in each individual subarray and NRS is the number of subarrays. Each column in wsr specifies the weights for the elements in the corresponding subarray.

  • phased.PartitionedArray object, and its individual subarrays have same number of elements, wsr must be an NRE-by-NRS matrix where NRE is the number of elements in each individual subarray and NRS is the number of subarrays. Each column in wsr specifies the weights for the elements in the corresponding subarray.

  • phased.PartitionedArray object, and its subarrays can have different number of elements, wsr can be one of the following:

    • NRE-by-NRS matrix, whereNRE indicates the number of elements in the largest subarray and NRS is the number of subarrays.

      If wsr is a matrix, the first KR entries in each column, where KR is the number of elements in the corresponding subarray, specify the weights for the elements in the corresponding subarray.

    • 1-by-NRS cell array, where NRS is the number of subarrays and each cell contains a column vector whose length is the same as the number of elements of the corresponding subarray.

You can specify this input only when you set the ElectronicScanMode to 'Custom', use a subarray in the receive antenna, and set its SubarraySteering property to 'Custom'.

Data Types: double

Output Arguments

expand all

Signal received at the radar receiver, returned as a one of the following:

  • NS-by-NRE-by-N array –– If the radar uses a regular antenna array for receiving, the dimension of y is NS-by-NRE-by-N, where NRE is the number of antenna elements in the radar's receive antenna array, NS is the number of samples in each transmitted pulse/sweep, and N is the number of transmitted pulses/sweeps.

    In this syntax, N is specified by the value of the NumRepetition property.

  • NS-by-NRS-by-N array –– If the radar uses a subarray for receiving, the dimension of y is NS-by-NRS-by-N, where NRS is the number of subarrays in the radar's receive antenna array. When multiple pulses/sweeps are simulated, the targets are assumed to move according to a constant velocity trajectory.

Data Types: double
Complex Number Support: Yes

Simulation metadata, returned as a structure containing the following fields:

  • IsScanDone –– Whether one period of mechanical scan is done.

  • MechanicalAngle –– Current antenna pointing angle due to mechanical scan.

  • Origin –– Radar location in the platform coordinate system.

  • Orientation –– Radar orientation axes in the platform coordinate system.

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

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

Model the target echo received by a monostatic radar using the radarTransceiver object.

Create the radar targets as an array of two structures with a specified position and velocity.

tgt1 = struct( ...
    'Position', [0 5e3 0], ...
    'Velocity', [0 0 0]);
tgt2 = struct( ...
    'Position', [10e3 0 0], ...
    'Velocity', [0 0 0]);

Create a surveillance radar 15 meters above the ground. Specify rpm to determine the scan rate (in deg/s). For the specified scanrate and beamwidth, determine the update rate.

rpm = 12.5;
scanrate = rpm*360/60;       % deg/s
beamw = 1;                   % beamwidth
updaterate = scanrate/beamw; % update at each beam

Create a phased.CustomAntennaElement object that acts as a transmit antenna element and a receive antenna element in the radarTransceiver object.

az = -180:0.5:180;
el = -90:0.5:90;
pat = zeros(numel(el),numel(az));
pat(-0.5<=el&el<=0.5,-0.5<=az&az<=0.5) = 1;
ant = phased.CustomAntennaElement('AzimuthAngles',az,...
    'ElevationAngles',el,'MagnitudePattern',mag2db(abs(pat)),...
    'PhasePattern',zeros(size(pat)));

Create a radarTransceiver object. Specify a rectangular waveform for the radar using the phased.RectangularWaveform object. Specify the transmit antenna and the receive antenna. The mechanical scan mode is set to 'Circular' with a defined scan rate.

wav = phased.RectangularWaveform('PulseWidth',1e-5);
sensor = radarTransceiver(...
    'Waveform',wav, ...
    'TransmitAntenna',phased.Radiator('Sensor',ant), ...
    'ReceiveAntenna',phased.Collector('Sensor',ant), ...
    'MechanicalScanMode','Circular', ...
    'MechanicalScanRate',scanrate);

Generate detections from a full scan of the radar.

simTime = 0;
sigi = 0;
while true
    [sig, info] = sensor([tgt1 tgt2], simTime);
    sigi = sigi+abs(sig);

    % Is full scan complete?
    if info.IsScanDone
        break % yes
    end
    simTime = simTime+1/updaterate;
end
r = (0:size(sigi,1)-1)/sensor.Waveform.SampleRate*...
    sensor.TransmitAntenna.PropagationSpeed/2;
plot(r,sigi);
hold on;
plot([5e3 5e3],ylim,'r--',[10e3 10e3],ylim,'r--');
xlabel('Range (m)');
ylabel('Magnitude');

Figure contains an axes. The axes contains 3 objects of type line.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

See Also

Objects

Introduced in R2021a