Main Content

Pulse Waveform Analyzer

Analyze performance characteristics of pulsed, frequency-modulated, and phase-coded waveforms


The Pulse Waveform Analyzer app lets you explore the properties of signals commonly used in radar. You can display 2-D and 3-D plots that let you visualize waveform time series and spectra.

The app lets you change waveform parameters and see how different parameter values affect the appearance and properties of the waveform. Waveform parameters include pulse repetition frequency (PRF), pulse duration, and bandwidth. The app displays basic waveform characteristics such as range resolution, Doppler resolution, and maximum range. When you launch the app, the Real and Imaginary and Spectrum tabs are shown by default. You can simultaneously overlay plots of multiple waveforms.

You can select different types of displays using this pull-down menu. You can also rearrange the tabs by using drag-and-drop to change the default layout.

Display menu

The app lets you analyze these types of waveforms:

  • Rectangular

  • Linear frequency modulation (LFM)

  • Stepped FM

  • Phase-coded waveforms

  • Frequency modulation constant waveform (FMCW)

You can export waveforms as workspace variables or files containing:

  • Phased Array System Toolbox™ waveform objects such as phased.LinearFMWaveform.

  • Radar Toolbox pulseWaveformLibrary objects.

  • Radar Toolbox pulseCompressionLibrary objects.

You can use the waveform blocks, Matched Filter blocks, and Stretch Processor blocks in Simulink®. You can also use the Pulse Waveform Library and Pulse Compression Library blocks available in Radar Toolbox.

You can also employ this app in sonar applications by choosing the appropriate propagation speed.

Pulse Waveform Analyzer app

Open the Pulse Waveform Analyzer App

  • MATLAB® toolstrip: On the Apps tab, under Signal Processing and Communications, select the app icon, or

  • MATLAB command prompt: Enter pulseWaveformAnalyzer. For ways to use the app programmatically, see Programmatic Use.


expand all

This example shows how to analyze a rectangular waveform. An ideal rectangular waveform jumps instantaneously to a constant value and stays there for some duration. Rearrange the Parameters and Characteristics tabs to make the plots larger.

When you open the app, the Library tab shows the default rectangular waveform and the center panel displays the waveform shape or spectrum. First, set the Sample Rate (Hz) to 3 MHz. The same sample rate applies to all waveforms that you analyze.

You can rename the waveform by right-clicking its name. Change the name to RectangularPulse.

Rename waveform

Design the pulse for a maximum range of 50 km. For this range, the time for a signal to propagate and return is 333 μs. Therefore, allow 333 μs between pulses, equivalent to a pulse repetition frequency (PRF) of 3000 Hz.

Set the Pulse Width to 50 μs.

Change the value of the speed of light in the Propagation Speed field to a more precise value by entering physconst('Lightspeed'). You can use workspace variables and MATLAB functions in any editable field.

After you select the green check mark, the app displays a range resolution of approximately 7.5 km in the Characteristics tab. In this panel, you can scroll right to see other properties. The range resolution of a rectangular pulse is roughly 1/2 the pulse-width multiplied by the speed of light. The Doppler resolution is approximately the width of the Fourier transform of the pulse.

In the center panel of the window, select the Real and Imaginary tab to plot the waveform.

The Real and Imaginary tab displays waveform plots.

Select the Spectrum tab in the center panel of the window to show the power spectral density.

The Spectrum tab shows power spectral density.

You can display the joint range-Doppler resolution by selecting Surface from the Ambiguity Plots menu.

The Ambiguity function-surface tab shows the ambiguity plot.

This example shows how to improve range resolution using a linear FM waveform. In the previous example, the range resolution of the rectangular pulse was poor, approximately 7.5 km. You can improve the range resolution by choosing a signal with a larger bandwidth. A good choice is a linear FM pulse.

In the Parameters tab, change the Waveform to Linear FM. Then, change the waveform name to LinearFMWaveform. This type of pulse has a varying frequency, which can either increase or decrease as a linear function of time. Keep the sample rate at 3 MHz.

Choose the Sweep Direction as Up, and the Sweep Bandwidth as 1 MHz.

You can see that keeping the same pulse width as in the previous example, improves the range resolution to 150 m, as shown in the Characteristics tab.

View the new waveform plot in the Real and Imaginary tab.

While the range resolution gets better, the Doppler resolution is worse than the resolution of a rectangular waveform. You can see this by selecting the Surface ambiguity plot. The Ambiguity Function-Surface tab shows this tradeoff between Doppler resolution and range resolution.

The Ambiguity Function-Surface tab shows decreased Doppler resolution.

This example shows how to display the spectrogram of a linear FM waveform with and without frequency reassignment.

Use the same signal parameters as in the previous example.

Select Spectrogram from the Signal Plots drop-down menu. Then, select the Reassigned check box to show the frequency reassigned spectrogram (reassignment is turned on by default). Set the Threshold to -100 dB. Frequency reassignment is a technique for sharpening the magnitude spectrogram of a signal using information from its phase spectrum. For more information on frequency reassignment, see Fulop and Kelly (2006) [1].

The Spectrogram tab shows the magnitude spectrogram of a waveform.

You can vary the Threshold setting to show or hide weaker spectrum components.

To view the conventional spectrogram, clear the Reassigned check box.

Deselect the Reassigned check box.

Again, you can vary the Threshold Value setting to show or hide weaker spectrum components.

This example shows how to display the two signals simultaneously.

First, create a rectangular waveform with the same parameters as used in the first example. Then, rename the waveform to RectangularPulse.

Next, create an LFM waveform. Click the Add Waveform button. Rename the second waveform to LinearFMPulse. Set the waveform parameters to the same values as in the second example.

Select both waveforms in the Library panel using Ctrl+click. The display now shows the waveforms, spectra, and characteristics for both waveforms.

Display two plots simultaneously.

The spectrum tab shows the power spectral density for both waveforms.

Programmatic Use

expand all

You can run pulseWaveformAnalyzer from the command line.

pulseWaveformAnalyzer(wav) opens the Pulse Waveform Analyzer app and imports and plots the waveform wav. wav can be a variable in the workspace representing a waveform object such as:

wav = phased.LinearFMWaveform(SampleRate=1e6, ...
    SweepBandwidth=200e3, ...
or you can enter the object directly:
pulseWaveformAnalyzer(phased.LinearFMWaveform( ...
    SampleRate=1e6, ...
    SweepBandwidth=200e3, ...

pulseWaveformAnalyzer(wavlib) opens the Pulse Waveform Analyzer app and imports a pulseWaveformLibrary object, wavlib. For example, construct the waveform library object from three waveforms with a common sample rate of 1 MHz. Then run from the command line:

waveform1 = {'Rectangular','PRF',1e4,'PulseWidth', 50e-6};
waveform2 = {'LinearFM','PRF',1e4,'PulseWidth',50e-6, ...
    'SweepInterval', 'Positive'};
waveform3 = {'PhaseCoded','PRF',1e4,'Code','Zadoff-Chu', ...
fs = 1e6;
wavlib = pulseWaveformLibrary('SampleRate',fs, ...

The spectrum tab shows the power spectral density for all three waveforms.

pulseWaveformAnalyzer(comprlib) opens the Pulse Waveform Analyzer app and imports a pulseCompressionLibrary object, comprlib. For example, using the waveforms from the Rectangular Waveform and Linear FM Waveform examples, create a matched filter for the rectangular waveform and a stretch processor for the linear FM waveform. Set the sample rate to 3 MHz, the pulse width of the rectangular wave to 25 μs, the pulse width of the linear wave to 50 μs, and the pulse repetition frequency to 3000 Hz. Export the compressed waveforms to the waveform app with these commands:

fs = 3e6;
rectpw = 25e-6;
linpw = 50e-6;
prf = 3e3;

waveform1 = {'Rectangular','PRF',prf,...
waveform2 = {'LinearFM','PRF',prf,'PulseWidth',linpw,...

procspec1 = {'MatchedFilter','SpectrumWindow','Hann'};
procspec2 = {'StretchProcessor','ReferenceRange',5000,...

comprlib = pulseCompressionLibrary(...
    'WaveformSpecification',{waveform1, waveform2},...
    'ProcessingSpecification',{procspec1, procspec2},...

The spectrum tab shows the power spectral density for both waveforms.


[1] Fulop, Sean A., and Kelly Fitz. "Algorithms for Computing the Time-Corrected Instantaneous Frequency (Reassigned) Spectrogram, with Applications." The Journal of the Acoustical Society of America 119, no. 1 (January 2006): 360–71.

Version History

Introduced in R2014b