Main Content

phased.TimeDelayBeamformer

Time delay beamformer

Description

The phased.TimeDelayBeamformer System object™ object implements a time delay beamformer. The object performs delay and sum beamforming on the received signal by using time delays.

To implement a time delay beamformer:

  1. Create the phased.TimeDelayBeamformer object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

timeDelayBeamformer = phased.TimeDelayBeamformer creates a time delay beamformer System object, timeDelayBeamformer.

timeDelayBeamformer = phased.TimeDelayBeamformer(Name=Value) sets properties using one or more optional name-value arguments. For example, SampleRate=2e6 sets the sample rate to 2e6.

example

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Sensor array, specified as an array object from the phased package. The array must not contain subarrays.

Signal propagation speed, specified as a positive scalar. The units are in meters per second.

Data Types: double

Signal sampling rate, specified as a positive scalar. The units are in hertz.

Data Types: double

Source of the beamforming direction, specified as one of these options:

  • "Property" — The Direction property of this object specifies the beamforming direction.

  • "Input port" — An input argument in each invocation of the object (as if it were a function) specifies the beamforming direction.

Beamforming direction of the beamformer, specified as a column vector of length 2. Specify the direction in the format of [AzimuthAngle; ElevationAngle]. The azimuth angle is between –180 and 180. The elevation angle is between –90 and 90. The units are in degrees.

Dependencies

To enable this property, set the DirectionSource property value to "Property".

Data Types: double

Output beamforming weights, specified as false (logical 0) or true or (logical 1).

To obtain the weights used in the beamformer, set this property to true and use the corresponding output argument when invoking the object as a function. If you do not want to obtain the weights, set this property to false.

Data Types: logical

Usage

Description

Y = timeDelayBeamformer(X) applies time delay beamforming to the input, X, and returns the beamformed output in Y.

Y = timeDelayBeamformer(X,ang) additionally specifies the beamforming direction, ang. To enable this syntax, set the DirectionSource property value to"Input port".

[Y,W] = timeDelayBeamformer(___) additionally returns the beamforming weights in W for any of the input argument combinations in the previous syntaxes. To enable this syntax, set the WeightsOutputPort property value to true. W is a column vector of length N. For a time delay beamformer, the weights are constant because the beamformer simply adds all the channels together and scales the result to preserve the signal power.

Input Arguments

expand all

Input data, specified as an M-by-N matrix. N is the number of elements of the sensor array.

Data Types: double

Beamforming direction, specified as a 2-element column vector in the form of [AzimuthAngle; ElevationAngle]. The azimuth angle must be between –180 and 180 degrees, and the elevation angle must be between –90 and 90 degrees.

Data Types: double

Output Arguments

expand all

Beamformed output, returned as a column vector of length M.

Data Types: DOUBLE

Beamforming weights, returned as a column vector of length N.

Data Types: double

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

Apply a time-delay beamformer to an 11-element uniform linear acoustic array. The arrival angle of the signal is -50 degrees in azimuth and 30 degrees in elevation. The arriving signal is a 0.3 second segment of a linear FM chirp having a 500 Hz bandwidth. Assume the speed of sound in air is 340.0 m/s.

Simulate the arriving signal at the wideband collector.

microphone = phased.CustomMicrophoneElement(FrequencyVector=[20,20000],FrequencyResponse=[1,1]);
array = phased.ULA(Element=microphone,NumElements=11,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);

Add white Gaussian random noise to the signal.

sigma = 0.2;
noise = sigma*randn(size(x));
rx = x + noise;

Beamform the incident signals using a time-delay beamformer.

beamformer = phased.TimeDelayBeamformer(SensorArray=array,...
    SampleRate=fs,PropagationSpeed=c,...
    Direction=incidentAngle);
y = beamformer(rx);

Plot the beamformed signal against the incident signal at the middle sensor of the array.

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

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

Algorithms

expand all

References

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

Extended Capabilities

expand all

Version History

Introduced in R2011a