Use the Spectrum Analyzer to visualize frequency. You can customize the spectrum analyzer display to show the data and measurement information needed.
The Spectrum Analyzer shows the spectrum computation settings for the current visualization. In the scope status bar, check the Resolution Bandwidth, Time Resolution, and Offset indicators for this information. The values specified by these indicators can change depending on your settings in the Spectrum Settings panel. You can also view the simulation status and the amount of time data that correspond to the current display. Check the Simulation status and Display time indicators for this information.
Resolution Bandwidth — The smallest positive frequency or frequency interval that can be resolved.
Time Resolution — The time resolution for a spectrogram line.
Offset — The constant frequency offset to apply to the entire spectrum or a vector of frequency offsets to apply to each spectrum for multiple inputs.
Simulation Status — Provides the status of the model simulation.
Display time — The amount of time that has progressed since the last update to the Spectrum Analyzer display.
Frequency span — The range of values shown on the frequency-axis on the Spectrum Analyzer window.
By default, Spectrum Analyzer updates the display at fixed intervals of time at a rate not exceeding 20 hertz. If you want Spectrum Analyzer to plot a spectrum on every simulation time step, you can disable the Simulation > Reduce Plot Rate to Improve Performance option.
Note
When this option is selected, the Spectrum Analyzer may display a misleading spectrum in some situations. For example, if the input signal is wide-band with non-stationary behavior, such as a chirp signal, Spectrum Analyzer might display a stationary spectrum. The reason for this behavior is that Spectrum Analyzer buffers the input signal data and only updates the display periodically at approximately 20 times per second. Therefore, Spectrum Analyzer does not render changes to the spectrum that occur and elapse between updates, which gives the impression of an incorrect spectrum. To ensure that spectral estimates are as accurate as possible, clear the Reduce Plot Rate to Improve Performance check box. When you clear this box, Spectrum Analyzer calculates spectra whenever there is enough data, rendering results correctly.
You can change Spectrum Analyzer settings using menus and options in the interface of the scope, or by changing properties at the command line. If you change settings in the dsp.SpectrumAnalyzer
interface, you can generate the corresponding command line settings to use later.
Note
The script only generates commands for settings that are available from the command line, applicable to the current visualization, and changed from the default value.
This example shows how to generate a script after making changes to the dsp.SpectrumAnalyzer
in the interface:
Create a dsp.SpectrumAnalyzer
System object.
scope = dsp.SpectrumAnalyzer(); show(scope);
Set options in the Spectrum Analyzer. For this example, turn on the Cursor Measurements. Also in the Spectrum Settings, change the View type to Spectrum and spectrogram and set the Axes Layout to Horizontal.
Generate a script to recreate the dsp.SpectrumAnalyzer
with the same
modified settings. Either select File > Generate MATLAB Script or
enter:
generateScript(scope);
A new editor window opens with code to regenerate the same scope.
% Creation Code for 'dsp.SpectrumAnalyzer'. % Generated by Spectrum Analyzer on 10-Mar-2019 16:25:49 -0500. specScope = dsp.SpectrumAnalyzer('ViewType','Spectrum and spectrogram', ... 'AxesLayout','Horizontal'); % Cursor Measurements Configuration specScope.CursorMeasurements.Enable = true;
Add upper and lower masks to the Spectrum Analyzer to visualize spectrum limits and compare spectrum values to specification values.
To open the Spectral Mask pane, in the toolbar, select the spectral
mask button, .
In the Spectrum Analyzer window:
In the Spectral Mask pane, select a Masks option.
In the Upper limits or Lower limits box, enter the mask limits as a constant scalar, an array, or a workspace variable name.
(Optional) Select additional properties:
Reference level — Set a reference level for the mask.
Enter a specific value or select Spectrum peak
.
Channel — Select a channel to use for the mask reference.
Frequency offset — Set a frequency offset for mask.
From the command-line, to add a spectral mask to the dsp.SpectrumAnalyzer
System object or the SpectrumAnalyzerConfiguration
block configuration object:
Create a SpectralMaskSpecfication
object.
Set properties, such as EnabledMasks
,
LowerMask
, or UpperMask
. For a full list of
properties, see SpectralMask (block) and SpectralMask (System object™).
In the dsp.SpectrumAnalyzer
or
SpectrumAnalyzerConfiguration
object, set the
SpectralMask
property equal to your
SpectralMaskSpecfication
object.
For example:
mask = SpectralMaskSpecification();
mask.EnabledMasks = 'Upper';
mask.UpperMask = 10;
scope = dsp.SpectrumAnalyzer();
scope.SpectralMask = mask;
scope.SpectralMask
ans = SpectralMaskSpecification with properties: EnabledMasks: 'Upper' UpperMask: 10 LowerMask: -Inf ReferenceLevel: 'Custom' CustomReferenceLevel: 0 MaskFrequencyOffset: 0 Events for class SpectralMaskSpecification: MaskTestFailed
You can check the status of the spectral mask in several different ways:
In the Spectrum Analyzer window, select the spectral mask button, . In the Spectral Mask pane, the
Statistics section shows statistics about how often the masks
fail, which channels have caused a failure, and which masks are currently
failing.
To get the current status of the spectral masks, call getSpectralMaskStatus
.
To perform an action every time the mask fails, use the
MaskTestFailed
event. To trigger a function when the mask fails,
create a listener to the MaskTestFailed
event and define a callback
function to trigger. For more details about using events, see Events.
This example shows how to create a new model based on the dsp_basic_filter
template, add a spectral mask to its Spectrum Analyzer block, and run the model.
Masks are overlaid on the spectrum. If the mask is green, the signal is passing. If the mask is red, the signal is failing. The Spectral Mask panel shows what percentage of the time the mask is succeeding, which mask is failing, how many times the mask(s) failed, and which channels are causing the failure.
[~,mdl] = fileparts(tempname); open_system(new_system(mdl,'FromTemplate','dsp_basic_filter')); saBlock = find_system(mdl,'BlockType','SpectrumAnalyzer'); scopeConfig = get_param(saBlock{1},'ScopeConfiguration'); upperMask = [0 50; 1200 50; 1200 -10; 24000 -10]; scopeConfig.SpectralMask.UpperMask = upperMask; scopeConfig.SpectralMask.LowerMask = -100; scopeConfig.SpectralMask.EnabledMasks = 'Upper and lower'; sim(mdl,'StopTime','20');
The Measurements panels are the panels that appear on the right side of the Spectrum Analyzer. These measurements allow you to interact with the frequency values.
When you use the scope to view multiple signals, the Trace Selection panel appears. Use this panel to select which signal to measure. To open the Trace Selection panel:
From the menu, select Tools > Measurements > Trace Selection.
Open a measurement panel.
The Cursor Measurements panel displays screen cursors. The panel provides two types of cursors for measuring signals. Waveform cursors are vertical cursors that track along the signal. Screen cursors are both horizontal and vertical cursors that you can place anywhere in the display.
Note
If a data point in your signal has more than one value, the cursor measurement at that point is undefined and no cursor value is displayed.
In the Scope menu, select Tools > Measurements > Cursor Measurements. Alternatively, in the Scope toolbar, click the Cursor Measurements
button.
The Cursor Measurements panel for the spectrum and dual view:
The Cursor Measurements panel for the spectrogram view. You must pause the spectrogram display before you can use cursors.
You can use the mouse or the left and right arrow keys to move vertical or waveform cursors and the up and down arrow keys for horizontal cursors.
In the Settings pane, you can modify the type of screen cursors used for calculating measurements. When more than one signal is displayed, you can assign cursors to each trace individually.
Screen Cursors — Shows screen cursors (for spectrum and dual view only).
Horizontal — Shows horizontal screen cursors (for spectrum and dual view only).
Vertical — Shows vertical screen cursors (for spectrum and dual view only).
Waveform Cursors — Shows cursors that attach to the input signals (for spectrum and dual view only).
Lock Cursor Spacing — Locks the frequency difference between the two cursors.
Snap to Data — Positions the cursors on signal data points.
The Measurements pane displays the frequency (Hz) , time (s), and power (dBm) value measurements. Time is displayed only in spectrogram mode. Channel Power shows the total power between the cursors.
1 — Shows or enables you to modify the frequency, time (for spectrograms only), or both, at cursor number one.
2 — Shows or enables you to modify the frequency, time (for spectrograms only), or both, at cursor number two.
Δ — Shows the absolute value of the difference in the frequency, time (for spectrograms only), or both, and power between cursor number one and cursor number two.
Channel Power — Shows the total power in the channel defined by the cursors.
The letter after the value associated with a measurement indicates the abbreviation for the appropriate International System of Units (SI) prefix.
The Peak Finder panel displays the maxima, showing the x-axis values at which they occur. Peaks are defined as a local maximum where lower values are present on both sides of a peak. Endpoints are not considered peaks. This panel allows you to modify the settings for peak threshold, maximum number of peaks, and peak excursion.
From the menu, select Tools > Measurements > Peak Finder.
On the toolbar, click the Peak Finder button.
The Settings pane enables you to modify the parameters used to calculate the peak values within the
displayed portion of the input signal. For more information on the algorithms this pane uses, see the findpeaks
function reference.
Properties to set:
Peak Threshold — The level above which peaks are detected. This setting is equivalent to
the MINPEAKHEIGHT
parameter, which you can set when you run the findpeaks
function.
Max Num of Peaks — The maximum number of peaks to show. The value you enter must be a
scalar integer from 1 through 99. This setting is equivalent to the NPEAKS
parameter, which you
can set when you run the findpeaks
function.
Min Peaks Distance — The minimum number of samples between adjacent peaks. This setting is
equivalent to the MINPEAKDISTANCE
parameter, which you can set when you run the
findpeaks
function.
Peak Excursion — The minimum height difference between a peak and its neighboring samples. Peak excursion is illustrated alongside peak threshold in the following figure.
The peak threshold is a minimum value necessary for a sample value to be a peak. The peak excursion is the minimum difference between a peak sample and the samples to its left and right in the time domain. In the figure, the green vertical line illustrates the lesser of the two height differences between the labeled peak and its neighboring samples. This height difference must be greater than the Peak Excursion value for the labeled peak to be classified as a peak. Compare this setting to peak threshold, which is illustrated by the red horizontal line. The amplitude must be above this horizontal line for the labeled peak to be classified as a peak.
The peak excursion setting is equivalent to the THRESHOLD
parameter, which you can set when
you run the findpeaks
function.
Label Format — The coordinates to display next to the calculated peak values on the plot. To see peak values, you must first expand the Peaks pane and select the check boxes associated with individual peaks of interest. By default, both x-axis and y-axis values are displayed on the plot. Select which axes values you want to display next to each peak symbol on the display.
X+Y
— Display both x-axis and y-axis
values.
X
— Display only x-axis values.
Y
— Display only y-axis values.
The Peaks pane displays the largest calculated peak values. It also shows the coordinates at which the peaks occur, using the parameters you define in the Settings pane. You set the Max Num of Peaks parameter to specify the number of peaks shown in the list.
The numerical values displayed in the Value column are equivalent to the pks
output argument returned when you run the findpeaks
function. The numerical values displayed in the
second column are similar to the locs
output argument returned when you run the
findpeaks
function.
The Peak Finder displays the peak values in the Peaks pane. By default, the Peak Finder panel displays the largest calculated peak values in the Peaks pane in decreasing order of peak height.
Use the check boxes to control which peak values are shown on the display. By default, all check boxes are cleared and the Peak Finder panel hides all the peak values. To show or hide all the peak values on the display, use the check box in the top-left corner of the Peaks pane.
The Peaks are valid for any units of the input signal. The letter after the value associated with each measurement indicates the abbreviation for the appropriate International System of Units (SI) prefix, such as m for milli-. For example, if the input signal is measured in volts, an m next to a measurement value indicates that this value is in units of millivolts.
The Channel Measurements panel displays occupied bandwidth or adjacent channel power ratio (ACPR) measurements.
From the menu, select Tools > Measurements > Channel Measurements.
On the toolbar, click the Channel Measurements button.
In addition to the measurements, the Channel Measurements panel has an expandable Channel Settings pane.
Measurement — The type of measurement data to display. Available options are
Occupied BW
or ACPR
. See Algorithms for information on how
Occupied BW is calculated. ACPR is the adjacent channel power ratio, which is the ratio of the main channel power
to the adjacent channel power.
When you select Occupied BW
as the Measurement, the
following fields appear.
Channel Settings — Modify the parameters for calculating the channel measurements.
Channel Power — The total power in the channel.
Occupied BW — The bandwidth containing the specified Occupied BW (%)
of the total power of the spectrum. This setting is available only if you select Occupied
BW
as the Measurement type.
Frequency Error — The difference between the center of the occupied band and the
center frequency (CF) of the channel. This setting is available only if you select
Occupied BW
as the Measurement type.
When you select ACPR
as the Measurement, the following
fields appear.
Channel Settings — Enables you to modify the parameters for calculating the channel measurements.
Channel Power — The total power in the channel.
Offset (Hz) — The center frequency of the adjacent channel with respect to the
center frequency of the main channel. This setting is available only if you select ACPR
as the Measurement type.
Lower (dBc) — The power ratio of the lower sideband to the main channel. This
setting is available only if you select ACPR
as the Measurement
type.
Upper (dBc) — The power ratio of the upper sideband to the main channel. This
setting is available only if you select ACPR
as the Measurement
type.
The Distortion Measurements panel displays harmonic distortion and intermodulation distortion measurements.
From the menu, select Tools > Measurements > Distortion Measurements.
On the toolbar, click the Distortion Measurements
button.
The Distortion Measurements panel has an expandable Harmonics pane, which shows measurement results for the specified number of harmonics.
Note
For an accurate measurement, ensure that the fundamental signal (for harmonics) or primary tones (for
intermodulation) is larger than any spurious or harmonic content. To do so, you may need to adjust the
resolution bandwidth (RBW
) of the spectrum analyzer. Make sure that the bandwidth is
low enough to isolate the signal and harmonics from spurious and noise content. In general, you should set
the RBW so that there is at least a 10dB separation between the peaks of the sinusoids and the noise
floor. You may also need to select a different spectral window to obtain a valid measurement.
Distortion — The type of distortion measurements to display. Available
options are Harmonic
or Intermodulation
.
Select Harmonic
if your system input is a single sinusoid. Select
Intermodulation
if your system input is two equal amplitude sinusoids.
Intermodulation can help you determine distortion when only a small portion of the available
bandwidth will be used.
See Distortion Measurements for information on how distortion measurements are calculated.
When you select Harmonic
as the Distortion, the
following fields appear.
The harmonic distortion measurement automatically locates the largest sinusoidal component (fundamental signal frequency). It then computes the harmonic frequencies and power in each harmonic in your signal. Any DC component is ignored. Any harmonics that are outside the spectrum analyzer’s frequency span are not included in the measurements. Adjust your frequency span so that it includes all the desired harmonics.
Note
To view the best harmonics, make sure that your fundamental frequency is set high enough to resolve the harmonics. However, this frequency should not be so high that aliasing occurs. For the best display of harmonic distortion, your plot should not show skirts, which indicate frequency leakage. Also, the noise floor should be visible.
For a better display, try a Kaiser window with a large sidelobe attenuation (e.g. between 100–300 db).
Num. Harmonics — Number of harmonics to display, including the
fundamental frequency. Valid values of Num. Harmonics are from
2
to 99
. The default value is
6
.
Label Harmonics — Select Label Harmonics to add numerical labels to each harmonic in the spectrum display.
1 — The fundamental frequency, in hertz, and its power, in decibels of the measured power referenced to 1 milliwatt (dBm).
2, 3, ... — The harmonics frequencies, in hertz, and their power in decibels relative to the carrier (dBc). If the harmonics are at the same level or exceed the fundamental frequency, reduce the input power.
THD — The total harmonic distortion. This value represents the ratio of the power in the harmonics, D, to the power in the fundamental frequency, S. If the noise power is too high in relation to the harmonics, the THD value is not accurate. In this case, lower the resolution bandwidth or select a different spectral window.
SNR — Signal-to-noise ratio (SNR). This value represents the ratio of power in the fundamental frequency, S, to the power of all nonharmonic content, N, including spurious signals, in decibels relative to the carrier (dBc).
If you see ––
as the reported SNR, the total non-harmonic
content of your signal is less than 30% of the total signal.
SINAD — Signal-to-noise-and-distortion. This value represents the ratio of the power in the fundamental frequency, S to all other content (including noise, N, and harmonic distortion, D), in decibels relative to the carrier (dBc).
SFDR — Spurious free dynamic range (SFDR). This value represents the ratio of the power in the fundamental frequency, S, to power of the largest spurious signal, R, regardless of where it falls in the frequency spectrum. The worst spurious signal may or may not be a harmonic of the original signal. SFDR represents the smallest value of a signal that can be distinguished from a large interfering signal. SFDR includes harmonics.
When you select Intermodulation
as the Distortion,
the following fields appear.
The intermodulation distortion measurement automatically locates the fundamental, first-order frequencies (F1 and F2). It then computes the frequencies of the third-order intermodulation products (2*F1-F2 and 2*F2-F1).
Label frequencies — Select Label frequencies to add numerical labels to the first-order intermodulation product and third-order frequencies in the spectrum analyzer display.
F1 — Lower fundamental first-order frequency
F2 — Upper fundamental first-order frequency
2F1 - F2 — Lower intermodulation product from third-order harmonics
2F2 - F1 — Upper intermodulation product from third-order harmonics
TOI — Third-order intercept point. If the noise power is too high in relation to the harmonics, the TOI value will not be accurate. In this case, you should lower the resolution bandwidth or select a different spectral window. If the TOI has the same amplitude as the input two-tone signal, reduce the power of that input signal.
The CCDF Measurements panel displays complimentary cumulative distribution function measurements. CCDF measurements in this scope show the probability of a signal’s instantaneous power being a specified level above the signal’s average power. These measurements are useful indicators of a signal’s dynamic range.
To compute the CCDF measurements, each input sample is quantized to 0.01 dB increments. Using a histogram 100 dB wide (10,000 points at 0.01 dB increments), the largest peak encountered is placed in the last bin of the histogram. If a new peak is encountered, the histogram shifts to make room for that new peak.
To open this dialog box:
From the menu, select Tools > Measurements > CCDF Measurements
In the toolbar, click the CCDF Measurements button.
Plot Gaussian reference — Show the Gaussian white noise reference signal on the plot.
Probability (%) — The percentage of the signal that contains the power level above the value listed in the dB above average column
dB above average — The expected minimum power level at the associated Probability (%).
Average Power — The average power level of the signal since the start of simulation or from the last reset.
Max Power — The maximum power level of the signal since the start of simulation or from the last reset.
PAPR — The ratio of the peak power to the average power of the signal. PAPR should be less that 100 dB to obtain accurate CCDF measurements. If PAPR is above 100 dB, only the highest 100 dB power levels are plotted in the display and shown in the distribution table.
Sample Count — The total number of samples used to compute the CCDF.
Reset — Clear all current CCDF measurements and restart.
To control the labels, minimum and maximum values, the legend, and gridlines, use
the configuration properties. From the Spectrum Analyzer, select View > Configuration Properties or click the toolbar button .
In the Style dialog box, you can customize the style of spectrum display. This dialog box is not available for the spectrogram view. You can change the color of the spectrum plot, color of the background, and properties of the lines. To open this dialog box, select View > Style.
If you are viewing only the spectrum or the spectrogram, you only see the relevant options. For more details about these options, see Configuration Properties and Style.
To zoom in and out of the plot, or pan to different area of the plot, use the zoom buttons in the toolbar or in the Tools menu.
You can set properties to zoom in/out automatically or scale the axes. In the Spectrum Analyzer menu, select Tools > Axes Scaling.
If you are viewing only the spectrum or the spectrogram, you see only the relevant options. If you are using the CCDF measurements, you will also see x-axis scaling options. For more details about these options, see Axes Scaling.