주요 콘텐츠

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. Create the phased.HeterogeneousULA object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

array = phased.HeterogeneousULA creates a heterogeneous uniform linear array (ULA) System object™, array. 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.

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

Example: array = phased.HeterogeneousULA(ElementSpacing="Value") sets properties using one or more name-value arguments. For example, to specify element spacing of 0.5, set ElementSpacing to 0.5.

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

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.

Data Types: double

The mapping of elements in the array, specified as a 1-by-N row vector where N is greater than 1. The property assigns elements to their locations in the array using indices into the ElementSet property. 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.

Data Types: double

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

Data Types: double

Axis of linear array, specified as "y", "x", or "z". Linear array elements are located along the selected coordinate system axis. The array axis determines the direction along which the element normal vectors point.

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

Example: "z"

Data Types: char | string

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.

Data Types: double

Usage

Description

RESP = array(FREQ,ANG) returns the array elements’ responses RESP at operating frequencies specified in FREQ and directions specified in ANG.

example

Input Arguments

expand all

Operating frequencies of array, specified as a length-L row vector. Values are within the frequency range of an array element, specified by either the FrequencyRange or FrequencyVector property, depending on the type of element in the array. The element has zero response at frequencies outside that range. Units are in Hz.

Data Types: double

Response direction, specified as. a real-valued 2-by-M matrix or a real-valued row vector of length M. Units are in degrees,

If ANG is a 2-by-M matrix, each column of the matrix specifies the direction in the form [azimuth;elevation]. The azimuth angle must lie between –180° and 180°, inclusive. The elevation angle must lie between –90° and 90°, inclusive.

If ANG is a row vector of length M, each element specifies the azimuth angle of the direction. In this case, the corresponding elevation angle is assumed to be 0°.

Data Types: double

Output Arguments

expand all

Voltage responses of the phased array. The output depends on whether the array supports polarization or not.

  • If the array is not capable of supporting polarization, the voltage response, RESP, has the dimensions N-by-M-by-L. N is the number of elements in the array. The dimension M is the number of angles specified in ANG. L is the number of frequencies specified in FREQ. For any element, the columns of RESP contain the responses of the array elements for the corresponding direction specified in ANG. Each of the L pages of RESP contains the responses of the array elements for the corresponding frequency specified in FREQ.

  • If the array is capable of supporting polarization, the voltage response, RESP, is a MATLAB struct containing two fields, RESP.H and RESP.V. The field, RESP.H, represents the array’s horizontal polarization response, while RESP.V represents the array’s vertical polarization response. Each field has the dimensions N-by-M-by-L. N is the number of elements in the array, and M is the number of angles specified in ANG. L is the number of frequencies specified in FREQ. Each column of RESP contains the responses of the array elements for the corresponding direction specified in ANG. Each of the L pages of RESP contains the responses of the array elements for the corresponding frequency specified in FREQ.

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

beamwidthCompute and display beamwidth of an array
collectPlaneWaveSimulate received plane waves
directivityDirectivity of heterogeneous uniform linear array
getElementNormalNormal vector to array elements
getElementPositionPositions of array elements
getNumElementsNumber of elements in array
getTaperArray element tapers
isPolarizationCapablePolarization capability
patternPlot heterogeneous ULA pattern
patternAzimuthPlot heterogeneous ULA directivity or pattern versus azimuth
patternElevationPlot heterogeneous ULA directivity or pattern versus elevation
perturbationsPerturbations defined on array
perturbedArrayApply perturbations to phased array
perturbedPatternDisplay pattern of perturbed array
plotResponsePlot response pattern of array
viewArrayView array geometry

expand all

stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

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

Figure contains an axes object. The hidden axes object with xlabel x axis (Az 0 El 0) -->, ylabel y axis --> contains 17 objects of type scatter, text, line.

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]

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');

Figure contains an axes object. The hidden axes object contains 3 objects of type line, text. This object represents 150 MHz .

Create a 5-element heterogeneous ULA of cosine antenna elements with difference responses, and find the response of each element at 30° azimuth.

antenna1 = phased.CosineAntennaElement(CosinePower=1.5);
antenna2 = phased.CosineAntennaElement(CosinePower=1.8);
array = phased.HeterogeneousULA(...
    ElementSet={antenna1,antenna2}, ...
    ElementIndices=[1 2 2 2 1]);
fc = 1e9;
c = physconst("LightSpeed");
ang = [30;0];
resp = array(fc,ang)
resp = 5×1

    0.8059
    0.7719
    0.7719
    0.7719
    0.8059

Find the response of a heterogeneous ULA array of 7 custom microphone elements with different responses.

Create two microphones with different response patterns.

mic1 = phased.CustomMicrophoneElement(...
    FrequencyResponse=[20 20e3]);
mic1.PolarPatternFrequencies = [500 1000];
mic1.PolarPattern = mag2db([...
    0.5+0.5*cosd(mic1.PolarPatternAngles); ...
    0.6+0.4*cosd(mic1.PolarPatternAngles)]);
mic2 = phased.CustomMicrophoneElement(...
    FrequencyResponse=[20 20e3]);
mic2.PolarPatternFrequencies = [500 1000];
mic2.PolarPattern = mag2db([...
    ones(size(mic2.PolarPatternAngles)); ...
    ones(size(mic2.PolarPatternAngles))]);

Create the heterogeneous ULA.

array = phased.HeterogeneousULA(...
    ElementSet={mic1,mic2}, ...
    ElementIndices=[1 1 2 2 2 1 1]);

Find the array response at 40° and 50° azimuth.

fc = [1500, 2000];
ang = [40 50; 0 0];
resp = array(fc,ang)
resp = 
resp(:,:,1) =

    9.0642    8.5712
    9.0642    8.5712
   10.0000   10.0000
   10.0000   10.0000
   10.0000   10.0000
    9.0642    8.5712
    9.0642    8.5712


resp(:,:,2) =

    9.0642    8.5712
    9.0642    8.5712
   10.0000   10.0000
   10.0000   10.0000
   10.0000   10.0000
    9.0642    8.5712
    9.0642    8.5712

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

expand all

Version History

Introduced in R2013a