System object: phased.PhaseShiftBeamformer
Perform phase shift beamforming
Y = step(H,X)
Y = step(H,X,ANG)
[Y,W] = step(___)
Starting in R2016b, instead of using the
to perform the operation defined by the System
object™, you can
call the object with arguments, as if it were a function. For example,
= step(obj,x) and
y = obj(x) perform
The object performs an initialization the first time the
is executed. This initialization locks nontunable
properties (MATLAB) 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
to unlock the object.
Input signal, specified as an M-by-N matrix. If the sensor array contains subarrays, N is the number of subarrays; otherwise, N is the number of elements.
The size of the first dimension of this input matrix can vary to simulate a changing signal length, such as a pulse waveform with variable pulse repetition frequency.
Beamforming directions, specified as a two-row matrix. Each column 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.
Apply phase-shift beamforming to the signal received by a 5-element ULA. The beamforming direction is 45° azimuth and 0° elevation. Assume the array operates at 300 MHz. Specify the beamforming direction using an input port.
Simulate a sinewave signal arriving at the array.
t = (0:1000)'; fsignal = 0.01; x = sin(2*pi*fsignal*t); c = physconst('LightSpeed'); fc = 300e6; incidentAngle = [45;0]; array = phased.ULA('NumElements',5); x = collectPlaneWave(array,x,incidentAngle,fc,c); noise = 0.1*(randn(size(x)) + 1j*randn(size(x))); rx = x + noise;
Construct the phase-shift beamformer and then beamform the input data.
beamformer = phased.PhaseShiftBeamformer('SensorArray',array,... 'OperatingFrequency',fc,'PropagationSpeed',c,... 'DirectionSource','Input port','WeightsOutputPort',true);
Obtain the beamformed signal and the beamformer weights.
[y,w] = beamformer(rx,incidentAngle);
Plot the original signal at the middle element and the beamformed signal.
plot(t,real(rx(:,3)),'r:',t,real(y)) xlabel('Time') ylabel('Amplitude') legend('Original','Beamformed')
Plot the array response pattern after applying the weights.
The phase shift beamformer uses the conventional delay-and-sum beamforming algorithm. The beamformer assumes the signal is narrowband, so a phase shift can approximate the required delay. The beamformer preserves the incoming signal power.
For further details, see .
 Van Trees, H. Optimum Array Processing. New York: Wiley-Interscience, 2002.