Main Content

phased.ADPCACanceller

Adaptive DPCA (ADPCA) pulse canceller

Description

The phased.ADPCACanceller System object™ implements an adaptive displaced phase center array (ADPCA) pulse canceller for a uniform linear array (ULA).

To compute the output signal of the space time pulse canceller:

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

adpcaCancel = phased.ADPCACanceller creates an ADPCA canceller System object that performs two-pulse ADPCA processing on the input data.

example

adpcaCancel = phased.ADPCACanceller(Name=Value) creates an ADPCA canceller System object with each specified property Name set to the specified Value. Specify optional pairs of arguments as (Name1=Value1,...,NameN=ValueN) where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

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.

ULA sensor array, specified as a phased.ULA System object. If you do not specify any name-value pair properties for the ULA sensor array, the default properties of the array are used.

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

Source of the pulse repetition frequency (PRF) values for the STAP processor, specified as 'Property' or 'Input port'.

When you set this property to 'Property'', the PRF is determined by the value of the PRF property. When you set this property to 'Input port', the PRF is determined by an input argument, prf, to the step object function at execution time.

Pulse repetition frequency (PRF) of the received signal, specified as a positive scalar. Units are in Hertz.

Dependencies

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

Data Types: single | double

Source of receiving main lobe direction, specified as either of these options. This property specifies the targeting direction for the STAP processor.

  • 'Property' — The Direction property of this object specifies the targeting direction.

  • 'Input port' — Input argument, ang, in each invocation of step object function specifies the targeting direction.

Receiving mainlobe direction of the receiving sensor array, in degrees, specified as a column vector of length 2. The direction is specified in the format of [AzimuthAngle; ElevationAngle] (in degrees). Azimuth angle must be between –180 and 180. Elevation angle must be between –90 and 90.

Dependencies

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

Data Types: single | double

The number of bits used to quantize the phase shift component of beamformer or steering vector weights, specified as a non-negative integer. A value of zero indicates that no quantization is performed.

Example: 5

Data Types: single | double

Source of targeting Doppler for the STAP processor, specified as either of these options.

  • 'Property' — The Doppler property of this object specifies the Dopler.

  • 'Input port' — Input argument, dop, in each invocation of step object function specifies the Doppler.

Targeting Doppler frequency of the STAP processor, in hertz, specified as a scalar.

Dependencies

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

Data Types: single | double

Output processing weights, specified as logical 0 (false) or logical 1(true).

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.

Output pre-Doppler result, specified as logical 0 (false) or logical 1(true).

Set this property to true to output the processing result before applying the Doppler filtering. Set this property to false to output the processing result after the Doppler filtering.

Number of guard cells used in the training, specified as an even integer. This property specifies the total number of cells on both sides of the cell under test.

Data Types: single | double

Number of training cells used in the training, specified as an even integer. Whenever possible, the training cells are equally divided before and after the cell under test.

Data Types: single | double

Usage

Description

Y = adpcaCancel(X,cutidx) applies the ADPCA pulse cancellation algorithm to the input data X. The algorithm calculates the processing weights according to the range cell specified by cutidx. The output Y contains the result of pulse cancellation either before or after Doppler filtering, depending on the PreDopplerOutput property value.

This syntax is applicable when you set the DirectionSource property to 'Property' and the DopplerSource property to 'Property'.

example

Y = adpcaCancel(X,cutidx,ang) uses ang as the receiving main lobe direction.

This syntax is applicable when you set the DirectionSource property to 'Input port' and the DopplerSource property to 'Property'.

Y = adpcaCancel(X,cutidx,dop) uses dop as the targeting Doppler frequency.

This syntax is applicable when you set the DopplerSource property to 'Input port'.

Y = adpcaCancel(X,cutidx,prf) uses prf as the pulse repetition frequency.

This syntax is applicable when you set the PRFSource property to 'Input port'.

[Y,W] = adpcaCancel(___) also returns the processing weights W.

This syntax is applicable when you set the WeightsOutputPort property to true.

Input Arguments

expand all

Input data, specified as a 3-dimensional M-N-P numeric array whose dimensions are (range, channels, pulses).

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

Range cell, specified as positive scalar.

Data Types: single | double

Receiving main lobe direction, in degrees, specified as a 2-by-1 vector in the form [AzimuthAngle; ElevationAngle]. The azimuth angle must be between –180 and 180. The elevation angle must be between –90 and 90.

Data Types: single | double

Targeting Doppler frequency in hertz, specified as a scalar.

Data Types: single | double

Pulse repetition frequency in hertz, specified as a positive scalar.

Dependencies

To enable this argument, you must set the PRFSource property to 'Input port'.

Data Types: single | double

Output Arguments

expand all

Result of applying pulse cancellation to the input data, returned as a column vector or matrix, depending on the value you set for the PreDopplerOutput property of this object.

  • PreDopplerOutput is set to trueY contains the pre-Doppler data and is returned as an M-by-(P-1) matrix. Each column in Y represents the result obtained by cancelling the two successive pulses.

  • PreDopplerOutput is set to flaseY contains the result of applying an FFT-based Doppler filter to the pre-Doppler data and is returned as a column vector of length M. The targeting Doppler is the Doppler property value.

Data Types: single | double
Complex Number Support: Yes

Processing weights used by the pulse canceller to obtain the pre-Doppler data, returned as a column vector or matrix, depending on the value you set for the PreDopplerOutput of this object.

  • PreDopplerOutput is set to trueW is a N-by-(P-1) matrix. The columns in W correspond to successive pulses in the input data X.

  • PreDopplerOutput is set to flaseW is a column vector of length N × P.

Data Types: single | double
Complex Number Support: Yes

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

Examples

collapse all

Process a radar data cube using an ADPCA processor. Weights are calculated for the 71st cell of the data cube. Set the look direction to (0,0) degrees and the Doppler shift to 12.980 kHz.

Load radar data file and compute weights

load STAPExampleData;
canceller = phased.ADPCACanceller('SensorArray',STAPEx_HArray,...
    'PRF',STAPEx_PRF,...
    'PropagationSpeed',STAPEx_PropagationSpeed,...
    'OperatingFrequency',STAPEx_OperatingFrequency,...
    'NumTrainingCells',100,...
    'WeightsOutputPort',true,...
    'DirectionSource','Input port',...
    'DopplerSource','Input port');
[y,w] = canceller(STAPEx_ReceivePulse,71,[0; 0],12.980e3);

Create AnglerDoppler System object and plot response

sAngeDop = phased.AngleDopplerResponse(...
    'SensorArray',canceller.SensorArray,...
    'OperatingFrequency',canceller.OperatingFrequency,...
    'PRF',canceller.PRF,...
    'PropagationSpeed',canceller.PropagationSpeed);
plotResponse(sAngeDop,w)

Figure contains an axes object. The axes object with title Angle-Doppler Response Pattern, xlabel Angle (degrees), ylabel Doppler Frequency (Hz) contains an object of type image.

Process a radar data cube using an ADPCA processor. Weights are calculated for the 71st cell of the data cube. Load the data cube from STAPExampleData.mat. Quantize the weights to 4 bits. Set the look direction to (0,0) degrees and the Doppler shift to 12.980 kHz.

load STAPExampleData;
sADPCA = phased.ADPCACanceller('SensorArray',STAPEx_HArray,...
    'PRF',STAPEx_PRF,...
    'PropagationSpeed',STAPEx_PropagationSpeed,...
    'OperatingFrequency',STAPEx_OperatingFrequency,...
    'NumTrainingCells',100,...
    'WeightsOutputPort',true,...
    'DirectionSource','Input port',...
    'DopplerSource','Input port',...
    'NumPhaseShifterBits',4);
[y,w] = sADPCA(STAPEx_ReceivePulse,71,[0; 0],12.980e3);
sAngDop = phased.AngleDopplerResponse(...
    'SensorArray',sADPCA.SensorArray,...
    'OperatingFrequency',sADPCA.OperatingFrequency,...
    'PRF',sADPCA.PRF,...
    'PropagationSpeed',sADPCA.PropagationSpeed);
plotResponse(sAngDop,w);

Figure contains an axes object. The axes object with title Angle-Doppler Response Pattern, xlabel Angle (degrees), ylabel Doppler Frequency (Hz) contains an object of type image.

Algorithms

expand all

References

[1] Guerci, J. R. Space-Time Adaptive Processing for Radar. Boston: Artech House, 2003.

[2] Ward, J. “Space-Time Adaptive Processing for Airborne Radar Data Systems,” Technical Report 1015, MIT Lincoln Laboratory, December, 1994.

Extended Capabilities

expand all

Version History

Introduced in R2011a