Main Content

phased.SubbandPhaseShiftBeamformer

Subband phase shift beamformer

Description

The SubbandPhaseShiftBeamformer object implements a subband phase shift beamformer.

To compute the beamformed signal:

  1. Define and set up your subband phase shift beamformer. See Construction.

  2. Call step to perform the beamforming operation according to the properties of phased.SubbandPhaseShiftBeamformer. 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.SubbandPhaseShiftBeamformer creates a subband phase shift beamformer System object, H. The object performs subband phase shift beamforming on the received signal.

H = phased.SubbandPhaseShiftBeamformer(Name,Value) creates a subband phase shift 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

Sensor array

Sensor array specified as an array System object belonging to the phased package. A sensor array can 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

OperatingFrequency

System operating frequency

Specify the operating frequency of the beamformer in hertz as a scalar. The default value of this property corresponds to 300 MHz. This property can be specified as single or double precision.

Default: 3e8

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

NumSubbands

Number of subbands

Specify the number of subbands used in the subband processing as a positive integer. This property can be specified as single or double precision.

Default: 64

DirectionSource

Source of beamforming direction

Specify whether the beamforming direction for the beamformer 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 directions

Specify the beamforming directions of the beamformer as a two-row matrix. Each column of the matrix has the form [AzimuthAngle; ElevationAngle] (in degrees). Each azimuth angle must be between –180 and 180 degrees, and each elevation angle must be between –90 and 90 degrees. 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

SubbandsOutputPort

Output subband center frequencies

To obtain the center frequencies of each subband, set this property to true and use the corresponding output argument when invoking step. If you do not want to obtain the center frequencies, set this property to false.

Default: false

Methods

stepBeamforming using subband phase shifting
Common to All System Objects
release

Allow System object property value changes

Examples

collapse all

Apply subband phase-shift beamforming to an 11-element underwater ULA. The incident angle of a wideband signal is 10° in azimuth and 30° in elevation. The carrier frequency is 2 kHz.

Create the ULA.

antenna = phased.ULA('NumElements',11,'ElementSpacing',0.3);
antenna.Element.FrequencyRange = [20 20000];

Create a chirp signal with noise.

fs = 1e3;
carrierFreq = 2e3;
t = (0:1/fs:2)';
x = chirp(t,0,2,fs);
c = 1500;
collector = phased.WidebandCollector('Sensor',antenna, ...
    'PropagationSpeed',c,'SampleRate',fs,...
    'ModulatedInput',true,'CarrierFrequency',carrierFreq);
incidentAngle = [10;30];
x = collector(x,incidentAngle);
noise = 0.3*(randn(size(x)) + 1j*randn(size(x)));
rx = x + noise;

Beamform in the direction of the incident angle.

beamformer = phased.SubbandPhaseShiftBeamformer('SensorArray',antenna, ...
    'Direction',incidentAngle,'OperatingFrequency',carrierFreq, ...
    'PropagationSpeed',c,'SampleRate',fs,'SubbandsOutputPort',true, ...
    'WeightsOutputPort',true);
[y,w,subbandfreq] = beamformer(rx);

Plot the real part of the original and beamformed signals.

plot(t(1:300),real(rx(1:300,6)),'r:',t(1:300),real(y(1:300)))
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.

Plot the response pattern for five frequency bands.

pattern(antenna,subbandfreq(1:5).',[-180:180],0,'PropagationSpeed',c, ...
    'CoordinateSystem','rectangular','Weights',w(:,1:5))
legend('location','SouthEast')

Figure contains an axes object. The axes object with title Azimuth Cut (elevation angle = 0.0°), xlabel Azimuth Angle (degrees), ylabel Directivity (dBi) contains 5 objects of type line. These objects represent 2.00000 kHz, 2.01562 kHz, 2.03125 kHz, 2.04688 kHz, 2.06250 kHz.

Algorithms

expand all

References

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

Extended Capabilities

Version History

Introduced in R2011a