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:
Define and set up a Frost beamformer. See Construction.
step to perform the beamforming
operation according to the properties of
The behavior of
step is specific to each object in
Starting in R2016b, instead of using the
H = phased.FrostBeamformer creates a Frost
beamformer System object,
H. The object performs
Frost beamforming on the received signal.
H = phased.FrostBeamformer( 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 (
Handle to sensor array
Specify the sensor array as a handle. The sensor array must
be an array object in the
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.
FIR filter length
Specify the length of FIR filter behind each sensor element in the array as a positive integer.
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.
Add input to specify training data
To specify additional training data, set this property to
Source of beamforming direction
Specify whether the beamforming direction comes from the
Specify the beamforming direction of the beamformer as a column
vector of length 2. The direction is specified in the format of
Output beamforming weights
To obtain the weights used in the beamformer, set this property
|step||Perform 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
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,... 'PropagationSpeed',c,'SampleRate',fs,... 'ModulatedInput',false,'NumSubbands',8192); incidentAngle = [-50;30]; x = collector(x.',incidentAngle); noise = 0.2*randn(size(x)); rx = x + noise;
Beamform the signal.
beamformer = phased.FrostBeamformer('SensorArray',array,... 'PropagationSpeed',c,'SampleRate',fs,... 'Direction',incidentAngle,'FilterLength',5); y = beamformer(rx);
Plot the beamformed output.
plot(t,rx(:,6),'r:',t,y) xlabel('Time') ylabel('Amplitude') legend('Original','Beamformed')
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:
Steers the array to the beamforming direction.
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 .
 Frost, O. "An Algorithm For Linearly Constrained Adaptive Array Processing", Proceedings of the IEEE. Vol. 60, Number 8, August, 1972, pp. 926–935.
 Van Trees, H. Optimum Array Processing. New York: Wiley-Interscience, 2002.
Usage notes and limitations:
Requires dynamic memory allocation. See Limitations for System Objects that Require Dynamic Memory Allocation.
See System Objects in MATLAB Code Generation (MATLAB Coder).