System object: phased.LCMVBeamformer
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: H specifies the System object™ on which to run this step method.
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.
Apply an LCMV beamformer to a 5-element ULA, preserving the signal from the desired direction.
% Simulate signal t = (0:1000)'; x = sin(2*pi*0.01*t); c = 3e8; Fc = 3e8; incidentAngle = [45; 0]; ha = phased.ULA('NumElements',5); x = collectPlaneWave(ha,x,incidentAngle,Fc,c); noise = 0.1*(randn(size(x)) + 1j*randn(size(x))); rx = x + noise; % Beamforming hstv = phased.SteeringVector('SensorArray',ha,... 'PropagationSpeed',c); hbf = phased.LCMVBeamformer; hbf.Constraint = step(hstv,Fc,incidentAngle); hbf.DesiredResponse = 1; y = step(hbf, rx);