Main Content

phased.FocusedSteeringVector

Focused sensor array steering vector

Description

The phased.FocusedSteeringVector System object™ creates steering vectors for focusing a sensor array at a specified point at multiple ranges, directions, and frequencies.

To compute a focused steering vector for an array

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

fsteervec = phased.FocusedSteeringVector creates a focused steering vector System object fsteervec with default property values.

example

fsteervec = phased.FocusedSteeringVector(Name,Value) creates a focused steering vector System object 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: focusedsv = phased.FocusedSteeringVector('SensorArray',phased.URA([10,20],'ElementSpacing',[0.25,0.25]),'PropagationSpeed',physconst('LightSpeed')) creates a focused steering vector object for a 10-by-20 uniform rectangular array (URA) with element spacing set to 0.25 meters The propagation speed is set 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 a nonnegative integer. This 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

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

  • When IncludeElementResponse is true, the components of FSV include individual element responses.

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

example

[FSV,RANGE] = fsteervec(FREQ,ANG,FOC) also returns the range RANGE from the focus point to each antenna element.

Input Arguments

expand all

Frequencies for computing directivity and patterns, specified as a positive scalar or 1-by-L real-valued row vector. Frequency units are in hertz.

  • For an antenna, microphone, or sonar hydrophone or projector element, FREQ must lie within the range of values specified by the FrequencyRange or FrequencyVector property of the element. Otherwise, the element produces no response and the directivity is returned as –Inf. Most elements use the FrequencyRange property except for phased.CustomAntennaElement and phased.CustomMicrophoneElement, which use the FrequencyVector property.

  • For an array of elements, FREQ must lie within the frequency range of the elements that make up the array. Otherwise, the array produces no response and the directivity is returned as –Inf.

Example: [1e8 2e6]

Data Types: double

Angle focal point direction, specified as a 1-by-M real-valued row vector or a 2-by-M real-valued matrix, where M is the number of angular directions. Angle units are in degrees. If ANGLE is a 2-by-M matrix, then each column specifies a direction in azimuth and elevation, [az;el]. The azimuth angle must lie between –180° and 180°. The elevation angle must lie between –90° and 90°.

If ANGLE is a 1-by-M vector, then each entry represents an azimuth angle, with the elevation angle assumed to be zero.

The azimuth angle is the angle between the x-axis and the projection of the direction vector onto the xy plane. This angle is positive when measured from the x-axis toward the y-axis. The elevation angle is the angle between the direction vector and xy plane. This angle is positive when measured towards the z-axis. See Azimuth and Elevation Angles.

Example: [45 60; 0 10]

Data Types: double

Focal range, specified as a scalar or an M-element row vector of positive values. If ANG has more than one column, FOC must be a scalar or have the same number of columns as ANG. Units are in meters.

Data Types: double

Output Arguments

expand all

Focused 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, FSV, 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: double

Range from array elements to array focus, returned as an N-by-M real-valued array of positive values. Units are in meters.

Data Types: 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

Compute the focused steering vector of an 11-element uniform linear array. Focus the array in the direction of 45 azimuth and 30 elevation and at a range of 1 km. Assume the array operating frequency is 300 MHz and the elements are spaced 0.4 wavelengths apart.

fc = 300.0e6;
c = physconst('lightspeed');
az = 45.0;
el = 30.0;
foc = 1000.0;
lambda = c/fc;
elementspacing = 0.4*lambda;
nelem = 11;
array = phased.ULA(nelem,elementspacing);
fsteervec = phased.FocusedSteeringVector('SensorArray',array);
fsvec = fsteervec(fc,[az;el],foc);

Compute the range from the focal point of a focused 3-by-4 URA to the array elements. The array focuses at a point 1000 m away in the direction of 45 elevation and 30 azimuth. The array operating frequency is 300 Mhz and the array elements are spaced 1/2 wavelength apart.

fc = 300.0e6;
c = physconst('lightspeed');
az = 45.0;
el = 30.0;
foc = 1000.0;
lambda = c/fc;
elementspacing = 0.5*lambda;

Find the steering vector and element ranges.

array = phased.URA([3,4],elementspacing);
fsteervec = phased.FocusedSteeringVector('SensorArray',array);
[fsvec,elemrng] = fsteervec(fc,[az;el],foc);
disp(elemrng)
   1.0e+03 *

    1.0002
    1.0005
    1.0007
    0.9999
    1.0002
    1.0004
    0.9996
    0.9998
    1.0001
    0.9993
    0.9995
    0.9998

References

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

Extended Capabilities

Introduced in R2021b