Time delay LCMV beamformer
The TimeDelayLCMVBeamformer object implements a time delay linear constraint minimum variance beamformer.
The BeamscanEstimator object calculates a beamscan spatial spectrum estimate for a uniform linear array.
To compute the beamformed signal:
H = phased.TimeDelayLCMVBeamformer creates a time delay linear constraint minimum variance (LCMV) beamformer System object™, H. The object performs time delay LCMV beamforming on the received signal.
H = phased.TimeDelayLCMVBeamformer(Name,Value) creates a time delay LCMV beamformer object, H, with each specified property Name set to the specified Value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).
Handle to sensor array
Specify the sensor array as a handle. The sensor array must be an array object in the phased package. The array cannot contain subarrays.
Default: phased.ULA with default property values
Signal propagation speed
Specify the propagation speed of the signal, in meters per second, as a positive scalar.
Default: Speed of light
Signal sampling rate
Specify the signal sampling rate (in hertz) as a positive scalar.
FIR filter length
Specify the length of the FIR filter behind each sensor element in the array as a positive integer.
Specify the constraint matrix used for time delay LCMV beamformer as an M-by-K matrix. Each column of the matrix is a constraint and M is the degrees of freedom of the beamformer. For a time delay LCMV beamformer, H, M is given by H.SensorArray*H.FilterLength.
Default: [1; 1]
Desired response vector
Specify the desired response used for time delay LCMV beamformer as a column vector of length K, where K is the number of constraints in the Constraint property. Each element in the vector defines the desired response of the constraint specified in the corresponding column of the Constraint property.
Default: 1, which is equivalent to a distortionless response
Diagonal loading factor
Specify the diagonal loading factor as a positive scalar. Diagonal loading is a technique used to achieve robust beamforming performance, especially when the sample support is small. This property is tunable.
Add input to specify training data
To specify additional training data, set this property to true and use the corresponding input argument when you invoke step. To use the input signal as the training data, set this property to false.
Source of beamforming direction
Specify whether the beamforming direction comes from the Direction property of this object or from an input argument in step. Values of this property are:
Specify the beamforming direction of the beamformer as a column vector of length 2. The direction is specified in the format of [AzimuthAngle; ElevationAngle] (in degrees). The azimuth angle should be between –180 and 180. The elevation angle should be between –90 and 90. This property applies when you set the DirectionSource property to 'Property'.
Default: [0; 0]
Output beamforming weights
To obtain the weights used in the beamformer, set this property to true and use the corresponding output argument when invoking step. If you do not want to obtain the weights, set this property to false.
|clone||Create time delay LCMV beamformer object with same property values|
|getNumInputs||Number of expected inputs to step method|
|getNumOutputs||Number of outputs from step method|
|isLocked||Locked status for input attributes and nontunable properties|
|release||Allow property value and input characteristics changes|
|step||Perform time delay LCMV beamforming|
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); % Plot plot(t,rx(:,6),'r:',t,y); xlabel('Time') ylabel('Amplitude') legend('Original','Beamformed');
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.
 Frost, O. "An Algorithm For Linearly Constrained Adaptive Array Processing", Proceedings of the IEEE. Vol. 60, Number 8, August, 1972, pp. 926–935.
 Van Trees, H. Optimum Array Processing. New York: Wiley-Interscience, 2002.