This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

phased.FrostBeamformer System object

Package: phased

Frost beamformer


The phased.FrostBeamformer object implements a Frost beamformer. A Frost beamformer consists of a time-domain MVDR beamformer combined with a bank of FIR filters. The beamformer steers the beam towards a given direction while the FIR filters preserve the input signal power.

To compute the beamformed signal:

  1. Define and set up a Frost beamformer. See Construction.

  2. Call step to perform the beamforming operation according to the properties of phased.FrostBeamformer. The behavior of step is specific to each object in the toolbox.

    Note:   Starting in R2016b, instead of using the step method to perform the operation defined by the System object™, you can call the object with arguments, as if it were a function. For example, y = step(obj,x) and y = obj(x) perform equivalent operations.


H = phased.FrostBeamformer creates a Frost beamformer System object, H. The object performs Frost beamforming on the received signal.

H = phased.FrostBeamformer(Name,Value) creates a Frost beamformer object, H, with each specified property Name set to the specified Value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).



Handle to sensor array

Specify the sensor array as a handle. The sensor array must be an array object in the phased package. The array cannot contain subarrays.

Default: phased.ULA with default property values


Signal propagation speed

Specify the propagation speed of the signal, in meters per second, as a positive scalar.

Default: Speed of light


Signal sampling rate

Specify the signal sampling rate (in hertz) as a positive scalar.

Default: 1e6


FIR filter length

Specify the length of FIR filter behind each sensor element in the array as a positive integer.

Default: 2


Diagonal loading factor

Specify the diagonal loading factor as a positive scalar. Diagonal loading is a technique used to achieve robust beamforming performance, especially when the sample support is small. This property is tunable.

Default: 0


Add input to specify training data

To specify additional training data, set this property to true and use the corresponding input argument when you invoke step. To use the input signal as the training data, set this property to false.

Default: false


Source of beamforming direction

Specify whether the beamforming direction comes from the Direction property of this object or from an input argument in step. Values of this property are:

'Property'The Direction property of this object specifies the beamforming direction.
'Input port'An input argument in each invocation of step specifies the beamforming direction.

Default: 'Property'


Beamforming direction

Specify the beamforming direction of the beamformer as a column vector of length 2. The direction is specified in the format of [AzimuthAngle; ElevationAngle] (in degrees). The azimuth angle should be between –180 and 180. The elevation angle should be between –90 and 90. This property applies when you set the DirectionSource property to 'Property'.

Default: [0;0]


Output beamforming weights

To obtain the weights used in the beamformer, set this property to true and use the corresponding output argument when invoking step. If you do not want to obtain the weights, set this property to false.

Default: false


stepPerform Frost beamforming
Common to All System Objects

Create System object with same property values


Expected number of inputs to a System object


Expected number of outputs of a System object


Check locked states of a System object (logical)


Allow System object property value changes


expand all

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.

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

Beamform the signal.

beamformer = phased.FrostBeamformer('SensorArray',array,...
y = beamformer(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.

Extended Capabilities

Introduced in R2012a

Was this topic helpful?