System object: phased.TimeDelayLCMVBeamformer
Perform time delay LCMV beamforming
Y = step(H,X)
Y = step(H,X,XT)
Y = step(H,X,ANG)
[Y,W] = step(___)
Y = step(H,X) performs time delay 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. M must be larger than the FIR filter length specified in the FilterLength property.
Y = step(H,X,XT) uses XT as the training samples to calculate the beamforming weights when you set the TrainingInputPort property to true. XT is an M-by-N matrix where N is the number of elements of the sensor array. M must be larger than the FIR filter length specified in the FilterLength property.
Y = step(H,X,ANG) uses ANG as the beamforming direction, when you set the DirectionSource property to 'Input port'. ANG is a column vector of length 2 in the form of [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.
You can combine optional input arguments when their enabling properties are set: Y = step(H,X,XT,ANG)
[Y,W] = step(___) returns additional output, W, as the beamforming weights when you set the WeightsOutputPort property to true. W is a column vector of length L, where L is the degrees of freedom of the beamformer. For a time delay LCMV beamformer, H, L is given by H.SensorArray*H.FilterLength.
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 a time delay LCMV beamformer to an 11-element array. The incident angle of the signal is –50 degrees in azimuth and 30 degrees in elevation.
% Signal simulation ha = phased.ULA('NumElements',11,'ElementSpacing',0.04); ha.Element.FrequencyRange = [20 20000]; fs = 8e3; t = 0:1/fs:0.3; x = chirp(t,0,1,500); c = 340; % Wave propagation speed (m/s) hc = phased.WidebandCollector('Sensor',ha,... 'PropagationSpeed',c,'SampleRate',fs,'ModulatedInput',false); incidentAngle = [-50; 30]; x = step(hc,x.',incidentAngle); noise = 0.2*randn(size(x)); rx = x+noise; % Beamforming ha = phased.ULA('NumElements',11,'ElementSpacing',0.04); hbf = phased.TimeDelayLCMVBeamformer('SensorArray',ha,... 'PropagationSpeed',c,'SampleRate',fs,'FilterLength',5,... 'Direction',incidentAngle); hbf.Constraint = kron(eye(5),ones(11,1)); hbf.DesiredResponse = eye(5, 1); y = step(hbf,rx);
The beamforming algorithm is the time-domain counterpart of the narrowband linear constraint minimum variance (LCMV) 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 specified constraints. The filter is specific to each sensor.