Main Content

step

System object: phased.FrostBeamformer
Namespace: phased

Perform Frost beamforming

Syntax

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

Description

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.

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 object 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

H

Beamformer object.

X

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.

The size of the first dimension of the input matrix can vary to simulate a changing signal length. A size change can occur, for example, in the case of a pulse waveform with variable pulse repetition frequency.

XT

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

The size of the first dimension of the input matrix can vary to simulate a changing signal length. A size change can occur, for example, in the case of a pulse waveform with variable pulse repetition frequency.

ANG

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

Y

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

W

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 the product of the number of elements in the array and the FIR filter length.

Examples

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,...
    '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')

Algorithms

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

References

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