Main Content

phased.RTIScope

Range intensity scope

Description

The phased.RTIScope System object™ creates a scrolling display of range response intensity as a function of time. Each row represents the range response for a pulse or FMCW signal. Sequential calls to the object add new rows to the bottom of the display window. Columns represent the responses at a specific range over all pulses. You can input two types of data - in-phased and quadrature (I/Q) data or response data.

  • I/Q data – The input consists of fast-time I/Q samples for one or more pulses or FM sweeps. The scope computes the range response and adds it to the display. To use I/Q data, set the IQDataInput property to true. In this mode, you can set the properties shown in Properties Applicable to I/Q Data.

  • Response data – The data consists of the range response itself. The scope adds the range response to the display. For example, you can obtain the range response from a phased.RangeResponse object. To use response data, set the IQDataInput property to false. In this mode, you can set the properties shown in Properties Applicable to Response Data.

To create and run a range-time intensity scope,

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

scope = phased.RTIScope creates a range-time intensity scope System object, scope. This object displays the intensity of the range-time response for the input data.

example

scope = phased.phased.RTIScope(Name,Value) creates a range-time intensity scope, scope, with each specified property set to the specified value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN). Enclose property names in quotes. For example,

scope = phased.RTIScope('IQInputData',true,'RangeMethod', ...
        'FFT','SampleRate',1e6,'TimeResolution,0.5,'TimeSpan',10.0, ...
        'RangeFFTLength',1024);
creates a scope object that uses FFT-based range processing for I/Q data having a sample rate of 1 MHz. The time resolution is 0.5 seconds and the time span is 10 seconds. The range FFT length is 1024 samples.

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.

Display caption, specified as a character vector. The caption appears in the title bar of the window.

Example: 'Multi-target Range Time Intensity Scope'

Tunable: Yes

Data Types: char

Location and size of the intensity scope window, specified as a 1-by-4 vector having the form [left bottom width height].

  • left and bottom specify the location of the bottom-left corner of the window.

  • width and height specify the width and height of the window.

Units are in pixels.

The default value of this property depends on the resolution of your display. By default, the window is positioned in the center of the screen, with a width and height of 800 and 450 pixels, respectively.

Example: [100 100 500 400]

Tunable: Yes

Data Types: double

Type of input data, specified as false or true. When true, the object assumes that the input consists of I/Q sample data and further processing is required in the range domain. When false, the object assumes that the data is response data that has already been processed.

Data Types: logical

Range-axis label, specified as a character vector.

Example: 'Range (km)'

Tunable: Yes

Data Types: char

Range distance between samples, specified as a positive scalar. This property defines the distance between columns of the scope. Units are in meters.

Data Types: double

Range offset, specified as a positive scalar. This property defines the range value of the first column of the display. Units are in meters.

Data Types: double

Time interval between samples, specified as a positive scalar. This property defines the time interval between the rows of the scope. Units are in seconds.

Data Types: double

Time span of the intensity display, specified as a positive scalar. Units are in seconds.

Data Types: double

Response intensity units, specified as a 'db', 'magnitude', or 'power'.

Data Types: char

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

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

Dependencies

To enable this property, set the IQDataInput property to true.

Signal propagation speed, specified as a positive scalar. The default value of this property is the speed of light. See physconst. Units are in meters/second.

Example: 3e8

Dependencies

To enable this property, set the IQDataInput property to true.

Data Types: double

Sample rate, specified as a positive scalar. Units are in Hz.

Example: 10e3

Dependencies

To enable this property, set the IQDataInput property to true.

Data Types: double

Slope of the linear FM sweep, specified as a scalar. Units are in Hz/sec.

Dependencies

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

Data Types: double

Set this property to true to dechirp the input signal before performing range processing. false indicates that the input signal is already dechirped and no dechirp operation is necessary.

Dependencies

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

Data Types: logical

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

Example: 128

Dependencies

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

Data Types: double

Set this property to true to set the reference range to the center of the range span. Set this property to false to set the reference range to the beginning of the range span.

Dependencies

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

Data Types: logical

Usage

Description

scope(X) adds new rows to the range-time intensity scope. The input X can be I/Q sample data or range response data depending on the value of the IQDataInput property.

scope(X,Xref) also specifies a reference signal to use for dechirping the input signal, X. This syntax applies when you set the IQDataInput property to true, the RangeMethod property to 'FFT', and the DechirpInput property to true. This syntax is most commonly used with FMCW signals. Xref is generally the transmitted signal.

scope(X,coeff) also specifies matched filter coefficients, coeff. This syntax applies when you set the IQDataInput property to true and the RangeMethod property to 'Matched Filter'. This syntax is most commonly used with pulsed signals.

Input Arguments

expand all

Input data, specified as a complex-valued N-by-M matrix. The interpretation of the data depends on the setting of the IQDataInput property.

  • When IQDataInput is true, each column contains N fast-time I/Q samples for a pulse or an FMCW sweep. M is the number of pulses in the case of pulsed signals or the number of dechirped frequency sweeps for FMCW signals. The scope computes and displays the range-response.

    • When RangeMethod is set to 'FFT' and DechirpInput is false, X has previously been dechirped.

    • When RangeMethod is set to 'FFT' and DechirpInput is false, X has not been previously dechirped. Use the syntax that includes XREF as input data.

    • When RangeMethod is set to 'MatchedFilter', X has not been matched filtered. Use the syntax that includes COEF as input data.

  • When IQDataInput is false, each column contains N response samples for a pulse or an FMCW sweep such as that produced by the phased.RangeResponse. M is the number of pulses in the case of pulsed signals or the number of dechirped frequency sweeps for FMCW signals. The scope only displays the range-response.

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

showTurn on visibility of scopes
hideTurn off visibility of scope
isVisibleVisibility of scopes
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

Create a scrolling display of intensity at each range as function of time. The intensity is a combination of intensities from three simulated targets. One target starts at a range of 250 m and moves outward to 950 m. The second target starts at 1000 m and moves inward to 300 m. The third stays a 400 m. The intensities are computed using the inline function rangePow. The targets move in steps of 10 m but the rangePow function spreads the intensity over nearby range bins which are spaced every meter.

The inline function rangePow simulates a spread target return having an intensity falling off with the fourth power of range.

txpow = 200;
gain = 2e8;
std = 5;
rangePow = @(rngbins,range) ...
    gain.*exp(-0.5*((rngbins-range)./std).^2).* ...
    txpow./(range.^4)./(sqrt(2*pi).*std);

Create an RTI Scope to view intensity data.

scope = phased.RTIScope( ...
    'IQDataInput',false,...
    'Name','Range-Time Intensity Scope',...
    'Position',[560 375 560 420],...
    'RangeLabel','Range (m)', ...
    'RangeResolution',1, ...
    'TimeResolution',0.05,'TimeSpan',6, ...
    'IntensityUnits','magnitude');

Create range bins for three targets.

rngbins = 0:900;
ranges(:,1) = 250:10:950;
ranges(:,2) = 1000:-10:300;
ranges(:,3) = 400;

Fill in all range bins by looping over all ranges and add each line at a time to the scope.

for k = 1:size(ranges,1)
    y = rangePow(rngbins,ranges(k,1)) + ...
        rangePow(rngbins,ranges(k,2)) + ...
        rangePow(rngbins,ranges(k,3));
    scope(y.');
    pause(.1);
end

More About

expand all

Introduced in R2019a