メインコンテンツ

phased.StretchProcessor

Stretch processor for linear FM waveform

Description

The phased.StretchProcessor object performs stretch processing on a linear FM waveform.

To perform stretch processing:

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

stretchproc = phased.StretchProcessor creates a stretch processor System object™, stretchproc. The object performs stretch processing on data from a linear FM waveform.

stretchproc = phased.StretchProcessor(Name = Value) creates a stretch processor object, stretchproc, with additional options specified by one or more Name = Value pair arguments. You can specify several name-value pair arguments in any order as Name1 = Value1,…,NameN = ValueN.

example

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.

Signal sample rate, specified as a positive scalar. Units are Hertz. The ratio of sample rate to pulse repetition frequency (PRF) must be a positive integer — each pulse must contain an integer number of samples.

Data Types: single | double

Specify the length of each pulse (in seconds) as a positive scalar. The value must satisfy PulseWidth <= 1./PRF.

Data Types: single | double

Source of the PRF values for the stretch processor, specified as "Property", "Auto", or "Input port". When you set this property to "Property", the PRF is determined by the value of the PRF property. When you set this property to "Input port", the PRF is determined by the PRF input argument to the object at execution time. When you set this property to "Auto", the PRF is computed from the number of rows in the input signal.

Data Types: string | char

Pulse repetition frequency (PRF) of the received signal, specified as a positive scalar. Units are in Hertz.

Dependencies

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

Data Types: single | double

Specify the slope of the linear FM sweeping, in Hz per second, as a scalar.

Data Types: single | double

Specify the linear FM sweeping interval using the value "Positive" or "Symmetric". If SweepInterval is "Positive", the waveform sweeps in the interval between 0 and B, where B is the sweep bandwidth. If SweepInterval is "Symmetric", the waveform sweeps in the interval between –B/2 and B/2.

Data Types: single | double

Specify the propagation speed of the signal, in meters per second, as a positive scalar.

Data Types: single | double

Reference range of stretch processing

Specify the center of ranges of interest, in meters, as a positive scalar. The reference range must be within the unambiguous range of one pulse. This property is tunable.

Data Types: single | double

Specify the length of the interval for ranges of interest, in meters, as a positive scalar. The range span is centered at the range value specified in the ReferenceRange property.

Data Types: single | double

Usage

Description

Y = stretchproc(X) applies stretch processing along the first dimension of X. Each column of X represents one received pulse.

example

Y = stetchproc(X,PRF) uses PRF as the pulse repetition frequency. This syntax is available when the PRFSource property is "Input port".

Input Arguments

expand all

Input signal matrix, specified as a complex-valued M-column matrix. Each column represents one received pulse.

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.

Data Types: single | double

Pulse repetition frequency specified as a positive scalar. To enable this argument, set the PRFSource property to "Input port". Units are in Hertz.

Data Types: single | double

Output Arguments

expand all

Result of stretch processing, returned as an M-column complex-valued matrix . The size of Y matches the size of X.

Data Types: single | 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

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

Use stretch processing to locate a target at a range of 4950 m. First, simulate a LinearFMWaveform.

waveform = phased.LinearFMWaveform;
x = waveform();
c = physconst("LightSpeed");
rng = 4950.0;
num_samples = round(rng/(c/(2*waveform.SampleRate)));
x = circshift(x,num_samples);

Perform stretch processing.

stretchproc = phased.StretchProcessor(...
    SampleRate = waveform.SampleRate, ...
    ReferenceRange = 5000,RangeSpan = 200, ...
    PropagationSpeed = c);
y = stretchproc(x);

Plot the spectrum of the resulting signal.

[Pxx,F] = periodogram(y,[],2048,stretchproc.SampleRate,"centered");
plot(F/1000,10*log10(Pxx))
grid
xlabel("Frequency (kHz)")
ylabel("Power/Frequency (dB/Hz)")
title("Periodogram Power Spectrum Density Estimate")

Figure contains an axes object. The axes object with title Periodogram Power Spectrum Density Estimate, xlabel Frequency (kHz), ylabel Power/Frequency (dB/Hz) contains an object of type line.

Detect the range.

[~,rngidx] = findpeaks(pow2db(Pxx/max(Pxx)), ...
    MinPeakHeight = -5);
rngfreq = F(rngidx);
rng = stretchfreq2rng(rngfreq, ...
    stretchproc.SweepSlope, ...
    stretchproc.ReferenceRange,c)
rng = 
4.9634e+03

Use the getStretchProcessing object function to locate a target at a range of 4950 m. First, simulate the signal.

waveform = phased.LinearFMWaveform;
x = waveform();
c = physconst("LightSpeed");
rng = 4950.0;
num_samples = round(rng/(c/(2*waveform.SampleRate)));
x = circshift(x,num_samples);

Perform stretch processing.

stretchproc = getStretchProcessor(waveform,5000,200,c);
y = stretchproc(x);

Plot the spectrum of the resulting signal.

[Pxx,F] = periodogram(y,[],2048,stretchproc.SampleRate,"centered");
plot(F/1000,10*log10(Pxx))
grid
xlabel("Frequency (kHz)")
ylabel("Power/Frequency (dB/Hz)")
title("Periodogram Power Spectrum Density Estimate")

Figure contains an axes object. The axes object with title Periodogram Power Spectrum Density Estimate, xlabel Frequency (kHz), ylabel Power/Frequency (dB/Hz) contains an object of type line.

Detect the range.

[~,rngidx] = findpeaks(pow2db(Pxx/max(Pxx)), ...
    MinPeakHeight = -5);
rngfreq = F(rngidx);
rng = stretchfreq2rng(rngfreq, ...
    stretchproc.SweepSlope, ...
    stretchproc.ReferenceRange,c)
rng = 
4.9634e+03

Algorithms

expand all

References

[1] Richards, M. A. Fundamentals of Radar Signal Processing. New York: McGraw-Hill, 2005.

Extended Capabilities

expand all

Version History

Introduced in R2012a