Documentation |
Package: phased
Sample matrix inversion (SMI) beamformer
The 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.
Call step to execute the SMI beamformer algorithm according to the properties of phased.STAPSMIBeamformer. The behavior of step is specific to each object in the toolbox.
H = phased.STAPSMIBeamformer creates a sample matrix inversion (SMI) beamformer System object™, H. The object performs the SMI space-time adaptive processing (STAP) on the input data.
H = phased.STAPSMIBeamformer(Name,Value) 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 (Name1,Value1,...,NameN,ValueN).
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. Default: Speed of light | ||||
OperatingFrequency |
System operating frequency Specify the operating frequency of the system in hertz as a positive scalar. The default value corresponds to 300 MHz. Default: 3e8 | ||||
PRF |
Pulse repetition frequency Specify the pulse repetition frequency (PRF) of the received signal in hertz as a scalar. Default: 1 | ||||
DirectionSource |
Source of targeting direction Specify whether the targeting direction for the STAP processor comes from the Direction property of this object or from an input argument in step. Values of this property are:
Default: 'Property' | ||||
Direction |
Targeting direction Specify the targeting direction of the SMI processor as a column vector of length 2. The direction is specified in the format of [AzimuthAngle; ElevationAngle] (in degrees). Azimuth angle should be between –180 and 180. Elevation angle should be between –90 and 90. This property applies when you set the DirectionSource property to 'Property'. Default: [0; 0] | ||||
DopplerSource |
Source of targeting Doppler Specify whether the targeting Doppler for the STAP processor comes from the Doppler property of this object or from an input argument in step. Values of this property are:
Default: 'Property' | ||||
Doppler |
Targeting Doppler frequency Specify the targeting Doppler of the STAP processor as a scalar. This property applies when you set the DopplerSource property to 'Property'. Default: 0 | ||||
WeightsOutputPort |
Output processing weights To obtain the weights used in the STAP processor, 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 | ||||
NumGuardCells |
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. Default: 2, indicating that there is one guard cell at both the front and back of the cell under test | ||||
NumTrainingCells |
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. Default: 2, indicating that there is one training cell at both the front and back of the cell under test |
clone | Create space-time adaptive SMI beamformer object with same property values |
getNumInputs | Number of expected inputs to step method |
getNumOutputs | Number of outputs from step method |
isLocked | Locked status for input attributes and nontunable properties |
release | Allow property value and input characteristics changes |
step | Perform SMI STAP processing on input data |
Process the data cube using an SMI processor. The weights are calculated for the 71st cell of a collected data cube pointing to the direction of [45; –35] degrees and the Doppler of 12980 Hz.
load STAPExampleData; % load data Hs = 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] = step(Hs,STAPEx_ReceivePulse,71,[45; -35],12980); Hresp = phased.AngleDopplerResponse(... 'SensorArray',Hs.SensorArray,... 'OperatingFrequency',Hs.OperatingFrequency,... 'PRF',Hs.PRF,... 'PropagationSpeed',Hs.PropagationSpeed); plotResponse(Hresp,w);
The optimum beamformer weights are
$$w=k{R}^{-1}v$$
where:
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
$$\frac{1}{K}X{X}^{H}$$
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.