Main Content

phased.HeterogeneousULA

Heterogeneous uniform linear array

Description

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.

Construction

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

Properties

ElementSet

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

ElementIndices

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]

ElementSpacing

Element spacing

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

Default: 0.5

ArrayAxis

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'

Taper

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

Methods

Specific to phased.HeterogeneousULA Object
beamwidth

Compute and display beamwidth of an array

collectPlaneWave

Simulate received plane waves

directivity

Directivity of heterogeneous uniform linear array

getElementNormal

Normal vector for array elements

getElementPosition

Positions of array elements

getNumElements

Number of elements in array

getTaper

Array element tapers

isPolarizationCapable

Polarization capability

pattern

Plot heterogeneous ULA pattern

patternAzimuth

Plot heterogeneous ULA directivity or pattern versus azimuth

patternElevation

Plot heterogeneous ULA array directivity or pattern versus elevation

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

Output responses of array elements

viewArray

View array geometry

Common to All System Objects
release

Allow System object property value changes

Examples

collapse 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(...
    'ElementSet',{sElement1,sElement2},...
    'ElementIndices',[1 1 2 2 2 2 2 2 1 1 ]);
fc = 1e9;
ang = [0;0];
resp = step(sArray,fc,ang)
resp =

     1
     1
     1
     1
     1
     1
     1
     1
     1
     1

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

c = physconst('LightSpeed');
plotResponse(sArray,fc,c,'RespCut','Az','Format','Polar');
pattern(sArray,fc,[-180:180],0,...
    'PropagationSpeed',c,...
    'CoordinateSystem','polar',...
    'Type','powerdb');

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],...
    'AxisDirection','Z');
sElement2 = phased.ShortDipoleAntennaElement(...
    'FrequencyRange',[100e6 1e9],...
    'AxisDirection','Y');
sArray = phased.HeterogeneousULA(...
    'ElementSet',{sElement1,sElement2},...
    'ElementIndices',[1 1 2 2 2 2 2 2 1 1 ],...
    'Taper',taylorwin(10)');
isPolarizationCapable(sArray)
ans = logical
   1

View the array

viewArray(sArray,'ShowTaper',true,'ShowIndex',...
    'All','ShowTaper',true)

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: [10x1 double]
    V: [10x1 double]

resp.H
ans = 10×1

         0
         0
   -1.2442
   -1.6279
   -1.8498
   -1.8498
   -1.6279
   -1.2442
         0
         0

Plot the combined polarization response

c = physconst('LightSpeed');
pattern(sArray,fc,[-180:180],0,...
    'PropagationSpeed',c,...
    'CoordinateSystem','polar',...
    'Type','powerdb',...
    'Polarization','combined');

References

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

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

Extended Capabilities

Version History

Introduced in R2013a