Phased Array System Toolbox Release Notes


New Features, Bug Fixes

Scenario Viewer: Visualize radar and target trajectories

The phased.ScenarioViewer System object™ is a UI tool for visualizing the trajectories of multiple objects, receivers, and transmitters in radar scenarios. The System object creates a 3-D display showing the motion of radars and targets over time. Use this display to:

  • annotate scenario objects with indicators such as position, speed, range, and angle

  • toggle the display of radar beams and dynamically alter their pointing directions

  • label the scenario objects with custom tags and motion history tracks

  • change all parameters during the simulation using the UI panel

Although designed for radar scenarios, you can also use the UI to visualize sonar and microphone models. You can change all parameters during the simulation by using the UI panel.

Intensity Scope: Visualize range-time-intensity (RTI) and Doppler-time-intensity (DTI) images

The phased.IntensityScope System object lets you create RTI and DTI displays for radar and sonar. An RTI display shows echo intensity as a function of time and range. A DTI display shows echo intensity as a function of time and Doppler shift, or speed. You can also visualize angle-time-intensity data or display spectrograms.

Atmospheric Loss: Model rain, fog, and atmospheric gas attenuation of RF signals

The phased.LOSChannel System object lets you simulate line-of-sight (LOS) propagation of narrowband RF signals. The model includes attenuation due to dry air, water vapor, rain, fog, and geometric spreading. The phased.WidebandLOSChannel System object performs the same function for wideband RF signals. These System objects correspond to the phased.FreeSpace and phased.WidebandFreeSpace System objects, which model propagation in vacuum. In addition, the toolbox provides two associated Simulink® blocks: LOS Channel and Wideband LOS Channel. When you want to perform analytic modeling, use the gaspl function to simulate attenuation due to atmospheric gases. The fogpl and rainpl functions let you model attenuation due to fog and rain, respectively.

Backscattered Radar Target: Model backscattered radiation with angle-dependent, custom RCS patterns

Using the phased.BackscatterRadarTarget System object, you can model an angle-dependent radar cross-section (RCS) or scattering pattern model for monostatic radar simulations. For nonpolarized signals, specify the RCS pattern as a single M-by-N matrix. For polarized signals, you specify a set of three matrices describing HH, VV, and HV scattering patterns. The entries in the matrices specify the RCS value for each azimuth and elevation angle with respect to the local target coordinate system. The toolbox provides an associated Simulink block, Backscatter Radar Target.

Phase Shift Quantization: Model effects of quantized beamformer weights on array patterns and responses

In this release, you can model beamformer and steering vector weights to finite precision. This feature appears in the System objects listed in the table and in the corresponding Simulink blocks.

In addition, the steering vector function, steervec, the conventional beamformer weights function, cbfweights, and the minimum-variance distortionless response weights function, mvdrweights, include a quantization bit argument.

In analytic models which use ideal components, the phase shifting required for precise array steering and beamforming is computed to infinite precision. In practical applications that model real radar components, the element phase shifting is computed to finite precision. Finite precision gives rise to quantization effects that can affect the beamforming and steering performance of an array. In some simulations, it is important to model quantization effects. Quantized phase shifters are categorized by the number of bits in the phase component of the weight vector.

Array Orientations: Set array pointing direction

Two features in this release give you more options for positioning elements on uniform arrays:

  • The ArrayAxis property lets you specify the position of ULA elements along the x-axis, y-axis, or z-axis of the local coordinate system. Previously, elements were located only along the y axis. This property applies to the phased.ULA and phased.HeterogeneousULA System objects.

  • The ArrayNormal property lets you place the elements of uniform planar arrays on the x-y-plane, y-z-plane, or the z-x-plane. Previously, elements were located only on the z-x plane. In these cases, the array normal axis points along the z, x, or y axes, respectively. This property applies to the phased.URA, phased.UCA and phased.HeterogeneousURA System objects.

  • These features appear in the Simulink blocks that use uniform arrays.

To obtain the direction normal vector for the elements of these arrays, use the getElementNormal method belonging to each System object.

Dynamic PRF: Change pulse repetition frequencies

You can change the pulse repetition frequency (PRF) at each call to the step method for these pulse waveform System objects: phased.RectangularWaveform, phased.LinearFMWaveform, PhaseCodedWaveform, and phased.SteppedFMWaveform. When initializing the waveforms, you specify a vector of PRFs. In the step method call, you then specify an index into this vector.

In addition, the DutyCycle property lets you specify pulse duration in terms of duty cycle. Previously, you specified pulse duration in the PulseWidth property. When you specify DutyCycle and PRF properties, the System object computes the pulse duration for you. The DutyCycle property applies to the phased.RectangularWaveform, phased.LinearFMWaveform, and phased.SteppedFMWaveform waveforms.

Short Dipole Orientation: Align dipole direction along any axis

You can align the dipole direction of the phased.ShortDipoleAntennaElement System object along the x-axis, y-axis, and z-axis.


New Features, Bug Fixes, Compatibility Considerations

Wideband Radiator: Radiate wideband signals from arrays and elements

The phased.WidebandRadiator System object lets you create wideband signals that radiate from an element or array source into different spatial directions. This System object is the wideband counterpart of the narrowband phased.Radiator System object. The radiator employs subband frequency processing to generate wideband propagating signals. Subband processing works in the frequency domain by dividing the signal spectrum into frequency bands and processing each band as if it were a narrowband signal.

This release also includes the corresponding Wideband Transmit Array Simulink block.

The phased.WidebandRadiator System object is one of several System objects introduced in this release to process wideband signals.

Wideband Free Space: Propagate wideband signals through free space

The phased.WidebandFreeSpace System object propagates wideband signals in free space along line-of-sight paths. The System object models time-delay, Doppler, and propagation loss and is the wideband counterpart of the narrowband phased.FreeSpace System object. The wideband free-space propagator uses subband frequency processing to propagate signals. Subband processing works in the frequency domain by dividing the signal spectrum into frequency bands and processing each band as if it were a narrowband signal.

This release also includes the corresponding Wideband Free Space Simulink block.

Wideband MVDR Beamformer: Perform frequency-domain MVDR beamforming on wideband signals

The phased.SubbandMVDRBeamformer System object performs minimum-variance distortional response beamforming on wideband signals. This System object is the wideband counterpart of the narrowband phased.MVDRBeamformer System object. The wideband MVDR System object uses subband frequency processing to beamform a signal. Subband processing works in the frequency domain by dividing the signal spectrum into frequency bands and processing each band as if it were a narrowband signal.

This release also includes the corresponding Subband MVDR Beamformer Simulink block.

Wideband DOA Estimator: Estimate the arrival angle of wideband signals using generalized cross-correlation

The phased.GCCEstimator System object estimates the direction of arrival (DOA) of wideband signals on an array. The System object uses the generalized cross-correlation with phase transform (GCC-PHAT) algorithm to determine the time delay of coherent signals from a common source arriving between pairs of sensors in an array. The algorithm estimates time delays from the cross-correlation peaks between signals. The direction of arrival follows directly from the computed time delays. The GCC-PHAT algorithm improves the sharpness of the correlation peak over ordinary correlation by whitening the signal spectrum.

In addition, the new gccphat function computes the time delay between two coherent signals from a common source arriving at different sensors.

This release includes the corresponding GCC DOA and TOA Simulink block.

Two-Ray Channel: Propagate signals along line-of-sight and ground-reflected paths

The phased.TwoRayChannel System object propagates signals in a channel with a single reflecting boundary. This type of boundary often occurs with radar signals reflecting from a ground plane or with acoustic signals reflecting from the ocean surface. This System object models the line-of-sight propagation path and the reflected propagation path. The model assumes flat-earth geometry and works with scalar field or polarized electromagnetic fields. To compute reflection loss for scalar fields, you specify a ground reflection loss parameter. For polarized electromagnetic fields, specify the relative dielectric permittivity.

In addition, the rangeangle function now computes the path distance and arrival directions for the line-of-sight and reflected ray paths. The phased.TwoRayChannel System object and rangeangle function work in air or underwater environments provided the signals are non-polarized fields and the propagation speed is appropriate for the medium.

All propagation paths follow straight lines between boundaries. This illustration illustrates line-of-sight (los) and reflected paths (rp) and arrival and emittance angles.

This release also includes the corresponding Two-Ray Channel Simulink block.

Improved Accuracy of Free Space Propagation: Implement fractional sample-time delay

This release changes how the phased.FreeSpace System object models propagation delays. In previous versions, propagation delays were always an integral number of sample times. This version outputs signals having fractional sample time delays. This change leads to a more accurate estimate of the actual propagation time for a signal.

Compatibility Considerations

The propagated signal output can differ from the output of previous versions.

Platform Motion: Model acceleration of targets and signal sources

The phased.Platform System object now models platform acceleration in addition to the existing constant-velocity model. Acceleration is also included in the corresponding Motion Platform Simulink block.

Wideband Collector: Subband selection changes

In the phased.WidebandCollector System object, when performing subband processing, you can choose the number of frequency subbands. Alternatively, the number of subbands can be automatically calculated. Similarly, you can choose the number of subbands in the corresponding Wideband Receive Array Simulink block.

Compatibility Considerations

The method for computing the default value for the number of frequency subbands has changed, potentially leading to different results. You can minimize the differences by setting the NumSubbands property value equal to the signal length.

Antenna Toolbox Integration: Changes to field values

Field values that you generate when using Antenna Toolbox™ antennas in a Phased Array System Toolbox™ array have changed. Previous array computations used the actual field value generated by the antenna. The new computation uses a normalized field value created by dividing the field by its maximum value over all spatial directions. Spatial directions are sampled over a 5° uniform grid in azimuth and elevation.

Compatibility Considerations

Computed values of radiated or received fields are changed. Antenna and array directivity pattern values are not change because they are already normalized quantities.

Platform Motion: Changes to orientation dynamics

In previous versions of the phased.Platform System object, the orientation matrix returned by the step method remained incorrectly fixed to the value of the OrientationAxes property specified during System object construction. (The step method returns the platform orientation matrix when the OrientationAxesOutputPort property is set to true.) In this release, the returned orientation matrix is properly updated at every call to the step method. The orientation axes are rotated if the platform undergoes curvilinear motion. Finally, the name of the OrientationAxes property is changed to InitialOrientationAxes to emphasis that the property specifies the initial value of the orientation matrix.

Compatibility Considerations

You should replace OrientationAxes by InitialOrientationAxes. In order to maintain the original behavior, set the OrientationAxesOutputPort property to false and always use the initial matrix that you specified in InitialOrientationAxes for all downstream processing.


New Features, Bug Fixes, Compatibility Considerations

Antenna Toolbox Integration: Use elements from Antenna Toolbox to design antenna arrays​

This release lets you use antenna elements from Antenna Toolbox in your phased array models and simulations. For example, to create a four-element array of helix antennas, enter

sAnt = helix('Radius',28e-3,'Width',1.2e-3,'Turns',4);
sArray = phased.ULA('Element',sAnt,'NumElements',4);
just as you would use antennas from Phased Array System Toolbox. Use of Antenna Toolbox requires an additional license. For more information on using this toolbox, go to Antenna Toolbox.

Array Calibration: Calibrate array element gain, phase, and position using pilot sources​​

This release introduces a function to perform array calibration. You can use the pilotcalib function to calibrate individual element gains, phases, and positions. This algorithm implements the pilot source technique and is commonly used for array calibration. The algorithm works by setting up multiple transmitters in known directions and using the array to receive the signals from those transmitters. Because these transmitters are in known directions, you can compute the expected received signal for the array and compare it to the actual received signal. From these differences, you can calibrate the array.

Uniform Circular Array: Perform beamforming and root-MUSIC direction-of-arrival estimation

This release introduces the phased.UCA System object to simulate uniform circular arrays (UCA). A uniform circular array has its elements equally spaced around a circle. The element normals point along the outward radius of the array. You can specify the number of elements and the radius of the array. From these two quantities, the object computes the position of the elements. This array accepts any polarized or nonpolarized element types and accepts complex-valued element tapers. You can use a UCA System object as an array for beamforming and direction-of-arrival in System objects such as phased.PhaseShiftBeamformer and phased.LCMVBeamformer.

In addition, enhancements to the phased.RootMUSICEstimator System object let you employ root-MUSIC direction finding algorithms on uniform circular arrays.

Model Simplification: Simulate multiple targets, platforms, and propagation channels using single block​s

Several blocks and System objects have been vectorized to support multitarget scenarios. When simulating multiple platforms and targets, you can combine separate blocks describing target cross-sections, platform motion, or channel propagation into single blocks. This change can simplify complex models. In addition, you can parameterize the number of targets to enable easy modification.

The following blocks and System objects now allow vectorized inputs and outputs:

Continuous MFSK Waveform: Estimate range and speed simultaneously for multiple targets

This release introduces a Multiple Frequency Shift Keying (MFSK) waveform, phased.MFSKWaveform System object and the corresponding Simulink block, MFSK Waveform. The continuous MFSK waveform is often used in automotive collision avoidance radar systems where simultaneous range and velocity determination is required. The waveform is constructed by interleaving two stepped sequences of increasing frequency CW waves.

Pattern methods for antennas, microphones, and arrays

For antenna, microphone, and array System objects, a new pattern method replaces the existing plotResponse method. In addition, this release introduces two simplified methods for drawing 2-D azimuth and elevation pattern plots: azimuthPattern and elevationPattern. See, for example, phased.ULA.pattern, phased.ULA.patternAzimuth, and phased.ULA.patternElevation.

This table is a guide for converting your code from using plotResponse to using pattern. Some of the inputs have changed from input arguments to name-value pair arguments and the converse. The general pattern method syntax is


plotResponse InputsplotResponse Descriptionpattern Inputs
H argumentAntenna, microphone, or array System object.H argument (no change)
FREQ argumentOperating frequency.FREQ argument (no change)
V argumentPropagation speed. This argument is used only for arrays.'PropagationSpeed' name-value pair. This parameter is only used for arrays.
'Format' and 'RespCut' name-value pairs

These options work together to let you create a plot in angle space (line or polar style) or UV space. They also determine whether the plot is 2-D or 3-D. This table shows you how to create different types of plots using plotResponse.

Display space 
Angle space (2D)Set 'RespCut' to 'Az' or 'El'. Set 'Format' to 'line' or 'polar'.

Set the display axis using either the

the 'AzimuthAngles' or 'ElevationAngles' name-value pairs.
Angle space (3D)Set 'RespCut' to '3D'. Set 'Format' to 'line' or 'polar'.

Set the display axis using both the

'AzimuthAngles' and'ElevationAngles' name-value pairs.
UV space (2D)Set 'RespCut' to'U'. Set 'Format' to 'UV'. Set the display range using the 'UGrid' name-value pair.
UV space (3D)Set 'RespCut' to'3D'. Set 'Format' to 'UV'. Set the display range using both the 'UGrid' and 'VGrid' name-value pairs.

'CoordinateSystem' name-value pair used together with the AZ and EL input arguments.

'CoordinateSystem' has the same options as the plotResponse method 'Format'name-value pair, except that 'line' is now named 'rectangular'. The table shows how to create different types of plots using pattern.

Display space 
Angle space (2D)Set 'Coordinate System' to 'rectangular' or 'polar'. Specify either AZ or EL as a scalar.
Angle space (3D)Set 'Coordinate System' to 'rectangular' or 'polar'. Specify both AZ and EL as vectors.
UV space (2D)Set 'Coordinate System' to 'uv'. Use AZ to specify a U-space vector. Use EL to specify a V-space scalar.
UV space (3D)Set 'Coordinate System' to 'uv'. Use AZ to specify a U-space vector. Use EL to specify a V-space vector.

If you set CoordinateSystem to 'uv', enter the UV grid values using AZ and EL.

'CutAngle' name-value pairConstant angle at to take an azimuth or elevation cut. When producing a 2-D plot and when 'RespCut' is set to 'Az' or 'El', use 'CutAngle' to set the slice across which to view the plot.No equivalent name-value pair. To create a cut, specify either AZ or EL as a scalar, not a vector.
'NormalizeResponse' name-value pairNormalizes the plot. When 'Unit' is set to 'dbi', you cannot specify 'NormalizeResponse'.'Normalize' name-value pair. When 'Type' is set to 'directivity',

you cannot specify 'Normalize'.

'OverlayFreq' name-value pairPlot multiple frequencies on the same 2-D plot. Available only when 'Format' is set to 'line' or 'uv' and 'RespCut' is not set to '3D'. The value true produces an overlay plot and the value false produces a waterfall plot.

'PlotStyle' name-value pair plots multiple frequencies on the same 2-D plot.

The values 'overlay' and 'waterfall' correspond to 'OverlayFreq' values of true and false. The option 'waterfall' is allowed only when 'CoordinateSystem' is set to 'rectangular' or 'uv'.

'Polarization' name-value pairDetermines how to plot polarized fields. Options are 'None', 'Combined', 'H', or 'V'.'Polarization' name-value pair determines how to plot polarized fields. The 'None' option is removed. The options 'Combined', 'H', or 'V' are unchanged.
'Unit' name-value pairDetermines the plot units. Choose 'db', 'mag', 'pow', or 'dbi', where the default is 'db'.'Type' name-value pair, uses equivalent options with different names

'Weights' name-value pairArray element tapers (or weights).'Weights' name-value pair (no change).
'AzimuthAngles' name-value pairAzimuth angles used to display the antenna or array response.

AZ argument

'ElevationAngles' name-value pairElevation angles used to display the antenna or array response.

EL argument

'UGrid' name-value pairContains U coordinates in UV-space.

AZ argument when 'CoordinateSystem' name-value pair is set to 'uv'

'VGrid' name-value pairContains V-coordinates in UV-space.

EL argument when 'CoordinateSystem' name-value pair is set to 'uv'

Sensor Array Analyzer and Radar Waveform Analyzer configurable layout

You can now hide, rearrange, and undock the configuration panels in the Sensor Array Analyzer and Radar Waveform Analyzer apps. The content and functionality have not changed. These figures show how you can hide the Waveform Characteristics, Visualization Settings and Waveform Settings panes so that you can focus on the waveform shape.

Launch Sensor Array Analyzer from Tx and Rx blocks

The Narrowband Transmit Array and Narrowband Receive Array blocks let you display and analyze properties of the arrays that you use in your model. You can display an array's shape, its 2-D and 3-D directivities, and its grating lobe structure. To use this feature, on the Sensor Array panel of either block, click Analyze. As an example, this Narrowband Transmit Array block dialog models an 11-element ULA with elements spaced 0.4 meters apart with an operating frequency of 300 MHz.

Click Analyze to open the Sensor Array Analyzer app and show the array directivity.

Improvements for creating System objects

  • Number of allowable code generation inputs increased to 32

  • isInputSizeLockedImpl method for specifying whether the input port dimensions are locked

  • matlab.system.display.Action class, used in the getPropertyGroupsImpl method, to define a MATLAB System block button that can call a System object method

  • getSimulateUsingImpl and showSimulateUsingImpl methods to set the value of the SimulateUsing parameter and specify whether to show the SimulateUsing parameter in the MATLAB System block

Functionality being removed or changed

FunctionalityWhat Happens When You Use This Functionality?Use This InsteadCompatibility Considerations
plotResponse methods for all antenna, microphone, and array System objectsStill runspatternReplace all instances of plotResponse with pattern or consider using the new simplified methods patternAzimuth and patternElevation. See Pattern methods for antennas, microphones, and arrays for conversion information.


New Features, Bug Fixes, Compatibility Considerations

Simulink blocks for phased array system design

This release adds phased array processing to Simulink. You can use Simulink to model from end-to-end the transmission, propagation, reception, and detection of signals from antenna and microphone arrays. Over forty blocks are available in 7 libraries with these capabilities.

Phased Array LibraryPurpose
BeamformingConventional and adaptive beamformers, such as LCMV and MVDR
DetectionDetection algorithms, including matched filtering and CFAR
Direction of ArrivalDOA algorithms, including beamscan, MUSIC, and ESPRIT
EnvironmentClutter models, jammers, and target models
STAPSpace-time adaptive processing
Transmitters and ReceiversArrays for transmitting and receiving
WaveformsSignal waveforms, such as Linear FM, FMCW, and rectangular

Directivity of antennas, microphones, and phased arrays

This release adds directivity methods to each antenna and microphone System object and each array, replicated subarray, and partitioned array System object. Directivity is a useful measure of performance for antenna and microphone elements and arrays of elements. Using these methods, you can calculate the directivity values for different directions and frequencies. For examples using the new methods for several System objects, see these pages.

Phased Array System objectDirectivity Method
Cosine Antenna Elementphased.CosineAntennaElement.directivity
Uniform Linear Arrayphased.ULA.directivity
Partitioned Arrayphased.PartitionedArray.directivity

Remove NoiseBandwidth property from phased.ReceiverPreamp System object

The NoiseBandwidth property of the phased.ReceiverPreamp System object is obsolete and may be removed in a future release. This property is not used in any computation. As of this release, a warning message will be displayed when phased.ReceiverPreamp is invoked with the NoiseBandwidth property specified. To suppress this message, type warning off phased:system:System:NoiseBandwidthWarning at the command line at any time. Alternatively, you can include this command in your startup.m script or other scripts that use phased.ReceiverPreamp.

Compatibility Considerations

To avoid future incompatibility, remove all occurrences of the NoiseBandwidth property.

Property value name change for phased.RangeDopplerResponse System object

In the RangeMethod property of the phased.RangeDopplerResponse System object, the 'Dechirp' value has been renamed to 'FFT' value. This change is a name change only. The 'Dechirp' value name will be removed in a future release.

Compatibility Considerations

When using the RangeMethod property in your code, change all occurrences of 'Dechirp' to 'FFT'.


New Features, Bug Fixes, Compatibility Considerations

Grating lobe diagrams

You can plot the locations of the grating lobes of uniform linear arrays using the new ULA System object method plotGratingLobeDiagram. For uniform rectangular arrays, you use the URA System object method plotGratingLobeDiagram. Using grating lobe diagrams, you can visualize the grating-lobe-free scan region of the array.

The sensorArrayAnalyzer app also provides an option for plotting grating lobe diagrams for uniform linear arrays, uniform rectangular arrays, uniform hexagonal arrays, and circular planar arrays. For example, here is the grating lobe diagram of a spatially undersampled 4-by-4 URA steered towards 35° azimuth.

Visualization of element and array directivity

In R2014a, you have a directivity plotting option for all sensor elements, arrays, and subarrays. Directivity patterns help you analyze sensor element and array performance. To plot the directivity, choose 'dbi' for the Unit parameter value of the plotResponse method.

The directivity pattern of an array takes into account the directivity pattern of its constituent sensors. Examples of how to create directivity pattern plots for selected sensor elements, arrays and subarrays can be found here.

The sensorArrayAnalyzer app also plots 2D and 3D array directivity patterns. You can plot array directivity patterns for all supported array types by choosing 2D Array Directivity or 3D Array Directivity from the Visualization drop-down list. When you plot 2D directivities, you can choose the azimuth and elevation angles at which the cuts are taken. These plots replace the 2D and 3D array response plots. Here is an example of a directivity pattern plot of a 10-element uniform linear array.

Arbitrary geometry and custom element support in the Sensor Array Analyzer app

In R2014a, there are significant modifications and additions to the sensorArrayAnalyzer app.

  • You can specify any array geometry by choosing Arbitrary Geometry from the Array Type drop-down list. Then, you specify the element positions in the Element Position field and the element normal angles in the Element Normal field. You can enter the element positions and normal angles directly or use MATLAB® variables and arrays defined at the command prompt.

  • You can define your own antenna type by choosing Custom Antennas from the Element Type drop-down list. You must supply a radiation pattern in the Radiation Pattern field. You must also supply values to the Frequency Vector, Frequency Response, Azimuth Angles, and Elevation Angles fields. The azimuth angle dimensions must match the column dimensions of the radiation pattern. The elevation angle dimensions must match the row dimensions of the radiation pattern. You can enter antenna values directly into the app fields or use a MATLAB variable or array defined at the command prompt.

  • You can plot array directivity patterns for all supported arrays, as described in Visualization of element and array directivity.

  • You can plot grating lobe diagrams for several types of arrays, as described in Grating lobe diagrams.

  • You can apply custom taper weights (also known as shading weights) to the array elements for all array geometries. Specify the weights in the Taper field directly or use a MATLAB array defined at the command prompt.

  • For convenience, you can use MATLAB variables and arrays as entries into some of the app data fields. Instead of typing numerical values into the fields, you can define the values as variables or arrays at the MATLAB command prompt and use the name of the variable or array in the field.

Pulse repetition interval parameter for the Radar Waveform Analyzer app

In R2014a, with the radarWaveformAnalyzer app, you can specify the temporal spacing between pulses as either the pulse repetition frequency, PRF, in hertz, or as the pulse repetition interval, PRI, in seconds, where PRI = 1/PRF.

Property name change in phased.PhaseCodedWaveform

The Type property of the phased.PhaseCodedWaveform System object has been renamed to Code property. This System object creates a phase-coded pulse waveform. The Code property specifies the code that you use in phase modulation. This change is a name change only. The Type property name will be removed in a future release.

Compatibility Considerations

To avoid future incompatibility, change all instances of this property name to the new name.

System object templates

The MATLAB® New > System object menu now has three new class-definition file templates. The Basic template sets up a simple System object. The Advanced template includes additional features of System objects. The Simulink Extension template provides additional customization of the System object for use in the MATLAB System block.

System objects infer number of inputs and outputs from stepImpl method

When you create a new kind of System object that has a fixed number of inputs or outputs specified in the stepImpl method, you no longer need to include getNumInputsImpl or getNumOutputsImpl in your class definition file. The correct number of inputs and outputs are inferred from the stepImpl inputs and outputs, respectively.

System objects infoImpl method allows variable inputs

When you create a new kind of System object, you can use the info method to provide information specific to that object. The infoImpl method, which you include in your class-definition file, now allows varargin as an input argument.

System objects base class renamed to matlab.System

The System object base class, matlab.system.System has been rename to matlab.System. If you use matlab.system.System when defining a new System object, a error message results.

Compatibility Considerations

Change all instances of matlab.system.System in your System objects code to matlab.System.

System objects Propagates mixin methods

Four new methods have been added to the Propagates mixin class. You use this mixin when creating a new kind of System object for use in the MATLAB System block in Simulink. You use these methods to query the input and specify the output of a System object.

  • propagatedInputComplexity

  • propagatedInputDataType

  • propagatedInputFixedSize

  • propagatedInputSize


New Features, Compatibility Considerations

Code generation for functions and objects

The Phased Array System Toolbox lets you generate C/C++ code from your phased-array MATLAB application code using the MATLAB Coder™. You can create your own standalone C/C++ executables, libraries, and MEX functions directly and automatically from code that you have written that uses phased-array System objects and functions. MATLAB Coder supports basic MATLAB language features such as program control, functions, and matrix operations. See About Code Generation for more information on the use of MATLAB Coder with the Phased Array System Toolbox.

Visualization of element and array radiation patterns with arbitrary resolution

In this release, the plotResponse method now lets you plot the radiation pattern with different display ranges and resolutions. Previously, for example, you could only plot the pattern in one degree increments in azimuth and elevation. New display options, AzimuthAngles, ElevationAngles, UGrid, and VGrid, give you freedom to change the display range and resolution of the output in azimuth and elevation or in U/V space. These new options apply to all antenna and microphone elements, arrays and subarrays. For documentation and usage examples, see phased.CosineAntennaElement/plotResponse, phased.URA/plotResponse, and phased.ReplicatedSubarray/plotResponse.

Plot response of multiple sets of weights for a single frequency

The Weights display option of the plotResponse method has a new feature. This applies to all array, replicated subarray and partitioned array System objects. Previously, you could only specify one weight set for multiple frequencies or a different weight set for each frequency. You can now display the response due to multiple sets of weights for a single frequency. For documentation and examples of how to use this properties, see phased.URA/plotResponse, and phased.ReplicatedSubarray/plotResponse.

New default frequency limits for antenna and microphone elements

The restriction on the range of valid frequencies for all antenna and microphone elements is effectively eliminated by increasing the maximum frequency value to 1020 and setting the minimum value to zero.

Function delayseq implements FFT length of power of two

The function delayseq now use an internal FFT length equal to a power of two.

Compatibility Considerations

This change in internal logic produces some insignificant numerical differences. No action is required.

System objects matlab.system.System warnings

The System object base class, matlab.system.System has been replaced by matlab.System. If you use matlab.system.System when defining a new System object, a warning message results.

Compatibility Considerations

Change all instances of matlab.system.System in your System objects code to matlab.System.

Restrictions on modifying properties in System object Impl methods

When defining a new System object, certain restrictions affect your ability to modify a property.

You cannot use any of the following methods to modify the properties of an object:

  • cloneImpl

  • getDiscreteStateImpl

  • getNumInputsImpl

  • getNumOutputsImpl

  • validateInputsImpl

  • validatePropertiesImpl

This restriction is required by code generation, which assumes that these methods do not change any property values. These methods are validation and querying methods that are expected to be constant and should not impact the algorithm behavior.

Compatibility Considerations

If any of your class definition files contain code that changes a property in one of the above Impl methods, move that property code into an allowable Impl method. Refer to the System object Impl method reference pages for more information.

plotResponse method handle graphics property change

When you use the plotResponse method to return a 3‑D display of the element or array response in UV coordinates, the sample coordinates of the displayed data have changed. The data contained in the handle graphics properties, ‘XData', ‘YData', and ‘ZData', are now sampled uniformly in Cartesian UV grid coordinates instead of uniformly in polar grid coordinates. This changed applies to the plotResponse method for all antenna and microphone element System objects and array System objects.

Compatibility Considerations

The data is now in uniformly-sampled Cartesian UV coordinates. The plotResponse display appearance remains unchanged.

Single normal vector for conformal arrays

When you use a conformal array System object, you can specify a single normal direction vector for the case when all the element normal vectors point in the same direction. Previously, the ElementNormal property required you to specify a separate normal direction vector for each element. This syntax applies to the phased.ConformalArray and phased.HeterogeneousConformalArray System objects.


New Features, Bug Fixes, Compatibility Considerations

Polarization support for antennas, arrays, and targets that includes transmission, propagation, and reception of polarized signals

A major enhancement to the Phased Array System Toolbox product for R2013a lets you simulate the transmission, propagation and reception of polarized electromagnetic waves. Polarization simulation is turned on by setting a new property EnablePolarization in phased.Radiator, phased.Collector, phased.WidebandCollector, phased.RadarTarget, phased.SteeringVector and phased.ArrayResponse System objects. Two new types of antennas specifically for polarized waves are introduced:

You can test whether an antenna or array of antennas can be used to simulate polarization by invoking the isPolarizationCapable method. Only phased.ShortDipoleAntennaElement, phased.CrossedDipoleAntennaElement, and phased.CustomAntennaElement support polarization. Polarization properties of arrays depend upon the properties of their constituent antenna elements.

The phased.CustomAntennaElement System object has several new properties for polarization. You can use the SpecifyPolarizationPattern property to specify whether to use a horizontal or vertical radiation pattern or a combined pattern and then specify HorizontalMagnitudePattern, HorizontalPhasePattern, VerticalMagnitudePattern, and/or VerticalPhasePattern to create the pattern itself.

Changes have been made to the step and plotResponse methods for antenna elements and arrays. With polarization enabled, the step method returns a struct instead of a data array. The plotResponse method plots the horizontal polarization response, the vertical polarization response or a combined polarization response when you set the name-value property Polarization to H, V or Combined. This applies to only arrays and antennas that are capable of polarization. When an antenna or array is not capable of polarization, a fourth option, None, is required.

The phased.RadarTarget System object lets you model the response of a target to a polarized field by invoking the EnablePolarization property. The new Mode property allows for monostatic or bistatic antenna-target configurations. You can set the target's complex 2-by-2 radar cross-section matrix using the new ScatteringMatrix property. The scattering matrix contains the HH, HV, VH, and VV responses of the target.

Summary of Phased Array Polarization Capabilities

CategorySystem ObjectsNew and Modified PropertiesNew and Modified Methods
Antennas and Microphone Elementsphased.CosineAntennaElement
phased.CrossedDipoleAntennaElement (new)
phased.ShortDipoleAntennaElement (new)
Array Geometries and Analysisphased.ConformalArray
Signal Radiation and Collectionphased.Collector
Environment and Target Modelsphased.RadarTarget

To support polarization simulation analysis, this release includes new utility functions:

Utility Functions

polellipParameters of ellipse traced out by tip of a polarized field vector
polratioRatio of vertical to horizontal linear polarization components of a field
stokesStokes parameters of polarized field
circpol2polConvert circular component representation of field to linear component representation
pol2circpolConvert linear component representation of field to circular component representation
pollossPolarization loss
polsignatureRadar cross section polarization signature
rotxRotation matrix for rotations around x-axis
rotyRotation matrix for rotations around y-axis
rotzRotation matrix for rotations around z-axis
sph2cartvecConvert vector from spherical basis components to Cartesian components
cart2sphvecConvert vector from Cartesian components to spherical representation
azelaxesSpherical basis vectors in 3-by-3 matrix form

Array tapers for the modeling of magnitude and phase perturbations

This release adds element taper (array weighting) support to phased.ULA, phased.URA , and phased.ConformalArray System objects using the new Taper property. Tapers can be complex-valued coefficients. Real-valued tapers are usually used, for example, to reduce sidelobe levels; complex tapers are useful for modeling phase perturbations. A new method, getTaper, lets you retrieve the taper values. The method, viewArray, has been modified to display the array with taper values shown.

Arrays with multiple element patterns, enabling the modeling of edge effects and pattern perturbations

Sensor arrays can now be created to have different antenna patterns assigned to different sensors. These are called heterogeneous arrays. To enable this capability, three new system objects are being introduced, phased.HeterogeneousULA, phased.HeterogeneousURA, and phased.HeterogeneousConformalArray. Heterogeneous arrays let you model, for example, cross-element coupling effects or pattern perturbations. You can specify the types of elements you want in the array using the ElementSet property and then assign a type to each sensor location using the ElementIndices property.

Radar Equation Calculator, Radar Waveform Analyzer, and Sensor Array Analyzer apps

R2013a introduces the first three Phased Array System Toolbox apps:

  • radarEquationCalculator starts the Radar Equation Calculator which lets you solve for any one of Target Range, Peak Transmit Power, or SNR from the well-known radar equation. Alternatively, you can start Radar Equation Calculator by selecting it from the SIGNAL PROCESSING AND COMMUNICATIONS section of the Apps tab in the MATLAB toolstrip.

  • radarWaveformAnalyzer invokes the Radar Waveform Analyzer which can plot the shape of five common waveforms as well as their spectra and ambiguity functions. Alternatively, you can start the Radar Waveform Analyzer app by selecting it from the SIGNAL PROCESSING AND COMMUNICATIONS section of the Apps tab in the MATLAB toolstrip.

  • sensorArrayAnalyzer starts Sensor Array Analyzer to display the geometry of eight different common array configurations. It can also plot the 2-D and 3-D array responses. The user can set the number of array elements, element types, and element spacings and other parameters. Alternatively, you can start the Sensor Array Analyzer app by selecting it from the SIGNAL PROCESSING AND COMMUNICATIONS section of the Apps tab in the MATLAB toolstrip.

Visualization of radar vertical coverage on Blake charts

New radar analysis tools, blakechart and radarvcd, plot radar range-height-angle (Blake) charts and vertical coverage diagrams. You can use these radar design tools to predict the maximum radar range. This function employs the CRPL Exponential Reference Atmosphere model of the refractive index of the atmosphere.

Custom antenna element patterns specified at different frequencies

This new feature of phased.CustomAntennaElement lets you specify frequency-dependent antenna patterns. You do so by creating a 3D array containing pattern values for azimuth, elevation and frequency.

Full GPU support for clutter model, including nonisotropic antennas and subarrays (using Parallel Computing Toolbox)

You can now use the phased.gpu.ConstantGammaClutter System object to accelerate clutter simulations with all antenna types not just isotropic. This System object typically runs faster than phased.ConstantGammaClutter. However, there is no GPU support for clutter modeling of polarized waves. phased.gpu.ConstantGammaClutter requires a license for the Parallel Computing Toolbox™ and a GPU-enabled computer.

Ordinary functions for narrowband beamformers

These new functions give you tools to compute narrowband beamformer weights without requiring the system object framework:

  • steervec computes the steering vector for a narrowband conventional 1D, 2D, or 3D beamformer of arbitrary shape. The antenna elements are assumed to be isotropic. Inputs to this function are the element positions in units of wavelength and the directions-of-arrival of the incoming signals.

  • cbfweights computes the weights for a narrowband conventional 1D, , or 3D beamformer of arbitrary shape. The antenna elements are assumed to be isotropic. Inputs to this function are the element positions in units of wavelength and the directions-of-arrival of the incoming signals. The weights produced by cbfweights equal those produced by steervec divided by the number of elements in the array.

  • mvdrweights returns the weights for a narrowband minimum variance distortionless response (MVDR) beamformer. Inputs to this function are the element positions in units of wavelength, the directions-of-arrival of the incoming signals, and the sensor covariance matrix.

  • lcmvweights returns the weights for a narrowband linear constraint minimum variance (LCMV) beamformer. Inputs are the signal covariance matrix, the desired responses, and the constraint matrix.

  • sensorcov returns the received spatial covariance matrix for narrowband plane wave signals arriving at a sensor array. Inputs are the sensor element positions in units of wavelength and the directions-of-arrival of the incoming signals. Optional inputs are the sensor noise and signal covariance matrices.

Ordinary functions for narrowband signal directions-of-arrival at a uniform line array

These new functions allow you to compute directions-of-arrival (DOA) of narrowband signals for uniform line arrays without requiring the use of the system object framework.

  • rootmusicdoa computes, using the Root MUSIC algorithm, a vector of estimated arrival directions of multiple signals. This estimator uses the sensor covariance matrix and requires that the number of signals be a known value.

  • espritdoa computes, using the TLS ESPRIT algorithm, a vector of estimated arrival directions of multiple signals. This estimator uses the sensor covariance matrix and requires that the number of signals be a known value.

  • aictest estimates the number of signals arriving at an array using the Akaike Information Criterion test. This estimator uses a set of snapshots taken at each sensor.

  • mdltest estimates the number of signals arriving at an array using the Minimum Description Length test. This estimator uses a set of snapshots taken at each sensor.

  • spsmooth performs spatial smoothing (averaging) of a covariance matrix using maximum overlapped subarrays.

Deprecated VisibleRegion in phased.ESPRITEstimator

The VisibleRegion property of the phased.ESPRITEstimator System object will be removed in a future release.

Compatibility Considerations

In the future, users will have to remove the use of this property from their code.

Element indexing pattern change for phased.URA and phased.ReplicatedSubarray

The index order of the elements of a uniform rectangular array as constructed in phased.URA has changed with this release. Instead of row-major order, elements are stored in column-major order. This has implications for the size and shape of an array. The size of the array is still specified by the Size property which is a 1-by-2 integer vector (or a single integer for square arrays). This vector is now interpreted as [NumberOfRows, NumberOfColumns]. The corresponding ElementSpacing property is a 1-by-2 vector containing the distance between elements (in meters) as [SpacingBetweenRows, SpacingBetweenColumns]. If ElementSpacing is a scalar, the distance along the columns and rows is the same. The following figure shows how the indexing and shape of an array are changed with this release by using a 6-element rectangular array as an example. Previously, a [3,2] array would have three columns and two rows; now it has two columns and three rows.

When constructing replicated subarrays using phased.ReplicatedSubarray, the GridSize and GridSpacing properties are used to position the subarrays on a rectangular grid. You specify the dimensions of the grid using the GridSize property and the distance between grid points with GridSpacing property. As with phased.URA, the interpretation of these properties has changed with this release. In this release, GridSize is a 1-by-2 vector in the form of [NumberOfRows NumberOfColumns] gives the number of elements along each column (z-axis) and the number of elements along each row (y-axis). If GridSize is a scalar, the replicated array has the same number of grid points in each row and column. The GridSpacing property can either be 1-by-2 vector in the form of [SpacingBetweenRows SpacingBetweenColumns] or a scalar (units are meters). If GridSpacing is a scalar, the distance along the rows and columns is the same. The following figure shows how the indexing and shape of a replicated subarray are changed with this release using a GridSize of [1,2]. This creates a 1-by-2 grid of subarrays as shown on the right-hand side of the figure.

These changes make antenna array indexing consistent with the MATLAB convention. To insure that the user is aware of this important change, a warning message will be displayed when phased.URA are invoked. This message may be suppressed by typing warning off phased:system:array:SizeConventionWarning at the command line at any time or by including it in your startup.m script and other scripts. A similar warning appears when phased.ReplicatedSubarray is invoked. Type warning off phased:system:array:GridConventionWarning to suppress this message.

Compatibility Considerations

Since data is now stored differently, results will generally differ from that of previous releases for the same input. In most cases however, interchanging the order of entries in the Size and ElementSpacing vectors for phased.URA and the GridSize and GridSpacingvectors for phased.ReplicatedSubarray will give the same results. If you need to look at the output of individual array elements, then there will be some differences.

MATLAB Compiler Support

Phased Array System Toolbox supports the MATLAB Compiler™ for all functions and System objects. Compiler support does not extend to any of the toolbox apps.

New method for action when System object input size changes

The processInputSizeChangeImpl method allows you to specify actions to take when an input to a System object you have defined changes size. If an input changes size after the first call to step, the actions defined in processInputSizeChangeImpl occur when step is next called on that object


New Features, Compatibility Considerations

Acceleration of clutter model simulation with parfor or GPUs

A change in the phased.ConstantGammaClutter System object facilitates performing Monte Carlo simulations with Parallel Computing Toolbox constructs, such as parfor. For details about this change, see the description of random number stream usage that follows.

The new —phased.gpu.ConstantGammaClutter System object simulates clutter on a GPU. This System object typically runs faster than phased.ConstantGammaClutter. Using phased.gpu.ConstantGammaClutter requires a license for Parallel Computing Toolbox software.

FMCW waveforms

The phased.FMCWWaveform System object models a frequency modulated continuous wave (FMCW) waveform.

These functions help you determine appropriate property values for phased.FMCWWaveform:

These functions help you simulate and analyze systems that process FMCW waveforms:

CFAR detector, supporting SOCA, GOCA, and order statistic thresholds

The phased.CFARDetector System object provides a new property named Method. Using this property, you can choose among four CFAR detection algorithms: cell averaging (default), smallest-of cell averaging (SOCA), greatest-of cell averaging (GOCA), and order statistic.

Compatibility Considerations

In R2012b, if you save a CFAR detector variable in a MAT-file, you cannot load that variable from the MAT-file in an earlier version. Instead, re-create the variable in the earlier version.

Function to simulate signals received by an array

The new sensorsig function simulates plane wave signals received at a phased array. This function facilitates statistical analysis and testing of direction-of-arrival algorithms. The function does not require you to simulate an entire phased array system.

Range-Doppler estimation

The new phased.RangeDopplerResponse System object generates and plots range-Doppler maps.

Propagation model that now supports intrapulse Doppler modeling

The phased.FreeSpace System object models the Doppler shift both within a pulse (fast time) and between successive pulses (slow time). In previous releases, the object modeled only the slow-time Doppler shift.

This enhanced Doppler shift modeling is especially useful for observing range-Doppler coupling in a radar system that uses a linear FM waveform.

Compatibility Considerations

The step method of the phased.FreeSpace System object has two additional input parameters:

  • origin_vel, the velocity of the signal origin

  • dest_vel, the velocity of the signal destination

To update legacy code that uses this step method, use one of these approaches:

  • In some cases, the signal origin or signal destination is stationary. If so, set the corresponding velocity input argument to [0; 0; 0].

  • In other cases, the signal origin or signal destination is moving, and you are using phased.Platform to model the moving platform. In this situation, obtain the velocity vector as an additional output argument from the step method of phased.Platform. Then, specify this velocity vector as an input argument in the step method of phased.FreeSpace. For example, compare the R2012a and R2012b versions of an example, and notice the introduction of the txvel variable in the R2012b version.

Visualization of array geometries

You can call viewArray on a phased array to plot the positions, normal directions, and element indices of the elements in the array. For arrays containing subarrays, viewArray can also graphically highlight one or more of the subarrays.

The System objects affected are:

  • phased.ULA

  • phased.URA

  • phased.ConformalArray

  • phased.ReplicatedSubarray

  • phased.PartitionedArray

For more information, see the reference pages for:

  • viewArray for arrays without subarrays, such as phased.ULA

  • viewArray for arrays containing subarrays, such as phased.PartitionedArray

Random number stream usage for parallel computing

System objects in Phased Array System Toolbox software that rely on a random number generator now behave differently when you set the SeedSource property to 'Auto':

  • The object uses the global stream of random numbers instead of a private stream. This change is useful if you are performing the computations in a set of Monte Carlo trials involving Parallel Computing Toolbox software. In that situation, the global stream is more suitable than a stream that the System object manages internally.

  • The reset method does not reset the random number generator.

The System objects affected by this change are:

Compatibility Considerations

The following compatibility considerations apply to System objects that existed in earlier releases, if your legacy code configures the objects with the SeedSource property set to 'Auto'.

  • In operations involving the System objects, the specific random numbers in R2012b differ from the random numbers in earlier releases.

  • If your code later performs an arbitrary operation that uses the global random number stream, this operation also uses different random numbers compared to earlier releases.

  • In some cases, your code may rely on operations in earlier releases that reset or restore the random number generator while loading, cloning, or resetting objects. If so, you should update your code to reset or restore the global stream yourself.

save and load for System objects

You can create your own save and load methods for a System object you create. To do so, use the saveObjectImpl and loadObjectImpl, respectively, in your class definition file.


New Features, Compatibility Considerations

Replicated Subarrays and Partitioned Array Apertures

A subarray is an accessible subset of array elements. The following new System objects enable you to create arrays that contain subarrays:

The following table lists existing System objects that now support operations on arrays that contain subarrays. Each of the objects in the table has a property called SensorArray or Sensor. You can set that property to an array object that contains subarrays. Also, some of the objects in the table support subarray steering through a new input argument, STEERANGLE, in the step method.

System ObjectSensorArray or Sensor Can Contain Subarraysstep Syntax Can Include Subarray Steering


YesNot applicable










YesNot applicable


YesNot applicable




YesNot applicable




YesNot applicable



For more information about using subarrays, see Subarrays Within Arrays.

Compatibility Considerations

The IncludeElementResponse property of the phased.SteeringVector System object is no longer tunable in V1.2 (R2012a). This change facilitates support for arrays containing subarrays.

You may have code from an earlier version that tunes the value of the IncludeElementResponse property of a locked steering vector object. If so, the code will produce an error message in R2012a. You can avoid the error message by calling release to unlock the object, or by not changing the value of the IncludeElementResponse property.

Stretch Processing

The following new features help you perform pulse compression on linear frequency modulation (FM) waveforms using stretch processing:

Stretch processing is sometimes called deramping or dechirping.

For more information about using stretch processing, see Stretch Processing.

U/V Space and Phi/Theta Angles

Several enhancements facilitate performing operations in the u/v coordinate system or in a spherical coordinate system that describes angles using φ and θ instead of azimuth and elevation:

For an example, look at Antenna Radiation Pattern in U/V Coordinates. For background information about the coordinate systems, see Spherical Coordinates.

Multiple-Beam Beamformers

The following beamformers support multiple beamforming directions:

You can use this capability to model switched-beam systems.

To indicate multiple beamforming directions, use a matrix instead of a vector for the Direction property of the beamformer object or the ANG input argument of step. In earlier versions, the value required a vector. Now, when you specify multiple beamforming directions, the Y and W outputs of step have an extra matrix dimension.

Compatibility Considerations

In V1.2 (R2012a), you can create a MAT-file that stores a beamformer variable specifying multiple directions in the Direction property. However, you cannot load that variable from the MAT-file in an earlier version. As an alternative, you can re-create the variable in the earlier version and specify only one beamforming direction.

Support for Wideband Beam Pattern Analysis

The plotResponse method for arrays, antenna elements, and microphone elements has enhancements for use with wideband beamforming applications.

  • For arrays or elements, plotResponse can plot multiple frequency responses in a three-dimensional waterfall plot. To use this feature, include 'OverlayFreq',false in the plotResponse syntax. The OverlayFreq argument is new.

  • For arrays, plotResponse can apply weights independently to each frequency in the plot. For example, you can use beamformer weights as in Visualization of Wideband Beamformer Performance. To use this feature, include 'Weights',Value in the plotResponse syntax, where Value is a vector or matrix. R2011b required that the weights be the same for all frequencies in the plot and that Value be a vector.

In the phased.ArrayResponse and phased.ArrayGain System objects, the step method permits the WEIGHTS input argument to be a vector or a matrix. In earlier releases, WEIGHTS is a vector.

Beamformer Option to Preserve Power

The phase shift beamformer offers options for normalizing the beamformer weights. To select an option, set the new WeightsNormalization property of the phased.PhaseShiftBeamformer object to one of these values:

  • 'Distortionless' — The gain toward the beamforming direction is 0 dB. This choice is the default and matches the behavior in earlier versions.

  • 'Preserve power' — The norm of the weights is 1.

Compatibility Considerations

In V1.2 (R2012a), if you save a phase shift beamformer variable in a MAT-file, you cannot load that variable from the MAT-file in an earlier version. Instead, re-create the variable in the earlier version.

Symmetric Sweeping of Linear FM Waveform

You can create a linear FM waveform to sweep in an interval that is symmetric about 0 or positive only. To choose the location of the FM sweep interval, set the new SweepInterval property of the phased.LinearFMWaveform object to one of these values:

  • 'Positive' — The waveform sweeps between 0 and B, where B is the sweep bandwidth. This choice is the default and matches the behavior in earlier versions.

  • 'Symmetric' — The waveform sweeps between –B/2 and B/2.

Toolbox Location of dutycycle Function

The dutycycle function in the Signal Processing Toolbox™ product replaces the earlier dutycycle function in the Phased Array System Toolbox product. The new function includes both the capabilities of the earlier function and additional new capabilities.

New System Object Option on File Menu

The File menu on the MATLAB desktop now includes a New > System object menu item. This option opens a System object class template, which you can use to define a System object class.

Variable-Size Input Support for System Objects

System objects that you define now support inputs that change size at runtime.

Data Type Support for System Objects

System objects that you define now support all MATLAB data types as inputs and outputs.

New Property Attribute to Define States

R2012a adds the new DiscreteState attribute for properties in your System object class definition file. Discrete states are values calculated during one step of an object's algorithm that are needed during future steps.

New Methods to Validate Properties and Get States from System Objects

The following methods have been added:

  • validateProperties – Checks that the System object is in a valid configuration. This applies only to objects that have a defined validatePropertiesImpl method

  • getDiscreteState – Returns a struct containing a System object's properties that have the DiscreteState attribute

matlab.system.System changed to matlab.System

The base System object class name has changed from matlab.system.System to matlab.System.

Compatibility Considerations

The previous matlab.system.System class will remain valid for existing System objects. When you define new System objects, your class file should inherit from the matlab.System class.


New Features, Compatibility Considerations

Constant Gamma Clutter Modeling

The new phased.ConstantGammaClutter System object helps you model surface clutter using the constant gamma model. You can use this object when simulating a radar system or estimating its performance statistically.

For more information, see these resources:

Clutter Modeling Utilities

These new utility functions can help you implement custom clutter models:

Phase-Coded Waveforms

The new phased.PhaseCodedWaveform System object generates samples of a phase-coded pulse waveform. This object supports these code types:

  • Barker

  • Frank

  • P1

  • P2

  • P3

  • P4

  • Px

  • Zadoff-Chu

For more information, see Phase-Coded Waveforms and phased.PhaseCodedWaveform.

Spectrum Weighting Options in Matched Filter

The phased.MatchedFilter System object supports spectrum weighting using these window types:

  • Hamming

  • Chebyshev

  • Hann

  • Kaiser

  • Taylor

You can also specify a custom window. To do so, write a function that takes the window length as an input argument and returns window coefficients in an output argument.

For more information, see Matched Filtering or phased.MatchedFilter.

Compatibility Considerations

If you save a phased.MatchedFilter object in a MAT-file in V1.1 (R2011b) and then load the MAT-file in V1.0 (R2011a), the object does not perform spectrum weighting. The Command Window shows this warning:

Warning: While loading an object of class 'phased.MatchedFilter':
No public field SpectrumWindow exists for class phased.MatchedFilter.

If you write code in V1.1 (R2011b) that sets or reads any of the following properties of phased.MatchedFilter object, the code produces an error message in V1.0 (R2011a).

  • SpectrumWindow

  • CustomSpectrumWindow

  • SpectrumRange

  • SampleRate

  • SidelobeAttenuation

  • Beta

  • Nbar

Expanded Lattice Options in Uniform Rectangular Array

The phased.URA System object supports both triangular lattices and rectangular lattices. You use the Lattice property to select the lattice type.

In V1.0 (R2011a), phased.URA supports only rectangular lattices and does not have a Lattice property.

Compatibility Considerations

If you save a phased.URA object in a MAT-file in V1.1 (R2011b) and then load the MAT-file in V1.0 (R2011a), the object uses a rectangular lattice. The Command Window shows this warning:

Warning: While loading an object of class 'phased.URA':
No public field Lattice exists for class phased.URA.

If you write code in V1.1 (R2011b) that sets or reads the Lattice property of a phased.URA object, the code produces an error message in V1.0 (R2011a).

Enhanced Plots Show Multiple Frequency Responses

The plotResponse method can plot multiple frequency responses along an azimuth cut or elevation cut. This method is available for the System objects for array design, antenna elements, and microphone elements. To create a plot of multiple frequency responses, use a plotResponse syntax in which:

  • FREQ is a row vector.

  • RespCut either does not appear explicitly, or has the value 'Az' or 'El.

The affected System objects are:

In V1.0 (R2011a), FREQ must be a scalar. The resulting plot shows one frequency response.

Custom Antenna Removes Restriction on Radiation Pattern

The phased.CustomAntennaElement System object now permits more general radiation patterns. The main beam of the pattern is no longer required to point to 0 degrees azimuth and 0 degrees elevation.

Storing States When Saving or Cloning Objects

The save and clone operations now store all states of the System objects in the phased package. As a result, calling the step method on a loaded or cloned object resumes processing from the state where the original object left off. In V1.0 (R2011a), the loaded or cloned object is unlocked and uninitialized.

Compatibility Considerations

If your legacy code exploits the unlocked, uninitialized state of a loaded or cloned object, you should update the code in V1.1 (R2011b). You can use the release method to unlock objects.

Custom System Objects

You can now create custom System objects in MATLAB. This capability allows you to define your own System objects for time-based and data-driven algorithms, I/O, and visualizations. The System object API provides a set of implementation and service methods that you incorporate into your code to implement your algorithm. See Define New System Objects in the DSP System Toolbox™ documentation for more information.

Conversion of Error and Warning Message Identifiers

For version 1.1 (R2011b), some error and warning message identifiers have changed in Phased Array System Toolbox software.

Compatibility Considerations

If you have scripts or functions that use message identifiers that changed, you must update the code to use the new identifiers. Typically, message identifiers are used to turn off specific warning messages, or in code that uses a try/catch statement and performs an action based on a specific error identifier.

For example, the 'phased:phased:RootWSFEstimator:ZeroSourceNumber' identifier and the 'phased:phased:RootMUSICEstimator:ZeroSourceNumber' identifier have both changed to 'phased:phased:doa:ZeroSourceNumber'. If your code checks for one of the earlier values, you must update it to check for 'phased:phased:doa:ZeroSourceNumber' instead.

To determine the identifier for a warning, run the following command just after you see the warning:

[MSG,MSGID] = lastwarn;

This command saves the message identifier to the variable MSGID.

To determine the identifier for an error, run the following command just after you see the error:

exception = MException.last;
MSGID = exception.identifier;

    Note:   Warning messages indicate a potential issue with your code. While you can turn off a warning, a suggested alternative is to change your code so it runs warning-free.


New Features

Introducing the Phased Array System Toolbox

Phased Array System Toolbox provides algorithms and tools for the design, simulation, and analysis of phased array signal processing systems. These capabilities are provided as MATLAB functions and MATLAB System objects. The system toolbox includes algorithms for waveform generation, beamforming, direction of arrival estimation, target detection, and space-time adaptive processing. The system toolbox lets you build monostatic, bistatic, and multistatic architectures for a variety of array geometries. You can model these architectures on stationary or moving platforms. Array analysis and visualization tools help you evaluate spatial, spectral, and temporal performance. The system toolbox lets you model an end-to-end phased array system or use individual algorithms to process acquired data.


Key features of Phased Array System Toolbox Version 1.0 include:

  • Algorithms available as MATLAB functions and MATLAB System objects

  • Monostatic, bistatic, and multistatic phased array system modeling

  • Array analysis and 3D visualization; physical array modeling for uniform linear arrays, uniform rectangular arrays, and arbitrary conformal arrays on platforms with motion

  • Broadband and narrowband digital beamforming functions, including MVDR/Capon, LCMV, time delay, Frost, time delay LCMV, and subband phase shift

  • Space-time adaptive processing algorithms, including displaced phase center array (DPCA), adaptive DPCA, sample matrix inversion (SMI) beamforming, and angle-Doppler response visualization

  • Direction of arrival algorithms, including MVDR, ESPRIT, Beamscan, Root MUSIC, and monopulse tracking

  • Waveform synthesis functions for pulsed CW, linear FM, stepped FM, and staggered PRF signals, and waveform visualization tools for ambiguity function and matched filter response

  • Algorithms for TVG, pulse compression, coherent and non-coherent integration, CFAR processing, plotting ROC curves, and estimating range and Doppler

Compatibility Summary

ReleaseFeatures or Changes with Compatibility Considerations
R2015aFunctionality being removed or changed
Was this topic helpful?