This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.

phased.HeterogeneousULA System object

Package: phased

Heterogeneous uniform linear array


The phased.HeterogeneousULA object creates a uniform linear array from a heterogeneous set of antenna elements. A heterogeneous array is an array in which the antenna or microphone elements may be of different kinds or have different properties. An example would be an array of elements each having different antenna patterns.

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

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

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

    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.


H = phased.HeterogeneousULA creates a heterogeneous uniform linear array (ULA) System object, H. The object models a heterogeneous ULA formed with generally different sensor elements. The origin of the local coordinate system is the phase center of the array. The positive x-axis is the direction normal to the array, and the elements of the array are located along the y-axis.

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

Specify the set of different elements used in the sensor array as a row MATLAB cell array. Each member of the cell array contains an element object in the phased package. Elements specified in the ElementSet property must be either all antennas or all microphones. In addition, all specified antenna elements should have same polarization capability. Specify the element of the sensor array as a handle. The element must be an element object in the phased package.

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 indices into the ElementSet property. ElementIndices must be a 1-by-N row vector where N is greater than 1. N is the number of elements in the sensor array. The values in ElementIndices should be less than or equal to the number of entries in the ElementSet property.

Default: [1 1]


Element spacing

A scalar containing the spacing (in meters) between two adjacent elements in the array.

Default: 0.5


Array axis

Array axis, specified as one of 'x', 'y', or 'z'. ULA array elements are located along the selected coordinate system axis.

Element normal vectors are determined by the selected array axis

ArrayAxis Property ValueElement Normal Direction
'x'azimuth = 90°, elevation = 0° (y-axis)
'y'azimuth = 0°, elevation = 0° (x-axis)
'z'azimuth = 0°, elevation = 0° (x-axis)

Default: 'y'


Element tapering

Element tapering or weighting, specified as a complex-valued scalar, 1-by-N row vector, or N-by-1 column vector. The quantity N is the number of elements in the array as determined by the size of the ElementIndices property. Tapers, also known as weights, are applied to each sensor element in the sensor array and modify both the amplitude and phase of the received data. If 'Taper' is a scalar, the same taper value is applied to all elements. If 'Taper' is a vector, each taper value is applied to the corresponding sensor element.

Default: 1


cloneCreate new system object with identical values
collectPlaneWaveSimulate received plane waves
directivityDirectivity of heterogeneous uniform linear array
getElementNormalNormal vector to array elements
getElementPositionPositions of array elements
getNumElementsNumber of elements in array
getNumInputsNumber of expected inputs to step method
getNumOutputsNumber of outputs from step method
getTaperArray element tapers
isLockedLocked status for input attributes and nontunable properties
isPolarizationCapablePolarization capability
patternPlot heterogeneous ULA pattern
patternAzimuthPlot heterogeneous ULA directivity or pattern versus azimuth
patternElevationPlot heterogeneous ULA directivity or pattern versus elevation
plotResponsePlot response pattern of array
releaseAllow property value and input characteristics
stepOutput responses of array elements
viewArrayView array geometry


expand all

Create a 10-element heterogeneous ULA consisting of cosine antenna elements with different power exponents. Two elements at each end have power values of 1.5 while the inside elements have power exponents of 1.8. Find the power pattern in dB of each element at boresight.

Construct the heterogeneous array and show the element responses at 1 GHz.

sElement1 = phased.CosineAntennaElement('CosinePower',1.5);
sElement2 = phased.CosineAntennaElement('CosinePower',1.8);
sArray = phased.HeterogeneousULA(...
    'ElementIndices',[1 1 2 2 2 2 2 2 1 1 ]);
fc = 1e9;
ang = [0;0];
resp = step(sArray,fc,ang)
resp =


Plot an azimuth cut of the array response at 1 GHz.

c = physconst('LightSpeed');

Construct a heterogeneous uniform line array of 10 short-dipole sensor elements. Because short dipoles support polarization, the array should also. Verify that the array supports polarization by looking at the output of isPolarizationCapable. Then, draw the array, showing the tapering.

Construct the array

Construct the array. Then, verify that it supports polarization by looking at the returned value of the isPolarizationCapable method.

sElement1 = phased.ShortDipoleAntennaElement(...
    'FrequencyRange',[100e6 1e9],...
sElement2 = phased.ShortDipoleAntennaElement(...
    'FrequencyRange',[100e6 1e9],...
sArray = phased.HeterogeneousULA(...
    'ElementIndices',[1 1 2 2 2 2 2 2 1 1 ],...
ans =



View the array


Show the response

Show the element horizontal polarization responses at 10 degrees azimuth angle.

fc = 150e6;
ang = [10];
resp = step(sArray,fc,ang)
resp = 

  struct with fields:

    H: [10×1 double]
    V: [10×1 double]

ans =


Plot the combined polarization response

c = physconst('LightSpeed');

Related Examples


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

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

Introduced in R2013a

Was this topic helpful?