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

## Creation

### Syntax

``fsteervec = phased.FocusedSteeringVector``
``fsteervec = phased.FocusedSteeringVector(Name,Value)``

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

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

### Syntax

`` FSV = fsteervec(FREQ,ANG,FOC)``
``[FSV,RANGE] = fsteervec(FREQ,ANG,FOC)``

### 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

 `step` Run System object algorithm `release` Release resources and allow changes to System object property values and input characteristics `reset` Reset 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${}^{\circ }$ azimuth and 30${}^{\circ }$ 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${}^{\circ }$ elevation and 30${}^{\circ }$ 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.

## Version History

Introduced in R2021b