System object: phased.FrostBeamformer
Package: phased

Perform Frost beamforming


Y = step(H,X)
Y = step(H,X,XT)
Y = step(H,X,ANG)
Y = step(H,X,XT,ANG)
[Y,W] = step(___)


Y = step(H,X) performs Frost beamforming on the input, X, and returns the beamformed output in Y.

Y = step(H,X,XT) uses XT as the training samples to calculate the beamforming weights. This syntax is available when you set the TrainingInputPort property to true.

Y = step(H,X,ANG) uses ANG as the beamforming direction. This syntax is available when you set the DirectionSource property to 'Input port'.

Y = step(H,X,XT,ANG) combines all input arguments. This syntax is available when you set the TrainingInputPort property to true and set the DirectionSource property to 'Input port'.

[Y,W] = step(___) returns the beamforming weights, W. This syntax is available when you set the WeightsOutputPort property to true.

    Note:   The object performs an initialization the first time the step method is executed. This initialization locks nontunable properties and input specifications, such as dimensions, complexity, and data type of the input data. If you change a nontunable property or an input specification, the System object™ issues an error. To change nontunable properties or inputs, you must first call the release method to unlock the object.

Input Arguments


Beamformer object.


Input signal, specified as an M-by-N matrix. M must be larger than the FIR filter length specified in the FilterLength property. N is the number of elements in the sensor array.


Training samples, specified as an M-by-N matrix. M and N are the same as the dimensions of X.


Beamforming directions, specified as a length-2 column vector. The vector has the form [AzimuthAngle; ElevationAngle], in degrees. The azimuth angle must be between –180 and 180 degrees, and the elevation angle must be between –90 and 90 degrees.

Output Arguments


Beamformed output. Y is a column vector of length M, where M is the number of rows in X.


Beamforming weights. W is a column vector of length L, where L is the degrees of freedom of the beamformer. For a Frost beamformer, H, L is given by getNumElements(H.SensorArray)*H.FilterLength.


expand all

Apply Frost Beamforming to ULA

Apply Frost beamforming to an 11-element acoustic ULA array. The incident angle of the incoming signal is -50 degrees in azimuth and 30 degrees in elevation. The speed of sound in air is assumed to be 340 m/sec. The signal has added gaussian white noise.

Simulate the signal.

rng default
ha = phased.ULA('NumElements',11,'ElementSpacing',0.04);
ha.Element.FrequencyRange = [20 20000];
fs = 8e3;
t = 0:1/fs:0.3;
x = chirp(t,0,1,500);
c = 340;
hc = phased.WidebandCollector('Sensor',ha,...
incidentAngle = [-50;30];
x = step(hc,x.',incidentAngle);
noise = 0.2*randn(size(x));
rx = x + noise;

Beamforming the signal.

hbf = phased.FrostBeamformer('SensorArray',ha,...
y = step(hbf,rx);

Plot the beamformed output.



phased.FrostBeamformer uses a beamforming algorithm proposed by Frost. It can be considered the time-domain counterpart of the minimum variance distortionless response (MVDR) beamformer. The algorithm does the following:

  1. Steers the array to the beamforming direction.

  2. Applies an FIR filter to the output of each sensor to achieve the distortionless response constraint. The filter is specific to each sensor.

For further details, see [1].


[1] Frost, O. "An Algorithm For Linearly Constrained Adaptive Array Processing", Proceedings of the IEEE. Vol. 60, Number 8, August, 1972, pp. 926–935.

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

Was this topic helpful?