Main Content

radarTransceiver

Monostatic radar transceiver

Since R2021a

Description

TheradarTransceiverSystem 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 theradarTransceiverobject and set its properties.

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

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

Creation

Description

radarTrans= radarTransceivercreates a radar object in a monostatic radar scenario. 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 arenontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and thereleasefunction unlocks them.

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

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

Radar waveform used in the radar system, specified as one of the following objects:

Radar system's transmitter, specified as aphased.Transmitterobject.

Radar transmit antenna, specified as either aphased.Radiatorobject orphased.WidebandRadiatorobject.

Radar receive antenna, specified as either aphased.Collectorobject orphased.WidebandCollector.

Radar receiver, specified as aphased.ReceiverPreampobject.

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

  • '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 theMechanicalScanModeproperty 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 theMechanicalScanModeproperty 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 theMechanicalScanModeproperty 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 theElectronicScanModeproperty to'Sector'.

Data Types:double

扫描速度测量度每秒的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 theElectronicScanModeproperty 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 axesXp,Yp, andZp. The roll angle specifies the counterclockwise rotation aroundXp, the pitch angle specifies the counterclockwise rotation aroundYp, and the yaw angle specifies the counterclockwise rotation aroundZp. To obtain the radar's orientation axesXr,Yr, andZrfrom 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 theNumRepetitionsproperty.

  • '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 theNumRepetitionsSourceproperty to'Property'.

Data Types:double

Source of range limits, specified as'Property'or'Input port'. When you set this property to ''Property', the range limits are determined by the value of theRangeLimitsproperty. When you set this property to'Input port', the range limits are determined by the input argumentrl.

Data Types:char|string

Minimum and maximum ranges of interest of the received signal, specified as a 1-by-2 real-valued vector. The default value of this property,[0 inf], indicates that all ranges are of interest. Range limits are used to compute the signal arrival time interval. Only the signal within the time interval of interest is returned. Units are in meters.

Example:[1000 10000]

Tunable:Yes

Dependencies

To enable this property, set theRangeLimitsSourceproperty toProperty.

Data Types:double

Set this property totrueto output corresponding ranges for the radar signal.

Data Types:logical

Set this property totrueto output corresponding times for the radar signal.

Data Types:logical

Usage

Description

example

y= radarTrans(tgt,t)returns the target echo received at the radary, at timetseconds due to targets intgt.

To use this syntax, set theNumRepetitionSourceto'Property'.

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

This syntax applies when you set theNumRepetitionSourceto'Property'.

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

This syntax applies when you set theNumRepetitionSourceto'Input port'.

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

This syntax applies when you set thePRFSelectionInputPortproperty totruein the radar'sWaveformproperty.

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

This syntax applies when you set theElectronicScanModeproperty to'Custom'and theWeightsInputPortproperty totruein the radar'sTransmitAntennaproperty.

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 theElectronicScanModeproperty to'Custom'. Use a subarray in the transmit antenna and set itsSubarraySteeringproperty 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 theElectronicScanModeproperty to'Custom'. Use a subarray in the transmit antenna and set itsSubarraySteeringproperty to'Custom'.

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

This syntax applies when you set theElectronicScanModeproperty to'Custom'and theWeightsInputPortproperty totruein the radar'sReceiveAntennaproperty.

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 theElectronicScanModeproperty to'Custom', use a subarray in the receive antenna, and set itsSubarraySteeringproperty to'Phase'or'Time'.

y= radarTrans(___,rl)specifies the range limits of interest,rl.

This syntax applies when you set theRangeLimitsto'Input port'.

example

[y,rgrid] = radarTrans(___)also returns the range gridrgridof the received signal. To enable this syntax, set theRangeOutputPortproperty totrue.

[y,tgrid] = radarTrans(___)also returns the time gridtgridof the received signal. To enable this syntax, set theTimeOutputPortproperty totrue.

example

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

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

你可以结合时可选的输入参数set the properties to enable them. Optional inputs must be listed in the same order as the enabled properties.

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 [xyz]. 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 [xyz]. 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 isquaternion(1,0,0,0).

  • Signatures–– Specify the target radar cross section (RCS) signature as astructor anrcsSignatureobject.

    IfSignaturesis astruct, 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-Pvector. The default is [-90; 90].

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

    • Pattern–– Specify the target's RCS pattern (in dBm) as either aP-by-Qmatrix or aP-by-Q-by-Karray. If defined as aP-by-Q-by-Karray, each entry in the array specifies the RCS at the corresponding frequency and the corresponding (azimuth, elevation) direction. If defined as aP-by-Qmatrix, 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 theNumRepetitionSourceproperty 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 thePRFSelectionInputPortproperty totruein the radar'sWaveformproperty.

Data Types:double

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

If a regular antenna array is used to transmit,wtis of lengthNTEwhereNTEis the number of antenna elements in the radar's transmit antenna array.

If a subarray is used to transmit,wtis of lengthNTSwhereNTSis the number of subarrays in the radar's transmit antenna array.

You can specify this input only when you set theElectronicScanModeproperty to'Custom'and theWeightsInputPortproperty totruein the radar'sTransmitAntennaproperty.

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 theElectronicScanModeproperty to'Custom'. Use a subarray in the transmit antenna, and set itsSubarraySteeringproperty 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,wstmust be anNTE-by-NTSmatrix whereNTEis the number of elements in each individual subarray andNTSis the number of subarrays. Each column inwstspecifies the weights for the elements in the corresponding subarray.

  • phased.PartitionedArrayand its individual subarrays have the same number of elements,wstmust be anNTE-by-NTSmatrix whereNTEis the number of elements in each individual subarray andNTSis the number of subarrays. Each column inwstspecifies the weights for the elements in the corresponding subarray.

  • phased.PartitionedArrayand its subarrays can have different number of elements,wstcan be one of the following:

    • NTE-by-NTSmatrix, whereNTEindicates the number of elements in the largest subarray andNTSis the number of subarrays.

      Ifwstis a matrix, the firstKTentries in each column, whereKTis the number of elements in the corresponding subarray, specify the weights for the elements in the corresponding subarray.

    • 1-by-NTScell array, whereNTSis 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 theElectronicScanModeproperty to'Custom'. Use a subarray in the transmit antenna, and set itsSubarraySteeringproperty 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,wris of lengthNRE, whereNRE在雷达天线元素的数量的receive antenna array. If a subarray is used to receive,wris of lengthNRSwhereNRSis the number of subarrays in the radar's receive antenna array.

You can specify this input only when you set theElectronicScanModeproperty to'Custom'and theWeightsInputPortproperty totruein the radar'sReceiveAntennaproperty.

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 theElectronicScanModeproperty to'Custom', use a subarray in the receive antenna, and set itsSubarraySteeringproperty 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.ReplicatedSubarrayobject,wsrmust be anNRE-by-NRSmatrix whereNREis the number of elements in each individual subarray andNRSis the number of subarrays. Each column inwsrspecifies the weights for the elements in the corresponding subarray.

  • phased.PartitionedArrayobject, and its individual subarrays have same number of elements,wsrmust be anNRE-by-NRSmatrix whereNREis the number of elements in each individual subarray andNRSis the number of subarrays. Each column inwsrspecifies the weights for the elements in the corresponding subarray.

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

    • NRE-by-NRSmatrix, whereNREindicates the number of elements in the largest subarray andNRSis the number of subarrays.

      Ifwsris a matrix, the firstKRentries in each column, whereKRis the number of elements in the corresponding subarray, specify the weights for the elements in the corresponding subarray.

    • 1-by-NRScell array, whereNRSis 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 theElectronicScanModeto'Custom', use a subarray in the receive antenna, and set itsSubarraySteeringproperty to'Custom'.

Data Types:double

Range limits of interest, specified as aN-by-2 matrix. Each row represents set of range limits in the form of[StartRange EndRange]. You can also use[0 inf]to specify all range cells.

The dimensions ofrldetermine the dimensions of the output argumenty.

  • Ifrlis a row vector, thenyis anNSRL-by-NRE-by-Narray, whereNSRLis the number of snapshots within the specified range limits.

  • Ifrlis a matrix, thenyis a 1-by-NRLcell array whereNRLis the number of rows inrl. Each cell inycontains anNSRL-by-NREby-Narray, representing the radar signal within the corresponding range gates inrl.

Dependencies

To enable syntax, set theRangeLimitsSourceproperty to'Input port'.

Data Types:double

Output Arguments

expand all

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

  • NS-by-NRE-by-Narray –– If the radar uses a regular antenna array for receiving, the dimension ofyisNS-by-NRE-by-N, whereNRE在雷达天线元素的数量的receive antenna array,NSis the number of samples in each transmitted pulse/sweep, andNis the number of transmitted pulses/sweeps.

  • NS-by-NRS-by-Narray –– If the radar uses a subarray for receiving, the dimension ofyisNS-by-NRS-by-N, whereNRSis the number of subarrays in the radar's receive antenna array.

Nis specified by the value of theNumRepetitionproperty. 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

Range grid of received signal, returned as anNSRL-by-1 real vector or cell array.

  • Ifyis an array,rgridis anNSRL-by-1 vector.

  • Ifyis a cell array,rgridis also a cell whose cells contain the range grids of the corresponding signal iny.

Dependencies

To enable this argument, set theRangeOutputPortproperty totrue.

Data Types:double

Time grid of received signal, returned as anNSRL-by-1 real vector or cell array.

  • Ifyis an array,tgridis anNSRL-by-1 vector.

  • Ifyis a cell array,tgridis also a cell whose cells contain the time grids of the corresponding signal iny.

Dependencies

To enable this argument, set theTimeOutputPortproperty totrue.

Data Types:double

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

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

  • MechanicalAngle由于mechanica——当前天线指向角l scan.

  • ElectronicAngle——当前天线pointing angle due to electronic 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 namedobj, use this syntax:

release(obj)

expand all

step RunSystem objectalgorithm
release Release resources and allow changes toSystem objectproperty values and input characteristics
reset Reset internal states ofSystem object

Examples

collapse all

Model the target echo received by a monostatic radar using theradarTransceiverobject.

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. Specifyrpmto 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/sbeamw = 1;% beamwidthupdaterate = scanrate/beamw;% update at each beamradarht = 15.0;% radar height

Create aphased.CustomAntennaElementobject that acts as a transmit antenna element and a receive antenna element in theradarTransceiverobject.

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 aradarTransceiverobject. Specify a rectangular waveform for the radar using thephased.RectangularWaveformobject. 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,...'MountingLocation',[0,0,radarht]);

Generate detections from a full scan of the radar.

simTime = 0; sigi = 0;whiletrue [sig, info] = sensor([tgt1 tgt2], simTime); sigi = sigi + abs(sig);% Is full scan complete?ifinfo.IsScanDonebreak% yesendsimTime = simTime + 1/updaterate;endr = (0:size(sigi,1)-1)/sensor.Waveform.SampleRate*...sensor.TransmitAntenna.PropagationSpeed/2; plot(r,sigi) holdonplot([5e3 5e3],ylim,'r--',[10e3 10e3],ylim,'r--') xlabel('Range (m)') ylabel('Magnitude')

Figure contains an axes object. The axes object with xlabel Range (m), ylabel Magnitude contains 3 objects of type line.

Find the received signals at a monostatic radar between 4 and 6 km from target.

First, create a target at a range of 5 km moving at 10 m/sec.

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

Create a rectangular pulse transmitted waveform.

wav = phased.RectangularWaveform('PulseWidth',1e-5);

Configure theradarTransceiver. The transmit and receive arrays are co-located 5-element ULAs. Configure theradarTransceiverto output the range and time.

ant = phased.IsotropicAntennaElement; array = phased.ULA(5,Element=ant); sensor = radarTransceiver(...Waveform=wav,...TransmitAntenna=phased.Radiator('Sensor',array),...ReceiveAntenna=phased.Collector('Sensor',array),...MechanicalScanMode='None',...RangeLimits=[2e3 6e3],...RangeOutputPort=true,...TimeOutputPort=true);

Generate the received signal.

simTime = 0; [sig,rgrid,tgrid,info] = sensor(tgt,simTime);

Plot the signal versus range and time.

plot(rgrid,abs(sig)) holdonplot([rng1 rng1],ylim,'r--') title('Round Trip Distance') xlabel('Range (m)') ylabel('Magnitude') holdoff

Figure contains an axes object. The axes object with title Round Trip Distance, xlabel Range (m), ylabel Magnitude contains 6 objects of type line.

plot(tgrid*10^6,abs(sig)) holdon; title('Round Trip Time') xlabel('Time (\mu sec)') ylabel('Magnitude') c = physconst('LightSpeed'); tarrive = 2*rng1/c*1e6; plot([tarrive tarrive],ylim,'r--')

Figure contains an axes object. The axes object with title Round Trip Time, xlabel Time ( mu blank s e c ), ylabel Magnitude contains 6 objects of type line.

Extended Capabilities

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

Version History

Introduced in R2021a