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:
Define and set up your
phased.RangeDopplerResponse
System object. See Creation.Call the object to compute the range-Doppler response of the input signal according to the properties of
phased.RangeDopplerResponse
.
Creation
Description
creates a range-Doppler response System object, response
= phased.RangeDopplerResponseresponse
. The object calculates the
range-Doppler response of the input data.
creates a range-Doppler response
= phased.RangeDopplerResponse(Name
=Value
)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
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.
RangeMethod
— Range processing method
'Matched filter'
(default) | 'FFT'
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
PropagationSpeed
— Signal propagation speed
physconst('LightSpeed')
(default) | real-valued positive scalar
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
SampleRate
— Sample rate of signal
1e6
(default) | positive scalar
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
SweepSlope
— FM sweep slope
1e9
(default) | scalar
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
DechirpInput
— Option to dechirp input signal
false
(default) | true
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
DecimationFactor
— Decimation factor for dechirped signal
1
(default) | positive integer
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
RangeFFTLengthSource
— Source of FFT length used for range processing
'Auto'
(default) | 'Property'
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
RangeFFTLength
— FFT length in range processing
1024
(default) | positive integer
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
RangeWindow
— Window for range weighting
'None'
(default) | 'Hamming'
| 'Chebyshev'
| 'Hann'
| 'Kaiser'
| 'Taylor'
| 'Custom'
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
RangeSidelobeAttenuation
— Sidelobe attenuation level for range processing
30
(default) | positive scalar
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
CustomRangeWindow
— User-defined window for range processing
@hamming
(default) | function handle | cell array
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
ReferenceRangeCentered
— Set center reference range
true
(default) | false
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
ReferenceRange
— Reference range of the range grid
0.0
(default) | nonnegative scalar
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 theReferenceRangeCentered
property.When you set the
ReferenceRangeCentered
property totrue
, the reference range is set to the center of the range grid.When you set the
ReferenceRangeCentered
property tofalse
, 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
PRFSource
— Source of pulse repetition frequency
'Auto'
(default) | 'Property'
| 'Input port'
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 thestep
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 thePRF
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
PRF
— Pulse repetition frequency of input signal
10e3
(default) | positive scalar
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
DopplerFFTLengthSource
— Source of FFT length in Doppler processing
'Auto'
(default) | 'Property'
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
DopplerFFTLength
— FFT length for Doppler processing
1024
(default) | positive integer
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
DopplerWindow
— Window for Doppler weighting
'None'
(default) | 'Hamming'
| 'Chebyshev'
| 'Hann'
| 'Kaiser'
| 'Taylor'
| 'Custom'
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
DopplerSidelobeAttenuation
— Sidelobe attenuation level for Doppler processing
30
(default) | positive scalar
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
CustomDopplerWindow
— User-defined window for Doppler processing
@hamming
(default) | function handle
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
DopplerOutput
— Doppler domain output
'Frequency'
(default) | 'Speed'
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
OperatingFrequency
— Signal carrier frequency
3e8
(default) | positive scalar
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
MaximumNumInputSamplesSource
— Source of maximum number of samples
'Auto'
(default) | 'Property'
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
MaximumNumInputSamples
— Maximum number of input signal samples
100
(default) | positive integer
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
Syntax
Description
[
calculates the range-Doppler response
of the input signal, resp
,rnggrid
,dopgrid
]
= response(x
)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.
[
uses
resp
,rnggrid
,dopgrid
]
= response(x
,xref
)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.
[
uses
resp
,rnggrid
,dopgrid
]
= response(x
,coeff
)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.
Input Arguments
x
— Input data
complex-valued K-by-L
matrix | complex-valued
K-by-N-by-L
array
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 ofx
represents a dechirped signal from one frequency sweep. The function assumes all sweeps inx
are consecutive.In the syntax
response(x,xref)
, each column ofx
represents a signal from one frequency sweep. The function assumes all sweeps inx
are consecutive and are not dechirped.In the syntax
response(x,coeff)
, each column of the matrixx
represents a signal from one pulse. The function assumes all pulses inx
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, withx
corresponding to upsweeps only. After obtaining the Doppler or speed values, divide them by 2.Specify a negative
SweepSlope
property value, withx
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
column vector
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
column vector
Matched filter coefficients, specified as a column vector. You can specify this argument as single or double precision.
prf
— Pulse repetition frequency
positive scalar
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
complex-valued M-by-P
matrix | complex-valued
M-by-N-by-P
array
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
.
Syntax | Values of M and P |
---|---|
response(x) | If you set the If you set the |
response(x,xref) | M is the quotient of the
length of the first dimension of
If you set the |
response(x,coeff) | M is the number of rows of
If you set the
|
rnggrid
— Range values
real-valued column vector of length M
Range samples at which the range-Doppler response is evaluated.
rnggrid
is a column vector of length
M.
dopgrid
— Doppler values
real-valued column vector of length P
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)
Specific to phased.RangeDopplerResponse
plotResponse | Plot range-Doppler response |
Examples
Range-Doppler Response Using Matched Filter
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');
Range-Doppler Response of FMCW Signal
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)
Estimate Doppler and Range with Specified PRF
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')
Estimate Doppler and Range from Range-Doppler Response
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
Response Algorithm
The phased.RangeDopplerResponse
object generates
a response as follows:
Processes the input signal in the fast-time dimension using either a matched filter or dechirp/FFT operation.
Processes the input signal in the pulse dimension using an FFT.
The decimation algorithm uses a 30th order FIR filter
generated by fir1(30,1/R)
, where R
is the
value of the DecimationFactor
property.
Data Precision
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
other arguments.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
The
CustomRangeWindow
andCustomDopplerWindow
properties are not supported.The
plotResponse
method is not supported.See System Objects in MATLAB Code Generation (MATLAB Coder).
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
other arguments.
Version History
Introduced in R2012b
See Also
Functions
Objects
phased.RangeAngleResponse
|phased.RangeResponse
|phased.AngleDopplerResponse
|phased.MatchedFilter
|phased.DopplerEstimator
|phased.RangeEstimator
|phased.CFARDetector
|phased.CFARDetector2D
Topics
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)