This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materials including this page, select Japan from the country navigator on the bottom of this page.

phased.ReplicatedSubarray System object

Phased array formed by replicated subarrays


The ReplicatedSubarray object represents a phased array that contains copies of a subarray created by replicating a single specified array.

To obtain the response of the subarrays:

  1. Define and set up your phased array containing replicated subarrays. See Construction.

  2. Call step to compute the response of the subarrays according to the properties of phased.ReplicatedSubarray. The behavior of step is specific to each object in the toolbox.

You can also use a ReplicatedSubarray object as the value of the SensorArray or Sensor property of objects that perform beamforming, steering, and other operations.


Starting in R2016b, instead of using the step method to perform the operation defined by the System object™, you can call the object with arguments, as if it were a function. For example, y = step(obj,x) and y = obj(x) perform equivalent operations.


H = phased.ReplicatedSubarray creates a replicated subarray System object, H. This object represents an array that contains copies of a subarray.

H = phased.ReplicatedSubarray(Name,Value) creates a replicated subarray object, H, with each specified property Name set to the specified Value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).



Subarray to replicate

Specify the subarray you use to form the array. The subarray must be a phased.ULA, phased.URA, or phased.ConformalArray object.

Default: phased.ULA with default property values


Layout of subarrays

Specify the layout of the replicated subarrays as 'Rectangular' or 'Custom'.

Default: 'Rectangular'


Size of rectangular grid

Specify the size of the rectangular grid as a single positive integer or 1-by-2 positive integer row vector. This property applies only when you set the Layout property to 'Rectangular'.

If GridSize is a scalar, the array has the same number of subarrays in each row and column.

If GridSize is a 1-by-2 vector, the vector has the form [NumberOfRows, NumberOfColumns]. The first entry is the number of subarrays along each column, while the second entry is the number of subarrays in each row. A row is along the local y-axis, and a column is along the local z-axis. This figure shows how a 3-by-2 URA subarray is replicated using a GridSize value of [1,2].

Default: [1 2]


Spacing of rectangular grid

Specify the rectangular grid spacing of subarrays as a positive real-valued scalar, a 1-by-2 row vector, or 'Auto'. This property applies only when you set the Layout property to 'Rectangular'. Grid spacing units are expressed in meters.

If GridSpacing is a scalar, the spacing along the row and the spacing along the column is the same.

If GridSpacing is a length-2 row vector, it has the form [SpacingBetweenRows, SpacingBetweenColumn]. The first entry specifies the spacing between rows along a column. The second entry specifies the spacing between columns along a row.

If GridSpacing is 'Auto', the replication preserves the element spacing in both row and column. This option is available only if you use a phased.ULA or phased.URA object as the subarray.

Default: 'Auto'


Subarray positions in custom grid

Specify the positions of the subarrays in the custom grid. This property value is a 3-by-N matrix, where N indicates the number of subarrays in the array. Each column of the matrix represents the position of a single subarray in the array’s local coordinate system, in meters, using the form [x; y; z].

This property applies when you set the Layout property to 'Custom'.

Default: [0 0; -0.5 0.5; 0 0]


Subarray normal directions in custom grid

Specify the normal directions of the subarrays in the array. This property value is a 2-by-N matrix, where N is the number of subarrays in the array. Each column of the matrix specifies the normal direction of the corresponding subarray, in the form [azimuth; elevation]. Each angle is in degrees and is defined in the local coordinate system.

You can use the SubarrayPosition and SubarrayNormal properties to represent any arrangement in which pairs of subarrays differ by certain transformations. The transformations can combine translation, azimuth rotation, and elevation rotation. However, you cannot use transformations that require rotation about the normal.

This property applies when you set the Layout property to 'Custom'.

Default: [0 0; 0 0]


Subarray steering method

Specify the method of subarray steering as either 'None' | 'Phase' | 'Time' | 'Custom'.

  • When you set this property to 'Phase', a phase shifter is used to steer the subarray. Use the STEERANG argument of the step method to define the steering direction.

  • When you set this property to 'Time', subarrays are steered using time delays. Use the STEERANG argument of the step method to define the steering direction.

  • When you set this property to 'Custom', subarrays are steered by setting independent weights for all elements in each subarray. Use the WS argument of the step method to define the weights for all subarrays.

Default: 'None'


Subarray phase shifter frequency

Specify the operating frequency of phase shifters that perform subarray steering. The property value is a positive scalar in hertz. This property applies when you set the SubarraySteering property to 'Phase'.

Default: 3e8


Number of phase shifter quantization bits

The number of bits used to quantize the phase shift component of beamformer or steering vector weights. Specify the number of bits as a non-negative integer. A value of zero indicates that no quantization is performed.

Default: 0


collectPlaneWaveSimulate received plane waves
directivityDirectivity of replicated subarray
getElementPositionPositions of array elements
getNumElementsNumber of elements in array
getNumSubarraysNumber of subarrays in array
getSubarrayPositionPositions of subarrays in array
isPolarizationCapablePolarization capability
patternPlot replicated subarray directivity and patterns
patternAzimuthPlot replicated subarray directivity or pattern versus azimuth
patternElevationPlot replicated subarray directivity or pattern versus elevation
plotResponsePlot response pattern of array
stepOutput responses of subarrays
viewArrayView array geometry
Common to All System Objects

Create System object with same property values


Expected number of inputs to a System object


Expected number of outputs of a System object


Check locked states of a System object (logical)


Allow System object property value changes


expand all

Plot the azimuth response of a 4-element ULA composed of two 2-element ULAs. By default, the antenna elements are isotropic.

sArray = phased.ULA('NumElements',2,'ElementSpacing',0.5);
sRSA = phased.ReplicatedSubarray('Subarray',sArray,...
   'Layout','Rectangular','GridSize',[1 2],...

Plot the azimuth response of the array. Assume the operating frequency is 1 GHz and the wave propagation speed is the speed of light.

fc = 1.0e9;

Create a 4-element ULA from two 2-element ULA subarrays consisting of short-dipole antenna elements. Then, calculate the response at boresight. Because the array elements support polarization, the response consists of horizontal and vertical components.

Create the arrays from subarrays.

sSD = phased.ShortDipoleAntennaElement;
sULA = phased.ULA('Element',sSD,...
sRSA = phased.ReplicatedSubarray('Subarray',sULA,...
    'GridSize',[1 2],...

Show the vertical polarization response for the subarrays.

fc = 1.0e9;
ang = [0;0];
resp = step(sRSA,fc,ang,physconst('LightSpeed'));

Create a array consisting of three copies of a 4-element ULA having elements spaced 1/2 wavelength apart. The array operates at 300 MHz.

c = physconst('LightSpeed');
fc = 300e6;
lambda = c/fc;
subarray = phased.ULA(4,0.5*lambda);

Steer all subarrays by a common phase shift to 10 degrees azimuth.

array = phased.ReplicatedSubarray('Subarray',subarray,'GridSize',[1 3], ...
steer_ang = [10;0];
sv_array = phased.SteeringVector('SensorArray',array,...
wts_array = sv_array(fc,steer_ang);
legend('phase-shifted subarrays')

Compute independent subarray weights from subarray steering vectors. The weights point to 5, 15, and 30 degrees azimuth. Set the SubarraySteering property to 'Custom' .

steer_ang_subarrays = [5 15 30;0 0 0];
sv_subarray = phased.SteeringVector('SensorArray',subarray,...
wc = sv_subarray(fc,steer_ang_subarrays);
array.SubarraySteering = 'Custom';
legend('independent subarrays')
hold off


[1] Mailloux, Robert J. Electronically Scanned Arrays. San Rafael, CA: Morgan & Claypool Publishers, 2007.

[2] Mailloux, Robert J. Phased Array Antenna Handbook, 2nd Ed. Norwood, MA: Artech House, 2005.

Extended Capabilities

Introduced in R2012a

Was this topic helpful?