Main Content

phased.SteeringVector

Sensor array steering vector

Description

The SteeringVector System object creates steering vectors for a sensor array for multiple directions and frequencies.

To compute the steering vector for an array for specified directions and frequency

  1. Create the phased.SteeringVector 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

steervec = phased.SteeringVector creates a steering vector System object™, steervec, with default property values.

steervec = phased.SteeringVector(Name,Value) creates a steering vector with each property Name set to a specified Value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN). Enclose each property name in single quotes.

Example: steervec = phased.SteeringVector('SensorArray',phased.URA,'PropagationSpeed',physconst('LightSpeed')) creates a steering vector object for a uniform rectangular array (URA) with default URA property values and sets the propagation speed to the speed of light.

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.

Sensor array, specified as an array System object belonging to Phased Array System Toolbox. The sensor array can contain subarrays.

Example: phased.URA

Signal propagation speed, specified as a positive scalar. Units are in meters per second. The default propagation speed is the value returned by physconst('LightSpeed'). See physconst for more information.

Example: 3e8

Data Types: double

Option to include individual element responses in the steering vector, specified as false or true. If this property is set to true, the steering vector includes individual array element responses. If this property is set to false, the steering vector is computed assuming that the elements are isotropic, regardless of how the elements are specified. Set this property to true when using polarized signals.

When the array specified in the SensorArray property contains subarrays, the steering vector applies to subarrays. If SensorArray does not contain subarrays, the steering vector applies to the array elements.

Data Types: logical

Number of phase shifter quantization bits, specified as an integer between 0 and 64, inclusive. The number of bits is used to quantize the phase shift component of the beamformer or steering vector weights. A value of zero indicates that no quantization is performed.

Data Types: double

Option to enable polarized fields, specified as false or true. Set this property to true to enable polarization. Set this property to false to ignore polarization. Enabling polarization requires that the sensor array specified in the SensorArray property can simulate polarization.

If you set this property to false for an array that actually supports polarization, then all polarization information is discarded. A combined pattern from the H and V polarization components is used at each element to compute the steering vector.

Data Types: logical

Usage

Description

SV = steervec(FREQ,ANG) returns the steering vector, SV, pointing in the directions specified by ANG and for the operating frequencies specified in FREQ. The meaning of SV depends on the IncludeElementResponse property, as follows:

  • If IncludeElementResponse is true, the components of SV include individual element responses.

  • If IncludeElementResponse is false, the computation assumes that the elements are isotropic and SV does not include the individual element responses. If the array contains subarrays, SV is the array factor among the subarrays. The phase center of each subarray is at its geometric center. If SensorArray does not contain subarrays, SV is the array factor among the elements.

example

SV = steervec(FREQ,ANG,STEERANG) also specifies the subarray steering angle, STEERANG. To use this syntax, set the SensorArray property to an array type that contains subarrays and set the IncludeElementResponse to true. Arrays that contain subarrays are the phased.PartitionedArray and the phased.ReplicatedSubarray. In this case, set the SubarraySteering property of these arrays to either 'Phase' or 'Time'.

SV = steervec(FREQ,ANG,STEERANG,WS) also specifies WS as weights applied to each element within each subarray. To use this syntax, set the SensorArray property to an array that supports subarrays and set the SubarraySteering property of the array to 'Custom'.

Input Arguments

expand all

Steering vector directions, specified as a real-valued, length-M vector, or a real-valued 2-by-M matrix. M is the number of steering directions. When ANG is a 2-by-M matrix, each column of the matrix specifies the direction in space in the form [azimuth; elevation]. The azimuth angle must be between –180° and 180°, and the elevation angle must be between –90° and 90°. When ANG is a length-M vector, its values correspond to the azimuth angles of the steering vector direction with elevation angles set to zero. Angle units are in degrees.

Example: [50.0,17.0,-24.5;0.4,4.0,23.9]

Data Types: single | double

Operating frequencies, specified as a 1-by-L vector of positive values. Units are in Hz.

Example: [4100.0,4200.0]

Data Types: single | double

Subarray steering direction, specified as a scalar or a real-valued 2-by-1 vector. When STEERANG is a 2-by-1 vector, it specifies the subarray steering direction in the form [azimuth;elevation]. The azimuth angle must be between –180° and 180°, and the elevation angle must be between –90° and 90°. When STEERANG is a scalar, its value corresponds to the azimuth angle of the subarray steering direction with elevation angles set to zero. Angle units are in degrees.

Example: [50.0;10.0]

Data Types: single | double

Subarray element weights, specified as complex-valued NSE-by-N matrix or 1-by-N cell array where N is the number of subarrays. These weights are applied to the individual elements within a subarray.

Subarray element weights

Sensor ArraySubarray weights
phased.ReplicatedSubarray

All subarrays have the same dimensions and sizes. Then, the subarray weights form an NSE-by-N matrix. NSE is the number of elements in each subarray and N is the number of subarrays. Each column of WS specifies the weights for the corresponding subarray.

phased.PartitionedArray

Subarrays may not have the same dimensions and sizes. In this case, you can specify subarray weights as

  • an NSE-by-N matrix, where NSE is now the number of elements in the largest subarray. The first Q entries in each column are the element weights for the subarray where Q is the number of elements in the subarray.

  • a 1-by-N cell array. Each cell contains a column vector of weights for the corresponding subarray. The column vectors have lengths equal to the number of elements in the corresponding subarray.

Dependencies

To enable this argument, set the Sensor property to an array that contains subarrays and set the SubarraySteering property of the array to 'Custom'.

Data Types: single | double
Complex Number Support: Yes

Output Arguments

expand all

Steering vector, returned as a complex-valued N-by-M-by-L array or a structure containing arrays.

The form of the steering vector depends upon whether the EnablePolarization property is set to true or false.

  • If EnablePolarization is set to false, the steering vector, SV, is an N-by-M-by-L array. The length of the first dimension, N, is the number of elements of the phased array. If SensorArray contains subarrays, N is the number of subarrays. The length of the second dimension, M, corresponding to the number of steering directions specified in the ANG argument. The length of the third dimension, L, is the number of frequencies specified in the FREQ argument.

  • If EnablePolarization is set to true, SV is a MATLAB struct containing two fields, SV.H and SV.V. These two fields represent the horizontal (H) and vertical (V) polarization components of the steering vector. Each field is an N-by-M-by-L array. The length of the first dimension, N, is the number of elements of the phased array. If SensorArray contains subarrays, N is the number of subarrays. The length of the second dimension, M, corresponds to the number of steering directions specified in the ANG argument. The length of the third dimension, L, is the number of frequencies specified in the FREQ argument.

    Simulating polarization also requires that the sensor array specified in the SensorArray property can simulate polarization, and that the IncludeElementResponse property is set to true.

Data Types: single | double

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

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

Calculate and display the steering vector for a 4-element uniform linear array in the direction of 30 degrees azimuth and 20 degrees elevation. Assume the array's operating frequency is 300 MHz.

array = phased.ULA('NumElements',4);
steervec = phased.SteeringVector('SensorArray',array);
fc = 3e8;
ang = [30; 20];
sv = steervec(fc,ang)
sv = 4×1 complex

  -0.6011 - 0.7992i
   0.7394 - 0.6732i
   0.7394 + 0.6732i
  -0.6011 + 0.7992i

Calculate the steering vector for a 4-element uniform linear array (ULA) in the direction of 30 degrees azimuth and 20 degrees elevation. Assume the array operating frequency is 300 MHz.

fc = 300e6;
c = physconst('LightSpeed');
array = phased.ULA('NumElements',4);
steervec = phased.SteeringVector('SensorArray',array);
sv = steervec(fc,[30;20]);

Plot the beam patterns for the uniform linear array when no steering vector is applied (steered broadside) and when a steering vector is applied.

subplot(211)
pattern(array,fc,-180:180,0,'CoordinateSystem','rectangular', ...
    'PropagationSpeed',c,'Type','powerdb')
title('Without steering')
subplot(212)
pattern(array,fc,-180:180,0,'CoordinateSystem','rectangular', ...
    'PropagationSpeed',c,'Type','powerdb','Weights',sv)
title('With steering')

Figure contains 2 axes objects. Axes object 1 with title Without steering, xlabel Azimuth Angle (degrees), ylabel Normalized Power (dB) contains an object of type line. This object represents 300 MHz. Axes object 2 with title With steering, xlabel Azimuth Angle (degrees), ylabel Normalized Power (dB) contains an object of type line. This object represents 300 MHz.

Calculate the steering vector for a uniform linear array in the direction of 30° azimuth and 20° elevation. Assume the array operates at 300 MHz.

array = phased.ULA('NumElements',2);
steeringvector = phased.SteeringVector('SensorArray',array);
fc = 300.0e6;
ang = [30;20];
sv = steeringvector(fc,ang);

References

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

Extended Capabilities

Version History

Introduced in R2011a