Main Content

phased.TimeDelayLCMVBeamformer

Time delay LCMV beamformer

Description

The TimeDelayLCMVBeamformer object implements a time-delay linear constraint minimum variance beamformer.

To compute the beamformed signal:

  1. Define and set up your time-delay LCMV beamformer. See Construction.

  2. Call step to perform the beamforming operation according to the properties of phased.TimeDelayLCMVBeamformer. The behavior of step is specific to each object in the toolbox.

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.

Construction

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

Properties

SensorArray

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

PropagationSpeed

Signal propagation speed

Specify the propagation speed of the signal, in meters per second, as a positive scalar. You can specify this property as single or double precision.

Default: Speed of light

SampleRate

Signal sampling rate

Specify the signal sampling rate (in hertz) as a positive scalar. This property can be specified as single or double precision.

Default: 1e6

FilterLength

FIR filter length

Specify the length of the FIR filter behind each sensor element in the array as a positive integer. This property can be specified as single or double precision.

Default: 2

Constraint

Constraint matrix

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 number of degrees of freedom of the beamformer. For a time-delay LCMV beamformer, the number of degrees of freedom is the product of the number of elements of the array and the filter length specified by the value of the FilterLength property. This property can be specified as single or double precision.

Default: [1;1]

DesiredResponse

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. This property can be specified as single or double precision.

Default: 1, which is equivalent to a distortionless response

DiagonalLoadingFactor

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. This property can be specified as single or double precision.

Default: 0

TrainingInputPort

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.

Default: false

DirectionSource

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:

'Property'The Direction property of this object specifies the beamforming direction.
'Input port'An input argument in each invocation of step specifies the beamforming direction.

Default: 'Property'

Direction

Beamforming direction

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 is between –180° and 180°. The elevation angle is between –90° and 90°. This property applies when you set the DirectionSource property to 'Property'. This property can be specified as single or double precision.

Default: [0; 0]

WeightsOutputPort

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.

Default: false

Methods

stepPerform time-delay LCMV beamforming
Common to All System Objects
release

Allow System object property value changes

Examples

collapse all

Apply a time delay LCMV beamformer to an 11-element acoustic ULA array. The elements are omnidirectional microphones. The incident angle of the signal is -50 degrees in azimuth and 30 degrees in elevation. The incident signal is an FM chirp with 500 Hz bandwidth. The propagation speed is a typical speed of sound in air, 340 m/s.

Simulate the signal and add noise.

nElem = 11;
microphone = phased.OmnidirectionalMicrophoneElement(...
    'FrequencyRange',[20 20000]);
array = phased.ULA('Element',microphone,'NumElements',nElem,'ElementSpacing',0.04);
fs = 8000;
t = 0:1/fs:0.3;
x = chirp(t,0,1,500);
c = 340;
collector = phased.WidebandCollector('Sensor',array,...
    'PropagationSpeed',c,'SampleRate',fs,...
    'ModulatedInput',false);
incidentAngle = [-50;30];
x = collector(x.',incidentAngle);
noise = 0.2*randn(size(x));
rx = x + noise;

Create and apply the time-delay LCMV beamformer. Specify a filterlength of 5.

filterLength = 5;
constraintMatrix = kron(eye(filterLength),ones(nElem,1));
desiredResponseVector = eye(filterLength,1);
beamformer = phased.TimeDelayLCMVBeamformer('SensorArray',array,...
    'PropagationSpeed',c,'SampleRate',fs,'FilterLength',filterLength,...
    'Direction',incidentAngle,'Constraint',constraintMatrix,...
    'DesiredResponse',desiredResponseVector);
y = beamformer(rx);

Compare the beamformer output to the input to the middle sensor.

plot(t,rx(:,6),'r:',t,y)
xlabel('Time')
ylabel('Amplitude')
legend('Original','Beamformed')

Figure contains an axes object. The axes object with xlabel Time, ylabel Amplitude contains 2 objects of type line. These objects represent Original, Beamformed.

Algorithms

expand all

References

[1] Frost, O. “An Algorithm For Linearly Constrained Adaptive Array Processing”, Proceedings of the IEEE. Vol. 60, Number 8, August, 1972, pp. 926–935.

[2] Van Trees, H. Optimum Array Processing. New York: Wiley-Interscience, 2002.

Extended Capabilities

Version History

Introduced in R2011a