Documentation

# cbfweights

Conventional beamformer weights

## Syntax

``wt = cbfweights(pos,ang)``
``wt = cbfweights(pos,ang,nqbits)``

## Description

example

````wt = cbfweights(pos,ang)` returns narrowband conventional beamformer weights. When applied to the elements of a sensor array, these weights steer the response of the array to a specified arrival direction or set of directions. The `pos` argument specifies the sensor positions in the array. The `ang` argument specifies the azimuth and elevation angles of the desired response directions. The output weights, `wt`, are returned as an N-by-M matrix. In this matrix, N represents the number of sensors in the array while M represents the number of arrival directions. Each column of `wt` contains the weights for the corresponding direction specified in the `ang`. The argument `wt` is equivalent to the output of the function `steervec` divided by N. All elements in the sensor array are assumed to be isotropic.```

example

````wt = cbfweights(pos,ang,nqbits)` returns quantized narrowband conventional beamformer weights when the number of phase-shifter bits is set to `nqbits`.```

## Examples

collapse all

Specify a line array of five elements spaced 10 cm apart. Compute the weights for two directions: 30° azimuth, 0° elevation, and 45° azimuth, 0° elevation. Assume the array is tuned to plane waves having a frequency of 1 GHz.

```elementPos = (0:.1:.4); c = physconst('LightSpeed'); fc = 1e9; lambda = c/fc; ang = [30 45]; wt = cbfweights(elementPos/lambda,ang)```
```wt = 5×2 complex 0.2000 + 0.0000i 0.2000 + 0.0000i 0.0999 + 0.1733i 0.0177 + 0.1992i -0.1003 + 0.1731i -0.1969 + 0.0353i -0.2000 - 0.0004i -0.0527 - 0.1929i -0.0995 - 0.1735i 0.1875 - 0.0696i ```

Specify a line array of five elements spaced 10 cm apart. Compute the weights for two directions: 30° azimuth, 0° elevation, and 45° azimuth, 0° elevation. Assume the array is tuned to plane waves having a frequency of 1 GHz. Assume the weights are quantized to six bits.

```elementPos = (0:.1:.4); c = physconst('LightSpeed'); fc = 1e9; lambda = c/fc; ang = [30 45]; nqbits = 6; wt = cbfweights(elementPos/lambda,ang,nqbits)```
```wt = 5×2 complex 0.2000 + 0.0000i 0.2000 + 0.0000i 0.0943 + 0.1764i 0.0196 + 0.1990i -0.0943 + 0.1764i -0.1962 + 0.0390i -0.2000 + 0.0000i -0.0581 - 0.1914i -0.0943 - 0.1764i 0.1848 - 0.0765i ```

## Input Arguments

collapse all

Positions of the elements of a sensor array specified as a 1-by-N vector, a 2-by-N matrix, or a 3-by-N matrix. In this vector or matrix, N represents the number of elements of the array. Each column of `pos` represents the coordinates of an element. You define sensor position units in term of signal wavelength. If `pos` is a 1-by-N vector, then it represents the y-coordinate of the sensor elements of a line array. The x and z-coordinates are assumed to be zero. When `pos` is a 2-by-N matrix, it represents the (y,z)-coordinates of the sensor elements of a planar array. This array is assumed to lie in the yz-plane. The x-coordinates are assumed to be zero. When `pos` is a 3-by-N matrix, then the array has arbitrary shape.

Example: `[0,0,0; 0.1,0.4,0.3;1,1,1]`

Data Types: `double`

Beamforming directions specified as a 1-by-M vector or a 2-by-M matrix. In this vector or matrix, M represents the number of incoming signals. If `ang` is a 2-by-M matrix, each column specifies the direction in azimuth and elevation of the beamforming direction as `[az;el]`. Angular units are specified in degrees. The azimuth angle must lie between –180° and 180° and the elevation angle must lie between –90° and 90°. The azimuth angle is the angle between the x-axis and the projection of the beamforming direction vector onto the xy plane. The angle is positive when measured from the x-axis toward the y-axis. The elevation angle is the angle between the beamforming direction vector and xy-plane. It is positive when measured towards the positive z axis. If `ang` is a 1-by-M vector, then it represents a set of azimuth angles with the elevation angles assumed to be zero.

Example: `[45;10]`

Data Types: `double`

Number of bits used to quantize the phase shift in beamformer or steering vector weights, specified as a non-negative integer. A value of zero indicates that no quantization is performed.

Example: `5`

## Output Arguments

collapse all

Beamformer weights returned as an N-by-M complex-valued matrix. In this matrix, N represents the number of sensor elements of the array while M represents the number of beamforming directions. Each column of `wt` corresponds to a beamforming direction specified in `ang`.

 Van Trees, H.L. Optimum Array Processing. New York, NY: Wiley-Interscience, 2002.

 Johnson, Don H. and D. Dudgeon. Array Signal Processing. Englewood Cliffs, NJ: Prentice Hall, 1993.

 Van Veen, B.D. and K. M. Buckley. “Beamforming: A versatile approach to spatial filtering”. IEEE ASSP Magazine, Vol. 5 No. 2 pp. 4–24.

#### Hybrid Beamforming for Massive MIMO Phased Array Systems

Download the white paper