RangeAngleResponse

Range-angle response

Description

The RangeAngleResponse System object™ creates an range-angle response object. This object calculate the range-angle response of a signal using either a matched filter or an FFT.

The input to the range-angle 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, represents pulses or sweeps. If the data contains only one channel, for example, the data cube can contain fewer than three dimensions. Range processing operates along the first dimension of the cube. Angle processing operates along the second 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 second dimension contains angle-processed data. Its length can differ from the last dimension of the input.

To obtain the range-angle response:

  1. Create the RangeAngleResponse 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? (MATLAB).

Creation

Description

response = phased.RangeAngleResponse creates a phased.RangeAngleResponse System object, response, with default property values.

response = phased.RangeAngleResponse(Name,Value) sets properties for the phased.RangeAngleResponse object using one or more name-value pairs. For example, response = phased.RangeAngleResponse('RangeMethod','FFT','SampleRate',1e6) creates an object that uses an FFT range processing method at a sample rate of 1 MHz. Enclose property names in quotes.

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 (MATLAB).

Sensor array, specified as a Phased Array System Toolbox array System object.

Example: phased.URA

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

  • 'Matched filter' — The object match-filters the incoming signal. This approach is commonly used for pulsed signals, where the matched filter is the time reverse of the transmitted signal.

  • 'FFT' — The object applies an FFT to the input signal. This approach is commonly used for chirped signals such as FMCW and linear FM pulsed signals.

Example: 'Matched filter'

Data Types: char

Signal propagation speed, specified as a positive scalar. Units are in meters per second. The default propagation speed is the value returned by physconst('LightSpeed'). See physconst for more information.

Example: 3e8

Data Types: double

Operating frequency, specified as a positive scalar. Units are in Hz.

Example: 1e9

Data Types: double

Signal sample rate, specified as a positive real-valued scalar. Units are in hertz.

Example: 1e6

Data Types: double

Linear FM sweep slope, specified as a scalar. The fast-time dimension of the signal input argument to step must correspond to sweeps having this slope.

Example: 1.5e9

Dependencies

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

Data Types: double

Option to enable dechirping of input signals, specified as false or true. Set this property to false to indicate that the input signal is already dechirped and no dechirp operation is necessary. Set this property to true when the input signal requires dechirping.

Dependencies

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

Data Types: logical

Decimation factor for dechirped signals, specified as a positive integer. The decimation algorithm uses a 30th-order FIR filter generated by fir1(30,1/D), where D is the decimation factor. The default value of 1 implies no decimation.

When processing FMCW signals, decimating the dechirped signal is useful for reducing the load on A/D converters.

Dependencies

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

Data Types: double

Source of the FFT length used for the range processing of dechirped signals, specified as 'Auto' or 'Property'.

  • 'Auto' — The FFT length equals the length of the fast-time dimension of the input data cube.

  • 'Property' — Specify the FFT length by using the RangeFFTLength property.

Dependencies

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

Data Types: char

FFT length used for range processing, specified as a positive integer.

Dependencies

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

Data Types: double

FFT weighting window for range processing, 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 next to the mainlobe.

Dependencies

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

Data Types: char

Sidelobe attenuation for range processing, specified as a positive scalar. Attenuation applies to Kaiser, Chebyshev, or Taylor windows. Units are in dB.

Dependencies

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

Custom window for range processing, specified as a function handle or a cell array containing a function handle as its first entry. If you do not specify a window length, the object computes the window length and passes that into the function. If you specify a cell array, the remaining cells of the array can contain arguments to the function. If you use only the function handle without passing in arguments, all arguments take their default values.

If you write your own window function, the first argument must be the length of the window.

Note

Instead of using a cell array, you can pass in all arguments by constructing a handle to an anonymous function. For example, you can set the value of CustomRangeWindow to @(n)taylorwin(n,nbar,sll), where you have previously set the values of nbar and sll.

Example: {@taylor,5,-35}

Dependencies

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

Data Types: function_handle | cell

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

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

To use this object with a variable-size signal in a MATLAB® Function Block in Simulink®, set this property to 'Property' and set a value for the MaximumNumInputSamples property.

Dependencies

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

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

Example: 1024

Dependencies

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

Data Types: double

Source of elevation angle, specified as 'Property' or 'Input port'.

'Property'The elevation angle comes from the ElevationAngle property.
'Input port'The elevation angle comes from an input argument.

Specify the elevation angle in degrees used to calculate the range-angle response as a scalar. The angle must lie in the range from –90° to 90°. Units are in degrees.

Example: 45.0

Dependencies

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

Data Types: double

Angle response span, specified as a real-valued 2-by-1 vector. The object calculates the range-angle response within the angle range, [min_angle max_angle].

Example: [-45 45]

Data Types: double

Number of samples in angle span used to calculate range-angle response, specified as a positive integer greater than two.

Example: [256]

Data Types: double

You can combine optional input arguments when their enabling properties are set. Optional inputs must be listed in the same order as the order of the enabling properties. For example,

[RESP,RANGE,ANG] = response(X,XREF,EL)
or
[RESP,RANGE,ANG] = response(X,COEFF,EL)

Usage

Description

[RESP,RANGE,ANG] = response(X) returns the range-angle response, RESP, the ranges, RANGE, and the angles, ANG. X is a dechirped signal. This syntax applies when you set the RangeMethod property to 'FFT' and the DechirpInput property to false. This syntax is often applied to FMCW signals.

example

[RESP,RANGE,ANG] = response(X,XREF) also specifies the reference signal, XREF to dechirped the signal. This syntax applies when you set the RangeMethod property to 'FFT' and the DechirpInput property to true. This syntax is often applied to FMCW signals. Then, the reference signal can be the transmitted signal.

[RESP,RANGE,ANG] = response(X,COEFF) also specifies COEFF as matched filter coefficients. This syntax applies when you set the RangeMethod property to 'MatchedFilter'. This syntax is often applied to pulsed signals.

[RESP,RANGE,ANG] = response(___,EL) also specifies EL as the elevation angle. This syntax applies when you set the ElevationAngleSource property to 'Input port'.

Input Arguments

expand all

Input signal cube, specified as a complex-valued K-by-N matrix or complex-valued K-by-N-by-L array. The contents of the data cube depend on the type of range-angle processing specified by the different syntaxes.

  • K is the number of fast-time or range samples.

  • N is the number of independent spatial channels such as sensors or beams.

  • L is the slow-time dimension that corresponds to the number of pulses or sweeps in the input signal.

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.

Reference signal used for dechirping, specified as a complex-valued K-by-1 column vector. The number of rows must equal the length of the fast-time dimension of X.

Dependencies

To enable this input argument, set the value of RangeMethod to 'FFT' and DechirpInput to true.

Data Types: double
Complex Number Support: Yes

Matched filter coefficients, specified as a complex-valued P-by-1 column vector. P must be less than or equal to K. K is the number of fast-time or range sample.

Dependencies

To enable this input argument, set the value of RangeMethod to 'Matched filter'.

Data Types: double
Complex Number Support: Yes

Elevation angle of response, specified as a scalar between –90° and +90°. The range-angle response is computed for this elevation. Units are in degrees.

Dependencies

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

Data Types: double

Output Arguments

expand all

Range response data cube, returned as one of the following:

  • Complex-valued M-element column vector

  • Complex-valued M-by-L matrix

  • Complex-valued M-by-N by-L array

The value of M depends on the type of processing

RangeMethod PropertyDechirpInput PropertyValue of M
'FFT'false

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

trueM equals the quotient of the number of rows, K, of the input signal by the value of the decimation factor, D, specified in DecimationFactor.
'Matched filter'n/aM = K, the length of the fast-time dimension of x.

Data Types: double
Complex Number Support: Yes

Range values along range dimension, returned as a real-valued M-by-1 column vector. rnggrid defines the ranges corresponding to the fast-time dimension of the RESP output data cube. M is the length of the fast-time dimension of RESP. Range values are monotonically increasing and equally spaced. Units are in meters.

Data Types: double

Angle values along angle direction, returned as a P-by-1 real-valued vector. Units are in degrees.

Data Types: double

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-angle 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

expand all

Calculate the range-angle response from a pulsed radar transmitting a rectangular waveform using the matched filter approach. The signal includes three target returns. Two are approximately 2000 m away and the third is approximately 3500 m away. In addition, two targets are stationary relative to the radar while the third is moving away from the radar at approximately 100 m/s. The signals arrive at an 8-element uniform linear array.

First, load the example data.

load('RangeAngleResponseExampleData','rectdata');
fs = rectdata.fs;
propspeed = rectdata.propspeed;
fc = rectdata.fc;
rxdata = rectdata.rxdata;
mfcoeffs = rectdata.mfcoeffs;
%noisepower = rectdata.noisepower;
antennaarray = rectdata.antennaarray;

Second, create the range-angle response object for matched filter processing.

rngangresp = phased.RangeAngleResponse(...
    'SensorArray',antennaarray,'OperatingFrequency',fc,...
    'SampleRate',fs,'PropagationSpeed',propspeed);

Obtain the range-angle map.

[resp,rng_grid,ang_grid] = rngangresp(rxdata,mfcoeffs);

Plot the response.

plotResponse(rngangresp,rxdata,mfcoeffs,'Unit','db');

Algorithms

expand all

Extended Capabilities

Introduced in R2018b