System object: phased.LCMVBeamformer
Package: phased

Perform LCMV beamforming


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


Y = step(H,X) performs LCMV beamforming on the input, X, and returns the beamformed output in Y. X is an M-by-N matrix where N is the number of elements of the sensor array. Y is a column vector of length M.

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. XT is a P-by-N matrix, where N is the number of elements of the sensor array. P must be greater than N.

[Y,W] = step(___) returns the beamforming weights W. This syntax is available when you set the WeightsOutputPort property to true. W is a column vector of length N, where N is the number of elements in the sensor array.

    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.


expand all

LCMV Beamformer with One Constraint

Apply an LCMV beamformer to a 5-element ULA of isotropic sensor elements, preserving the signal from a desired direction. The operating frequency is 300 MHz.

Simulate a low-frequency sinusoid signal in gaussian noise.

f = 50;
t = (0:.001:.3)';
x = sin(2*pi*f*t);
c = physconst('LightSpeed');
fc = 300e6;
lambda = c/fc;
incidentAngle = [45;0];
sIso = phased.IsotropicAntennaElement('FrequencyRange',[20 20e8]);
sULA = phased.ULA('NumElements',5,'ElementSpacing',lambda/2,...
x = collectPlaneWave(sULA,x,incidentAngle,fc,c);
noise = 0.2*(randn(size(x)) + 1j*randn(size(x)));
rx = x + noise;

Beamform the array.

sSV = phased.SteeringVector('SensorArray',sULA,...
sLCMV = phased.LCMVBeamformer;
sLCMV.Constraint = step(sSV,fc,incidentAngle);
sLCMV.DesiredResponse = 1;
y = step(sLCMV,rx);

Plot the original and beamformed signals.

xlabel('Time (sec)'); ylabel('Amplitude')
legend('Signal at Sensor 3','Beamformed Signal','Noise Free Signal')

Was this topic helpful?