Main Content

phased.RangeDopplerResponse

Range-Doppler response

Description

The phased.RangeDopplerResponse System object™ calculates the filtered response to fast-time and slow-time data. or equivalently, range data, using either a matched filter or an FFT.

The input to the range-Doppler response object is a data cube. The organization of the data cube follows the Phased Array System Toolbox™ convention. The first dimension of the cube represents the fast-time samples or ranges of the received signals. The second dimension represents multiple channels such as sensors or beams. The third dimension, slow time, represent pulses. If the data contains only one channel or pulse, the data cube can contain fewer than three dimensions. Range processing operates along the first dimension of the cube. Doppler processing operates along the last dimension.

The output of the object is also a data cube with the same number of dimensions as the input. The first dimension contains range-processed data but its length can differ from the first dimension of the input. The last dimension contains Doppler processed data. Its length can differ from the last dimension of the input.

To compute the range-Doppler response:

  1. Define and set up your phased.RangeDopplerResponse System object. See Creation.

  2. Call the object to compute the range-Doppler response of the input signal according to the properties of phased.RangeDopplerResponse.

Creation

Description

response = phased.RangeDopplerResponse creates a range-Doppler response System object, response. The object calculates the range-Doppler response of the input data.

response = phased.RangeDopplerResponse(Name=Value) creates a range-Doppler response 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.

Range processing method, specified as 'Matched filter' or 'FFT'.

'Matched filter'Algorithm applies a matched filter to the incoming signal. This approach is common with pulsed signals, where the matched filter is the time reverse of the transmitted signal.
'FFT'Algorithm performs range processing by applying an FFT to the input signal. This approach is commonly used with FMCW and linear FM pulsed signals.

Example: 'Matched filter'

Data Types: char | string

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

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

Slope of the linear FM sweeping, specified as a scalar. The x data you provide to the object or the plotResponse object] function must correspond to sweeps having this slope. Units are in Hertz per second.

Dependencies

To enable this property, set the RangeMethod property to 'FFT'.

Data Types: single | double

Set this property to true to have the range-Doppler response object dechirp the input signal. Set this property to false to indicate that the input signal is already dechirped and no dechirp operation is necessary.

To enable this property, set the RangeMethod property to 'FFT'.

Data Types: char | string

Decimation factor for the dechirped signal, specified as a positive integer. When processing FMCW signals, you can decimate the dechirped signal to reduce the requirements on the analog-to-digital converter. This property can be specified as single or double precision. The default value indicates no decimation.

Example: 10

Dependencies

To enable this property, set the RangeMethod property to 'FFT' and the DechirpInput property to true.

Data Types: double | single

Source of FFT length used for range processing, specified as 'Auto' or 'Property'. This property determines how the object calculates the FFT length used in range processing. Values of this property are:

'Auto'The FFT length equals the number of rows of the input signal.
'Property'The RangeFFTLength property of this object specifies the FFT length.

Example: 'Property'

Dependencies

To enable this property, set the RangeMethod property to 'FFT'.

Data Types: char

FFT length in range processing, specified as a positive integer.

Example: 2048

Dependencies

To enable this property, set the RangeMethod property to 'FFT' and the RangeFFTLengthSource property to 'Property'.

Data Types: double | single

Window for range weighting, specified as 'None', 'Hamming', 'Chebyshev', 'Hann', 'Kaiser', 'Taylor', or 'Custom'. If you set this property to 'Taylor', the generated Taylor window has four nearly constant sidelobes adjacent to the mainlobe.

To enable this property, set the RangeMethod property to 'FFT'.

Example: 'Kaiser'

Data Types: char

Sidelobe attenuation level for range processing of a Kaiser, Chebyshev, or Taylor window in range processing as a positive scalar. Units are dB.

Example: 30

Dependencies

To enable this property, set the RangeMethod property to 'FFT' and the RangeWindow property to 'Kaiser', 'Chebyshev', or 'Taylor'.

Data Types: double | single

User-defined window for range processing, specified as a function handle or a cell array.

  • If CustomRangeWindow is a function handle, the specified function takes the window length as the input and generates appropriate window coefficients.

  • If CustomRangeWindow is a cell array, the first cell must be a function handle. The specified function takes the window length as the first input argument, with other additional input arguments, if necessary. The function then generates appropriate window coefficients. The remaining entries in the cell array are the additional input arguments to the function, if any.

Dependencies

To enable this property, set the RangeMethod property to 'FFT' and the RangeWindow property to 'Custom'.

Data Types: function_handle

Set reference range at center of range grid, specified as true or false. Setting this property to true enables you to set the reference range at the center of the range grid. Setting this property to false sets the reference range to the beginning of the range grid.

Dependencies

To enable this property, set the RangeMethod to 'FFT'.

Data Types: logical

Reference range of the range grid, specified as a nonnegative scalar.

  • If you set the RangeMethod property to 'Matched filter', the reference range is set to the start of the range grid.

  • If you set the RangeMethod property to 'FFT', the reference range is determined by the ReferenceRangeCentered property.

    • When you set the ReferenceRangeCentered property to true, the reference range is set to the center of the range grid.

    • When you set the ReferenceRangeCentered property to false, the reference range is set to the start of the range grid.

    Units are in meters.

This property is tunable.

Example: 1000.0

Data Types: double | single

Source of pulse repetition frequency, specified as

  • 'Auto' — You assume that the pulse repetition frequency (PRF) is the inverse of the duration of the input signal to the step method. Then the PRF equals the sample rate of the signal divided by the number of rows in the input signal.

  • 'Property'— specify the pulse repetition frequency using the PRF property.

  • 'Input port'— specify the PRF using an input argument of the object function.

Use the 'Property' or 'Input port' option when the pulse repetition frequency cannot be determined by the signal duration, as is the case with range-gated data.

Example: 'Input port'

Data Types: char

Pulse repetition frequency of the input signal, specified as a positive scalar. PRF must be less than or equal to the sample rate divided by the number of rows of the input signal to the object function. When the signal length is variable, use the maximum possible number of rows of the input signal instead.

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

Example: 1000

Data Types: double | single

Source of FFT length in Doppler processing, specified as 'Auto' or'Property'. This property specified how the object determines the FFT length in Doppler processing. Values of this property are:

'Auto'The FFT length is equal to the number of rows of the input signal.
'Property'The DopplerFFTLength property of this object specifies the FFT length.

Example: 'Property'

Dependencies

To enable this property, set the RangeMethod property to 'FFT'.

Data Types: char

FFT length for Doppler processing, specified as a positive integer.

To enable this property, set the RangeMethod property to 'FFT' and the DopplerFFTLengthSource property to 'Property'.

Example: 2048

Data Types: double | single

Specify the window used for Doppler weighting, specified as 'None', 'Hamming', 'Chebyshev', 'Hann', 'Kaiser', 'Taylor', or 'Custom'. If you set this property to 'Taylor', the generated Taylor window has four nearly constant sidelobes adjacent to the mainlobe.'Chebyshev'

Dependencies

To enable this property, set the RangeMethod property to 'FFT'.

Data Types: char | string

Sidelobe attenuation level of Kaiser, Chebyshev, or Taylor windows for Doppler processing, specified as a positive scalar. Units are in dB.

Example: 25

Dependencies

To enable this property, set the RangeMethod property to 'FFT' and the DopplerWindow property to 'Kaiser', 'Chebyshev', or 'Taylor'.

Data Types: double | single

Specify the user-defined window for Doppler processing as a function handle or a cell array.

  • If the CustomDopplerWindow property is a function handle, the specified function takes the window length as the input and generates appropriate window coefficients.

  • If the CustomDopplerWindow property is a cell array, then the first cell must be a function handle. The specified function takes the window length as the first input argument, with other additional input arguments, if necessary. The function then generates appropriate window coefficients. The remaining entries in the cell array are the additional input arguments to the function, if any.

Dependencies

To enable this property, set the RangeMethod property to 'FFT' and the DopplerWindow property to 'Custom'

Data Types: function_handle | cell

Doppler domain output, specified as 'Frequency' or 'Speed'. The Doppler domain output is returned in the DOP_GRID output argument of the object.

'Frequency'DOP_GRID is the Doppler shift, in hertz.
'Speed'DOP_GRID is the radial speed corresponding to the Doppler shift, in meters per second.

Example: 'Frequency'

Data Types: char | string

Operating or carrier frequency, specified as a positive scalar.

Example: 2e9

Dependencies

To enable this property, set the DopplerOutput property to 'Frequency'

Data Types: double | single

The source of the maximum number of samples of the input signal, specified as 'Auto' or 'Property'. When you set this property to 'Auto', the object automatically allocates enough memory to buffer the first input signal. When you set this property to 'Property', specify the maximum number of samples in the input signal using the MaximumNumInputSamples property. Any input signal longer than that value is truncated.

Example: 'Property'

Data Types: char

Maximum number of samples in the input signal, specified as a positive integer. This property limits the size of the input signal. Any input signal longer than this value is truncated. The input signal is the first argument to the object. The number of samples is the number of rows in the input.

Example: 2000

Dependencies

To enable this property, set the RangeMethod property to 'Matched filter' and set the MaximumNumInputSamplesSource property to 'Property'.

Data Types: single | double

Usage

Description

[resp,rnggrid,dopgrid] = response(x) calculates the range-Doppler response of the input signal, x. resp is the complex range-Doppler response. rnggrid and dopgrid provide the range samples and Doppler samples, respectively, at which the range-Doppler response is evaluated. This syntax is available when you set the RangeMethod property to 'FFT' and the DechirpInput property to false. This syntax is most commonly used with FMCW signals.

[resp,rnggrid,dopgrid] = response(x,xref) uses xref as the reference signal to dechirp x. This syntax is available when you set the RangeMethod property to 'FFT' and the DechirpInput property to true. This syntax is most commonly used with FMCW signals, where the reference signal is typically the transmitted signal.

[resp,rnggrid,dopgrid] = response(x,coeff) uses coeff as the matched filter coefficients. This syntax is available when you set the RangeMethod property to 'Matched filter'. This syntax is most commonly used with pulsed signals, where the matched filter is the time reverse of the transmitted signal.

example

[resp,rnggrid,dopgrid] = response(___,prf) uses prf as the pulse repetition frequency. These syntaxes are available when you set the PRFSource property to 'Input port'. This syntax is most commonly used with pulsed signals, where the matched filter is the time reverse of the transmitted signal.

Input Arguments

expand all

Input data, specified as a complex-valued K-by-L matrix or K-by-N-by-L array where

  • K denotes the number of fast-time samples.

  • N denotes the number of channels such as beams or sensors. When N is one, only a single data channel is present.

  • L denotes the number of pulses for matched-filter processing and the number of sweeps for FFT processing.

Specific requirements depend on the syntax:

  • In the syntax response(x), each column of x represents a dechirped signal from one frequency sweep. The function assumes all sweeps in x are consecutive.

  • In the syntax response(x,xref), each column of x represents a signal from one frequency sweep. The function assumes all sweeps in x are consecutive and are not dechirped.

  • In the syntax response(x,coeff), each column of the matrix x represents a signal from one pulse. The function assumes all pulses in x are consecutive.

    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.

In the case of an FMCW waveform with a triangle sweep, the sweeps alternate between positive and negative slopes. However, phased.RangeDopplerResponse is designed to process consecutive sweeps of the same slope. To apply phased.RangeDopplerResponse for a triangle-sweep system, use one of the following approaches:

  • Specify a positive SweepSlope property value, with x corresponding to upsweeps only. After obtaining the Doppler or speed values, divide them by 2.

  • Specify a negative SweepSlope property value, with x corresponding to downsweeps only. After obtaining the Doppler or speed values, divide them by 2.

You can specify this argument as single or double precision.

Reference signal, specified as a column vector having the same number of rows as x. You can specify this argument as single or double precision.

Matched filter coefficients, specified as a column vector. You can specify this argument as single or double precision.

Pulse repetition frequency, specified as a positive scalar. prf must be less than or equal to the sample rate specified in the SampleRate property divided by the length of the first dimension of the input signal, x. You can specify this argument as single or double precision.

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

Output Arguments

expand all

Range-Doppler response of x, returned as a complex-valued M-by-P matrix or a M-by-N-by-P array. The values of P and M depend on the syntax. N has the same value as for the input argument, x.

SyntaxValues of M and P
response(x)

If you set the RangeFFTLength property to 'Auto', M = K, the length of the first dimension of x. Otherwise, M equals the value of the RangeFFTLength property.

If you set the DopplerFFTLength property to 'Auto', P = L, the length of the last dimension of x. Otherwise, P equals the value of the DopplerFFTLength property.

response(x,xref)

M is the quotient of the length of the first dimension of x divided by the value of the DecimationFactor property.

If you set the DopplerFFTLength property to 'Auto', P = L, the length of the last dimension of x. Otherwise, P equals the value of the DopplerFFTLength property.

response(x,coeff)

M is the number of rows of x.

If you set the DopplerFFTLength property to 'Auto', P = L, the length of the last dimension of x. Otherwise, P equals the value of the DopplerFFTLength property.

Range samples at which the range-Doppler response is evaluated. rnggrid is a column vector of length M.

Doppler samples or speed samples at which the range-Doppler response is evaluated. dopgrid is a column vector of length P. Whether dopgrid contains Doppler or speed samples depends on the DopplerOutput property of H.

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

plotResponsePlot range-Doppler response
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

Compute the range-doppler response of a pulsed radar signal using a matched filter.

Load data for a pulsed radar signal. The signal includes three target returns. Two targets are approximately 2000 m away, while the third is approximately 3500 m away. In addition, two of the targets are stationary relative to the radar. The third is moving away from the radar at about 100 m/s.

load RangeDopplerExampleData;

Create a range-Doppler response object.

response = phased.RangeDopplerResponse('DopplerFFTLengthSource','Property', ...
   'DopplerFFTLength',RangeDopplerEx_MF_NFFTDOP, ...
   'SampleRate',RangeDopplerEx_MF_Fs,'DopplerOutput','Speed', ...
   'OperatingFrequency',RangeDopplerEx_MF_Fc);

Calculate the range-Doppler response.

[resp,rng_grid,dop_grid] = response(RangeDopplerEx_MF_X, ...
    RangeDopplerEx_MF_Coeff);

Plot the range-Doppler response.

imagesc(dop_grid,rng_grid,mag2db(abs(resp)));
xlabel('Speed (m/s)');
ylabel('Range (m)');
title('Range-Doppler Map');

Figure contains an axes object. The axes object with title Range-Doppler Map, xlabel Speed (m/s), ylabel Range (m) contains an object of type image.

Compute the range-Doppler response of an FMCW signal using an FFT.

Load data for an FMCW signal that has not been dechirped. The signal contains the return from a target about 2200 m away. The signal has a normalized Doppler frequency of approximately -0.36 relative to the radar.

load RangeDopplerExampleData;

Create a range-Doppler response object.

hrdresp = phased.RangeDopplerResponse(...
   'RangeMethod','FFT',...
   'PropagationSpeed',RangeDopplerEx_Dechirp_PropSpeed,...
   'SampleRate',RangeDopplerEx_Dechirp_Fs,...
   'DechirpInput',true,...
   'SweepSlope',RangeDopplerEx_Dechirp_SweepSlope);

Plot the range-Doppler response.

plotResponse(hrdresp,...
   RangeDopplerEx_Dechirp_X,RangeDopplerEx_Dechirp_Xref,...
   'Unit','db','NormalizeDoppler',true)

Figure contains an axes object. The axes object with title Range-Doppler Response Pattern, xlabel Normalized Doppler Frequency, ylabel Range (meters) contains an object of type image.

Estimate the Doppler and range responses for three targets. Two targets are approximately 2000 m away, while the third is approximately 3500 m away. In addition, two of the targets are stationary relative to the radar. The third is moving away from the radar at about 100 m/s. Specify the pulse repetition frequency.

Load data for a pulsed radar signal.

load RangeDopplerExampleData;

Create a range-Doppler response object. Set the PRF to 25 kHz.

response = phased.RangeDopplerResponse('DopplerFFTLengthSource','Property', ...
   'DopplerFFTLength',RangeDopplerEx_MF_NFFTDOP,'SampleRate', ...
   RangeDopplerEx_MF_Fs,'DopplerOutput','Speed','OperatingFrequency', ...
   RangeDopplerEx_MF_Fc,'PRFSource','Property','PRF',25.0e3);

Calculate the range-Doppler response.

[resp,rng_grid,dop_grid] = response(RangeDopplerEx_MF_X, ...
    RangeDopplerEx_MF_Coeff);

Plot the range-Doppler response.

plotResponse(response,RangeDopplerEx_MF_X,RangeDopplerEx_MF_Coeff,'Unit','db')

Figure contains an axes object. The axes object with title Range-Speed Response Pattern, xlabel Speed (m/s), ylabel Range (meters) contains an object of type image.

Estimate the Doppler and range values of a single target from the range-Doppler response.

Load data for an FMCW signal that has not yet been dechirped. The signal contains the return from one target.

load RangeDopplerExampleData;

Create a range-Doppler response object.

hrdresp = phased.RangeDopplerResponse(...
   'RangeMethod','FFT',...
   'PropagationSpeed',RangeDopplerEx_Dechirp_PropSpeed,...
   'SampleRate',RangeDopplerEx_Dechirp_Fs,...
   'DechirpInput',true,...
   'SweepSlope',RangeDopplerEx_Dechirp_SweepSlope);

Obtain the range-Doppler response data.

[resp,rng_grid,dop_grid] = step(hrdresp,...
   RangeDopplerEx_Dechirp_X,RangeDopplerEx_Dechirp_Xref);

Estimate the range and Doppler by finding the location of the maximum response.

[x_temp,idx_temp] = max(abs(resp));
[~,dop_idx] = max(x_temp);
rng_idx = idx_temp(dop_idx);
dop_est = dop_grid(dop_idx)
dop_est = 
-712.8906
rng_est = rng_grid(rng_idx)
rng_est = 
2250

The target is approximately 2250 meters away, and is moving fast enough to cause a Doppler shift of approximately -713 Hz.

Algorithms

expand all

Extended Capabilities

Version History

Introduced in R2012b