Sample matrix inversion (SMI) beamformer
SMIBeamformer object implements a sample
matrix inversion space-time adaptive beamformer. The beamformer works
on the space-time covariance matrix.
To compute the space-time beamformed signal:
Define and set up your SMI beamformer. See Construction.
stepto execute the SMI beamformer algorithm according to the properties of
phased.STAPSMIBeamformer. The behavior of
stepis specific to each object in the toolbox.
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
H = phased.STAPSMIBeamformer creates a
sample matrix inversion (SMI) beamformer System object,
The object performs the SMI space-time adaptive processing (STAP)
on the input data.
H = phased.STAPSMIBeamformer( creates
an SMI object,
H, with each specified property
Name set to the specified Value. You can specify additional name-value
pair arguments in any order as (
Sensor array specified as an array System object belonging
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
System operating frequency
Specify the operating frequency of the system in hertz as a positive scalar. The default value corresponds to 300 MHz. You can specify this property as single or double precision.
Source of pulse repetition frequency
Source of the PRF values for the STAP processor, specified as
Pulse repetition frequency
Pulse repetition frequency (PRF) of the received signal, specified as a positive scalar. Units are in Hertz. This property can be specified as single or double precision.
To enable this property, set the
Source of targeting direction
Specify whether the targeting direction for the STAP processor
comes from the
Specify the targeting direction of the SMI processor as a column vector of length 2. The
direction is specified in the format of
Number of phase shifter quantization bits
The number of bits used to quantize the phase shift component of beamformer or steering vector weights. Specify the number of bits as a non-negative integer. A value of zero indicates that no quantization is performed. You can specify this property as single or double precision.
Source of targeting Doppler
Specify whether the targeting Doppler for the STAP processor
comes from the
Targeting Doppler frequency
Specify the targeting Doppler of the STAP processor as a scalar. This property applies when
you set the
Number of guarding cells
Specify the number of guard cells used in the training as an even integer. This property specifies the total number of cells on both sides of the cell under test. You can specify this property as single or double precision.
Number of training cells
Specify the number of training cells used in the training as an even integer. Whenever possible, the training cells are equally divided before and after the cell under test. You can specify this property as single or double precision.
Output processing weights
To obtain the weights used in the STAP processor, set this property to
|step||Perform SMI STAP processing on input data|
|Common to All System Objects|
Allow System object property value changes
Process Data Cube Using SMI
Process a data cube using an SMI beamformer. The weights are calculated for the 71st cell of a collected data cube pointing in the azimuth and elevation direction (45°,-35°) and with a Doppler of 12.980 kHz.
Load the cube data and create the SMI beamformer.
load STAPExampleData; beamformer = phased.STAPSMIBeamformer('SensorArray',STAPEx_HArray, ... 'PRF',STAPEx_PRF,'PropagationSpeed',STAPEx_PropagationSpeed, ... 'OperatingFrequency',STAPEx_OperatingFrequency, ... 'NumTrainingCells',100,'WeightsOutputPort',true, ... 'DirectionSource','Input port','DopplerSource','Input port'); [y,w] = beamformer(STAPEx_ReceivePulse,71,[45;-35],12.980e3);
Plot the angle-doppler response.
response = phased.AngleDopplerResponse( ... 'SensorArray',beamformer.SensorArray, ... 'OperatingFrequency',beamformer.OperatingFrequency, ... 'PRF',beamformer.PRF,'PropagationSpeed',beamformer.PropagationSpeed); plotResponse(response,w)
The optimum beamformer weights are
k is a scalar
R represents the space-time covariance matrix
v indicates the space-time steering vector
Because the space-time covariance matrix is unknown, you must estimate that matrix from the data. The sample matrix inversion (SMI) algorithm estimates the covariance matrix by designating a number of range gates to be training cells. Because you use the training cells to estimate the interference covariance, these cells should not contain target returns. To prevent target returns from contaminating the estimate of the interference covariance, you can specify insertion of a number of guard cells before and after the designated target cell.
To use the general algorithm for estimating the space-time covariance matrix:
Assume you have a M-by-N-by-K matrix. M represents the number of slow-time samples, and N is the number of array sensors. K is the number of training cells (range gates for training). Also assume that the number of training cells is an even integer and that you can designate K/2 training cells before and after the target range gate excluding the guard cells. Reshape the M-by-N-by-K matrix into a MN-by-K matrix by letting X denote the MN-by-K matrix.
Estimate the space-time covariance matrix as
Invert the space-time covariance matrix estimate.
Obtain the beamforming weights by multiplying the sample space-time covariance matrix inverse by the space-time steering vector.
This System object supports single and double precision for input data, properties, and arguments. If
the input data
X is single precision, the output data is single precision.
If the input data
X is double precision, the output data is double
precision. The precision of the output is independent of the precision of the properties and
 Guerci, J. R. Space-Time Adaptive Processing for Radar. Boston: Artech House, 2003.
 Ward, J. “Space-Time Adaptive Processing for Airborne Radar Data Systems,” Technical Report 1015, MIT Lincoln Laboratory, December, 1994.
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
Introduced in R2011a