主要内容

phased.SubbandPhaseShiftBeamformer

Subband phase shift beamformer

Description

The phased.SubbandPhaseShiftBeamformer object creates a subband phase shift beamformer.

To beamform a signal:

  1. Create the phased.SubbandPhaseShiftBeamformer 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

beamformer = phased.SubbandPhaseShiftBeamformer creates a subband phase shift beamformer System object™. The object performs subband phase shift beamforming on a received signal with default property values.

example

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

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 System object belonging to Phased Array System Toolbox. The sensor array can contain subarrays.

Example: phased.URA

Signal propagation speed, specified as a real-valued positive scalar. Units are in meters per second. The default propagation speed is the value returned by physconst("LightSpeed").

Example: 3e8

Data Types: single | double

Operating frequency, specified as a positive scalar. Units are in Hz.

Example: 1e9

Data Types: single | double

Sample rate of signal, specified as a positive scalar. Units are in Hz. The System object uses this quantity to calculate the propagation delay in units of samples.

Example: 1e6

Data Types: single | double

Number of processing subbands, specified as a positive integer.

Example: 128

Data Types: double

Source of beamforming direction, specified as 'Property' or 'Input port'. Specify whether the beamforming direction comes from the Direction property of this object or from the input argument, ANG. Values of this property are:

'Property'Specify the beamforming direction using the Direction property.
'Input port'Specify the beamforming direction using the input argument, ANG.

Data Types: char

Beamforming directions, specified as a real-valued 2-by-1 vector or a real-valued 2-by-L matrix. For a matrix, each column specifies a different beamforming direction. Each column has the form [AzimuthAngle;ElevationAngle]. Azimuth angles must lie between –180° and 180° and elevation angles must lie between –90° and 90°. All angles are defined with respect to the local coordinate system of the array. Units are in degrees.

Example: [40;30]

Dependencies

To enable this property, set the DirectionSource property to 'Property'.

Data Types: single | double

Enable the output of beamforming weights, specified as false or true. To obtain the beamforming weights, set this property to true and use the corresponding output argument, W. If you do not want to obtain the weights, set this property to false.

Data Types: logical

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

Data Types: logical

Usage

Description

Y = beamformer(X) performs subband phase shift beamforming on the input, X, and returns the beamformed output in Y.

example

Y = beamformer(X,ANG) uses ANG as the beamforming direction. This syntax is available when you set the DirectionSource property to 'Input port'.

[Y,W] = beamformer(___) returns the beamforming weights, W. To enable this syntax, set the WeightsOutputPort property to true.

[Y,FREQ] = beamformer(___) returns the center frequencies of all subbands, FREQ. To enable this syntax, set the SubbandsOutputPort property to true.

[Y,W,FREQ] = beamformer(___) returns beamforming weights and center frequencies of subbands. To enable this syntax, set the WeightsOutputPort property to true and set the SubbandsOutputPort property to true.

Note

The object performs an initialization the first time the object 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.

Input Arguments

expand all

Input signal, specified as an M-by-N complex-valued matrix. If the sensor array contains subarrays, N is the number of subarrays; otherwise, N is the number of elements. This argument can be specified as single or double precision.

The size of the first dimension of the input matrix can vary to simulate a changing signal length. A size change can occur, for example, in the case of a pulse waveform with variable pulse repetition frequency.

Data Types: single | double

Beamforming directions, specified as a two-row real-valued matrix. Each column has the form [AzimuthAngle;ElevationAngle]. Each azimuth angle must be between –180° and 180°, and each elevation angle must be between –90° and 90°. Units are in degrees. This argument can be specified as single or double precision.

Data Types: single | double

Output Arguments

expand all

Beamformed output, returned as an M-by-L complex-valued matrix, where M is the number of rows of X and L is the number of beamforming directions.

Data Types: single | double

Beamforming weights, returned as a N-by-K-by-L complex-valued array. K is the number of subbands in the NumSubbands property. L is the number of beamforming directions. If the sensor array contains subarrays, N is the number of subarrays; otherwise, N is the number of elements. Each column of W specifies the narrowband beamforming weights used in the corresponding subband for the corresponding direction.

Data Types: single | double

Center frequencies of subbands, returned as a length-K real-valued column vector, where K is the number of subbands specified by the NumSubbands property. This argument can be returned as single or double precision.

Data Types: single | 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 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

expand all

Version History

Introduced in R2011a