Main Content

phased.ReplicatedSubarray

Phased array formed by replicated subarrays

Description

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.

Note

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.

Construction

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

Properties

Subarray

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

Layout of subarrays

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

Default: 'Rectangular'

GridSize

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]

GridSpacing

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'

SubarrayPosition

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]

SubarrayNormal

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]

SubarraySteering

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'

PhaseShifterFrequency

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

NumPhaseShifterBits

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

Methods

Specific to phased.ReplicatedSubarray Object
beamwidth

Compute and display beamwidth for a subarray

collectPlaneWave

Simulate received plane waves

directivity

Directivity of replicated subarray

getElementPosition

Positions of array elements

getNumElements

Number of elements in array

getNumSubarrays

Number of subarrays in array

getSubarrayPosition

Positions of subarrays in array

isPolarizationCapable

Polarization capability

pattern

Plot replicated subarray directivity and patterns

patternAzimuth

Plot replicated subarray directivity or pattern versus azimuth

patternElevation

Plot replicated subarray directivity or pattern versus elevation

plotResponse

Plot response pattern of array

step

Output responses of subarrays

viewArray

View array geometry

Common to All System Objects
release

Allow System object property value changes

Examples

collapse 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],...
   'GridSpacing','Auto');

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;
pattern(sRSA,fc,[-180:180],0,...
    'PropagationSpeed',physconst('LightSpeed'),...
    'Type','powerdb',...
    'Normalize',true,...
    'CoordinateSystem','polar')

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,...
    'NumElements',2,...
    'ElementSpacing',0.5);
sRSA = phased.ReplicatedSubarray('Subarray',sULA,...
    'Layout','Rectangular',...
    'GridSize',[1 2],...
    'GridSpacing','Auto');

Show the vertical polarization response for the subarrays.

fc = 1.0e9;
ang = [0;0];
resp = step(sRSA,fc,ang,physconst('LightSpeed'));
disp(resp.V)
   -2.4495
   -2.4495

Create an 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], ... 
    'SubarraySteering','Phase','PhaseShifterFrequency',fc); 
steer_ang = [10;0]; 
sv_array = phased.SteeringVector('SensorArray',array,... 
    'PropagationSpeed',c); 
wts_array = sv_array(fc,steer_ang);
pattern(array,fc,-90:90,0,'CoordinateSystem','Rectangular',... 
    'Type','powerdb','PropagationSpeed',c,'Weights',wts_array,... 
    'SteerAngle',steer_ang);
legend('phase-shifted subarrays')

Figure contains an axes object. The axes object with title Azimuth Cut (elevation angle = 0.0°), xlabel Azimuth Angle (degrees), ylabel Normalized Power (dB) contains an object of type line. This object represents 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,... 
    'PropagationSpeed',c);
wc = sv_subarray(fc,steer_ang_subarrays); 
array.SubarraySteering = 'Custom';
pattern(array,fc,-90:90,0,'CoordinateSystem','Rectangular',... 
    'Type','powerdb','PropagationSpeed',c,'Weights',wts_array,... 
    'ElementWeight',conj(wc)); 
legend('independent subarrays') 
hold off

Figure contains an axes object. The axes object with title Azimuth Cut (elevation angle = 0.0°), xlabel Azimuth Angle (degrees), ylabel Normalized Power (dB) contains an object of type line. This object represents independent subarrays.

References

[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

Version History

Introduced in R2012a