Main Content


Heterogeneous uniform rectangular array


The HeterogeneousURA object constructs a heterogeneous uniform rectangular array (URA).

To compute the response for each element in the array for specified directions:

  1. Define and set up your uniform rectangular array. See Construction.

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


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.HeterogeneousURA creates a heterogeneous uniform rectangular array (URA) System object, H. This object models a heterogeneous URA formed with sensor elements whose pattern may vary from element to element. Array elements are distributed in the yz-plane in a rectangular lattice. An M-by-N heterogeneous URA has M rows and N columns. The array boresight direction is along the positive x-axis. The default array is a 2-by-2 URA of isotropic antenna elements.

H = phased.HeterogeneousURA(Name,Value) creates the 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).



Set of elements used in the array

Set of elements used in the sensor array, specified as a row MATLAB cell array. Elements specified in the ElementSet property must be either Phased Array System Toolbox™ antennas, microphones, or transducers System objects or Antenna Toolbox™ System object. In addition, all specified antenna elements must have the same polarization capability.

Default: One cell containing one isotropic antenna element


Elements location assignment

This property specifies the mapping of elements in the array. The property assigns elements to their locations in the array using the indices into the ElementSet property. The value of ElementIndices must be an M-by-N matrix. In this matrix, M represents the number of rows and N represents the number of columns. Rows are along y-axis and columns are along z-axis of the local coordinate system. The values in the matrix specified by ElementIndices should be less than or equal to the number of entries in the ElementSet property.

Default: [1 1;1 1]


Element spacing

A 1-by-2 vector or a scalar containing the element spacing (in meters) of the array. If ElementSpacing is a 1-by-2 vector, it is in the form of [SpacingBetweenRows,SpacingBetweenColumns]. See Spacing Between Columns and Spacing Between Rows. If ElementSpacing is a scalar, both spacings are the same.

Default: [0.5 0.5]


Element lattice

Specify the element lattice as one of 'Rectangular' | 'Triangular'. When you set the Lattice property to 'Rectangular', all elements in the heterogeneous URA are aligned in both row and column directions. When you set the Lattice property to 'Triangular', the elements in even rows are shifted toward the positive row axis direction by a distance of half the element spacing along the row.

Default: 'Rectangular'


Array normal direction

Array normal direction, specified as one of 'x', 'y', or 'z'.

URA elements lie in a plane orthogonal to the selected array normal direction. Element boresight directions point along the array normal direction

ArrayNormal Property ValueElement Positions and Boresight Directions
'x'Array elements lie on the yz-plane. All element boresight vectors point along the x-axis.
'y'Array elements lie on the zx-plane. All element boresight vectors point along the y-axis.
'z'Array elements lie on the xy-plane. All element boresight vectors point along the z-axis.

Default: 'x'


Element tapers

Element tapers, specified as a complex-valued scalar, or a complex-valued 1-by-MN row vector, MN-by-1 column vector, or M-by-N matrix. Tapers are applied to each element in the sensor array. Tapers are often referred to as element weights. M is the number of elements along the z-axis, and N is the number of elements along y-axis. M and N correspond to the values of [NumberofRows, NumberOfColumns] in the Size property. If Taper is a scalar, the same taper value is applied to all elements. If the value of Taper is a vector or matrix, taper values are applied to the corresponding elements. Tapers are used to modify both the amplitude and phase of the received data.

Default: 1


Specific to phased.HeterogeneousURA Object

Compute and display beamwidth of an array


Simulate received plane waves


Directivity of heterogeneous uniform rectangular array


Normal vector to array elements


Positions of array elements


Number of elements in array


Array element tapers


Polarization capability


Plot heterogeneous URA directivity and power pattern


Plot heterogeneous URA directivity or pattern versus azimuth


Plot heterogeneous URA array directivity or pattern versus elevation

perturbationsPerturbations defined on phased array
perturbedArrayApply perturbations to phased array
perturbedPatternCompute and plot azimuth pattern of perturbed array

Output responses of array elements


View array geometry

Common to All System Objects

Allow System object property value changes


collapse all

Construct a 3-by-2 heterogeneous URA with a rectangular lattice, and find the response of each element at 30 degrees azimuth and 0 degrees elevation. Assume the operating frequency is 1 GHz.

antenna1 = phased.CosineAntennaElement('CosinePower',1.5);
antenna2 = phased.CosineAntennaElement('CosinePower',1.8);
array = phased.HeterogeneousURA('ElementSet',{antenna1,antenna2}, ...
    'ElementIndices',[1 1; 2 2; 1 1]);
fc = 1e9;
ang = [30;0];
resp = array(fc,ang)
resp = 6×1


Plot the azimuth pattern of the array.

c = physconst('LightSpeed');
pattern(array,fc,[-180:180],0,'PropagationSpeed',c, ...

Construct a 3-by-3 heterogeneous URA with a triangular lattice. The element spacing is 0.5 meter. Display the array shape.

elem1 = phased.CosineAntennaElement('CosinePower',1.5);
elem2= phased.CosineAntennaElement('CosinePower',1.8);
array = phased.HeterogeneousURA( ...
    'ElementSet',{elem1,elem2}, ...
    'ElementIndices',[1 1 1; 2 2 2; 1 1 1], ...

More About

expand all


[1] Brookner, E., ed. Radar Technology. Lexington, MA: LexBook, 1996.

[2] Brookner, E., ed. Practical Phased Array Antenna Systems. Boston: Artech House, 1991.

[3] Mailloux, R. J. “Phased Array Theory and Technology,” Proceedings of the IEEE, Vol., 70, Number 3, 1982, pp. 246–291.

[4] Mott, H. Antennas for Radar and Communications, A Polarimetric Approach. New York: John Wiley & Sons, 1992.

[5] Van Trees, H. Optimum Array Processing. New York: Wiley-Interscience, 2002.

Extended Capabilities

Version History

Introduced in R2013a