Main Content

step

System object: phased.LCMVBeamformer
Package: phased

Perform LCMV beamforming

Syntax

Y = step(H,X)
Y = step(H,X,XT)
[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 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.

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.

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.

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.

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

Examples

expand all

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];
antenna = phased.IsotropicAntennaElement('FrequencyRange',[20 20e8]);
array = phased.ULA('NumElements',5,'ElementSpacing',lambda/2,...
    'Element',antenna);
x = collectPlaneWave(array,x,incidentAngle,fc,c);
noise = 0.2*(randn(size(x)) + 1j*randn(size(x)));
rx = x + noise;

Beamform the array.

steervec = phased.SteeringVector('SensorArray',array,...
    'PropagationSpeed',c);
beamformer = phased.LCMVBeamformer('Constraint',steervec(fc,incidentAngle),'DesiredResponse',1);
y = beamformer(rx);

Plot the original and beamformed signals.

plot(t,real(rx(:,3)),'r:',t,real(y),t,real(x(:,3)),'g')
xlabel('Time (sec)')
ylabel('Amplitude')
legend('Signal at Sensor 3','Beamformed Signal','Noise Free Signal')

Figure contains an axes object. The axes object with xlabel Time (sec), ylabel Amplitude contains 3 objects of type line. These objects represent Signal at Sensor 3, Beamformed Signal, Noise Free Signal.