Documentation

cbfweights

Conventional beamformer weights

Syntax

  • wt = cbfweights(pos,ang)
    example
  • wt = cbfweights(pos,ang,nqbits)
    example

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

Conventional Weights for Two Beamformer Directions

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 =

   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

Quantized Weights for Two Beamformer Directions

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 =

   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

pos — Positions of array sensor elements1-by-N real-valued vector | 2-by-N real-valued matrix | 3-by-N real-valued matrix

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; .1, .2, .3; 0,0,0]

Data Types: double

ang — Beamforming directions1-by-M real-valued vector | 2-by-M real-valued matrix

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;0]

Data Types: double

nqbits — Number of phase shifter quantization bits0 (default) | non-negative integer

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.

Output Arguments

collapse all

wt — Beamformer weightsN-by-M complex-valued matrix

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.

References

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

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

[3] 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.

Introduced in R2013a

Was this topic helpful?