Main Content

step

System object: phased.RangeDopplerResponse
Namespace: phased

Calculate range-Doppler response

Description

Note

Starting in R2016b, instead of using the step method to perform the operation defined by the System object™, you can call the object with arguments, as if it were a function. For example, y = step(obj,x) and y = obj(x) perform equivalent operations.

[resp,rnggrid,dopgrid] = step(H,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] = step(H,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] = step(H,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.

[resp,rnggrid,dopgrid] = step(H,___,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.

Note

The object performs an initialization the first time the object is executed. This initialization locks nontunable properties 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 release method to unlock the object.

Input Arguments

H

Range-Doppler response System object

x

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 step(H,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 step(H,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 step(H,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.

xref

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.

coeff

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

prf

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

resp

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
step(H,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.

step(H,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.

step(H,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.

rnggrid

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

dopgrid

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.

Examples

expand 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');

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.