Signal Processing Toolbox™ Release Notes
Signal Processing Toolbox™ Release Notes
Phone: 508-647-7000
R2023b
Signal Analyzer App: Compute and compare more types of spectra . . . . . 1-2
R2023a
iii
Signal Analyzer App: Rename and delete signals in preprocessing mode
.......................................................... 2-2
R2022b
Signal Analyzer and Signal Labeler Apps: View frequency axes in log scale
and toggle decibel display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2
iv Contents
R2022a
Labeled Signal Sets: Generate feature data and get label indices from the
command line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3
R2021b
Design Filter Live Editor Task: Design digital filter interactively . . . . . . . 5-2
v
Feature Extraction: Extract time-domain and frequency-domain features
of signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2
MATLAB Online support for Signal Analyzer and Signal Labeler . . . . . . . 5-4
R2021a
European Data Format Files: Create and modify EDF or EDF+ files . . . . . 6-2
Labeling Convenience Functions: Split data sets by label value and assign
attributes based on file location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
vi Contents
Signal Labeling: Count label values and create datastores from
labeledSignalSet objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3
Signal Datastores: Write data from datastore to files using writeall . . . . 6-3
R2020b
European Data Format Files: Read EDF and EDF+ files and obtain
information about them . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2
vii
chirp Function: Generate complex-valued swept-frequency cosine signals
.......................................................... 7-3
tall Array Support: Operate on tall arrays with the pwelch function . . . . 7-4
R2020a
tall Arrays: Operate on tall arrays with the spectrogram and stft functions
.......................................................... 8-3
GPU code generation support for fftfilt, stft, and istft functions . . . . . . . 8-3
GPU acceleration for spectrogram, czt, stft, and wvd functions . . . . . . . . 8-3
viii Contents
R2019b
Signal Labeling: Automatically find and label signal peaks and valleys
.......................................................... 9-2
R2019a
Signal Analyzer App: Remove trends from signals and estimate their
envelopes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2
C/C++ Code Generation Support: Generate code for filter design, spectral
analysis, and spectral windowing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2
R2018b
ix
Signal Analyzer App: Change sample rates of signals and convert
nonuniformly sampled signals to uniformly sampled signals . . . . . . . 11-2
Signal Labeling: Define labels and create sets of labeled signals . . . . . . 11-2
x Contents
1
R2023b
Version: 23.2
New Features
Bug Fixes
Compatibility Considerations
R2023b
You must have Audio Toolbox™ and Deep Learning Toolbox™ to use this functionality.
You must have a Deep Learning Toolbox license to use the new functionality.
• resize adds or removes elements depending on if the length of the input data is less than or
greater than the target length. The resized data matches the target length.
• paddata only adds elements. If the length of the input data is greater than the target length, the
output data is the same as the input data.
• trimdata only removes elements. If the length of the input data is less than the target length, the
output data is the same as the input data.
1-2
Application Example: Compute Shock Response Spectra
This release introduces an example that applies signal processing techniques to the analysis of
vibration data. “Practical Introduction to Shock Waveform and Shock Response Spectrum” introduces
the concept of a shock response spectrum, surveys different types of shock response spectra, and
computes shock response spectra of synthetic and measured signals.
These Signal Processing Toolbox functions now support MATLAB® timetables for code generation:
The firls function now has enhanced performance for code generation.
You must have MATLAB Coder™ to generate standalone C and C++ code for the supported functions.
For more information on usage and limitations, see the Extended Capabilities section at the bottom of
each reference page.
You must have Parallel Computing Toolbox™ to use gpuArray objects with the supported functions.
For more details, see “Run MATLAB Functions on a GPU” (Parallel Computing Toolbox). To see which
GPUs are supported, see “GPU Computing Requirements” (Parallel Computing Toolbox).
1-3
R2023b
You must have MATLAB Coder and GPU Coder™ to generate CUDA® code.
The dlstft function now combines the real and imaginary parts of the short-time Fourier transform
(STFT) into a single output argument. Previously, the function returned the real part of the transform
as the first output argument and the imaginary part as the second. Starting this release, the function
returns the frequencies and times at which the STFT is computed as second and third output
arguments, respectively. Function calls with four output arguments error out.
The short-time Fourier transform (STFT) layer stftLayer now initializes the Weights learnable
parameter to the analysis window used to compute the transform. Previously, the parameter was
initialized to an array containing the Gabor atoms for the STFT.
1-4
2
R2023a
Version: 9.2
New Features
Bug Fixes
R2023a
You must have a Deep Learning Toolbox license to use this functionality.
The Create Plot Live Editor task supports these Signal Processing Toolbox functions:
• freqz
• grpdelay
• impz
• periodogram
• pspectrum
• pwelch
• spectrogram
• zplane
2-2
• Detect Anomalies In Signals Using deepSignalAnomalyDetector uses autoencoders to detect
abnormal points or segments in time-series data.
• Detect Anomalies in Machinery Using LSTM Autoencoder uses the
deepSignalAnomalyDetector object to detect anomalies in data from an industrial machine.
• Practical Introduction to Fatigue Analysis Using Rainflow Counting finds the total damage on a
mechanical component due to cyclic stress.
The rcosdesign function now supports variable-size inputs during code generation.
You must have MATLAB Coder to generate standalone C and C++ code for the supported functions.
For more information on usage and limitations, see the Extended Capabilities section at the bottom of
each reference page.
You must have Parallel Computing Toolbox to use gpuArray objects with the supported functions. For
more details, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox). To see which GPUs
are supported, see GPU Computing Requirements (Parallel Computing Toolbox).
2-3
3
R2022b
Version: 9.1
New Features
Bug Fixes
Compatibility Considerations
R2022b
Signal Analyzer and Signal Labeler Apps: View frequency axes in log
scale and toggle decibel display
Starting this release, the Signal Analyzer and Signal Labeler apps support logarithmic frequency axes
in the spectrum and spectrogram views. You can also display the power spectrum in decibels or linear
scale.
3-2
Deep Learning Examples: Recover signals, monitor human health, and
perform signal source separation
This release introduces examples that combine signal processing techniques and deep learning
networks:
• Signal Recovery with Differentiable Scalograms and Spectrograms uses differentiable time-
frequency transforms to recover a time-domain signal without the need for phase information or
transform inversion.
• Signal Source Separation Using W-Net Architecture uses a deep learning network to discern fetal
and maternal electrocardiogram (ECG) signals present in noninvasive abdominal measurements
taken on pregnant patients.
• Human Health Monitoring Using Continuous Wave Radar and Deep Learning uses a deep learning
network to reconstruct electrocardiograms from continuous-wave radar signals.
These Signal Processing Toolbox functions now support timetables for C/C++ code generation:
The Generate Optimized Code on Raspberry Pi Target example shows how to generate optimized C+
+ code for the resample function that can be deployed on a Raspberry Pi® target (ARM®-based
device).
You must have MATLAB Coder to generate standalone C and C++ code for the supported functions.
For more information on usage and limitations, see the Extended Capabilities section at the bottom of
each reference page.
The Classify ECG Signals Using Long Short-Term Memory Networks with GPU Acceleration example
accelerates feature extraction and network training with a GPU.
You must have Parallel Computing Toolbox to use gpuArray objects with the supported functions. For
more details, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox). To see which GPUs
are supported, see GPU Computing Requirements (Parallel Computing Toolbox).
3-3
R2022b
The OutputMode property of stftLayer will be removed in a future release. Update your code and
networks to make them compatible with stftLayer output in "SCBT" format. For more information,
see Layer Output Format.
3-4
4
R2022a
Version: 9.0
New Features
Bug Fixes
Compatibility Considerations
R2022a
• To automate the detection of speech content, the app uses the detectSpeech (Audio Toolbox)
function.
• To perform speech-to-text transcription, the app uses the speech2text function available on File
Exchange. The function interfaces with third-party speech-to-text APIs including:
The speech2text entry on File Exchange includes a tutorial to help get you started.
4-2
Labeled Signal Sets: Generate feature data and get label indices from
the command line
The new createFeatureData function creates a table or matrix of attribute and ROI feature labels
in a labeledSignalSet object. Use getLabelNames, getLabelDefinitions, and the new
getLabelIndices function to retrieve feature label definitions in a labeled signal set.
• Denoise Signals with Adversarial Learning Denoiser Model uses a denoiser object with an
adversarial learning architecture to remove noise from noisy electrocardiogram and
electroencephalogram signals.
• Classify Arm Motions Using EMG Signals and Deep Learning performs sequence-to-sequence
classification of forearm motions using labeled electromyography signals and a long short-term
memory (LSTM) network.
You must have MATLAB Coder to generate standalone C and C++ code for the supported functions.
For more information on usage and limitations, see the Extended Capabilities section at the bottom of
each reference page.
4-3
R2022a
You must have Parallel Computing Toolbox to use gpuArray objects with the supported functions. For
more details, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox). To see which GPUs
are supported, see GPU Support by Release (Parallel Computing Toolbox).
The behavior of the Filter Visualization Tool has changed. In previous releases, fvtool had toolbars
containing plot editing and analysis controls. Starting this release, fvtool plot editing, analysis, and
integration with Filter Designer controls are provided on the toolstrip. To edit a plot, first use Send
to Figure to plot to a figure window and then use the plot editing toolbar.
• For signal and spectral analysis, use the Signal Analyzer app.
• For filter design, use the Filter Designer app.
4-4
5
R2021b
Version: 8.7
New Features
Bug Fixes
Compatibility Considerations
R2021b
You can use the generated MATLAB code to generate C/C++ code that you can use to extract
features for your entire data set.
5-2
Feature Extraction: Compute zero-crossing rates of signals
The new zerocrossrate function returns the rate, count, and location of zero crossings for a signal.
• Denoise EEG Signals Using Deep Learning Regression uses deep learning regression to remove
electro-oculogram (EOG) noise from electroencephalogram (EEG) signals.
• Hand Gesture Classification Using Radar Signals and Deep Learning classifies ultra-wideband
impulse radar signal data using a convolutional neural network.
• Human Activity Recognition Using Mobile Phone Data classifies human activity using features
extracted from smartphone sensor signals.
• Anomaly Detection Using Autoencoder and Wavelets uses wavelet-extracted features to detect arc
signals in a DC system.
• Learn Pre-Emphasis Filter Using Deep Learning shows how to use a convolutional deep network
and a short-time Fourier transform learnable layer to learn a pre-emphasis filter for speech
recognition.
5-3
R2021b
You must have MATLAB Coder to generate standalone C and C++ code for the supported functions.
For more information on usage and limitations, see the Extended Capabilities section at the bottom of
each reference page.
You must have Parallel Computing Toolbox to use gpuArray objects with the supported functions. For
more details, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox). To see which GPUs
are supported, see GPU Support by Release (Parallel Computing Toolbox).
Starting this release, the designfilt function no longer assists in correcting calls to designfilt
in a script or function. If you specify an incomplete or inconsistent set of input arguments in calls to
5-4
designfilt within a script or function, the function issues an error with a link to open the Filter
Design Assistant. Users can use the assistant to generate a filter and display the corresponding code
on the command line. The generated filter is saved to the MATLAB workspace. For more information,
see Filter Design Assistant. In previous releases, the assistant automatically corrected the script or
function.
• For signal and spectral analysis, use the Signal Analyzer app.
• For filter design, use the Filter Designer app.
5-5
6
R2021a
Version: 8.6
New Features
Bug Fixes
R2021a
European Data Format Files: Create and modify EDF or EDF+ files
This release introduces the edfwrite object that lets users create new or modify existing EDF or
EDF+ files with signal data, header information, and annotations.
• countlabels counts the number of unique label values in an array, a table, or a datastore.
6-2
• splitlabels finds indices to split labeled datasets into multiple datasets with equal specified
label proportions.
• folders2labels creates a list of labels that can be associated with data files based on the
names of the directories that house them.
• countLabelValues counts the number of members that have a given attribute or the number of
members that have at least one instance of a given ROI or point label.
• createDatastores takes data from a labeledSignalSet object and creates two datastores: a
signalDatastore containing the signal data and an arrayDatastore containing the labels.
6-3
R2021a
• Spoken Digit Recognition with Custom Log Spectrogram Layer and Deep Learning uses a deep
convolutional neural network and a custom log spectrogram layer to classify speech recordings.
• Labeling Radar Signals with Signal Labeler (Radar Toolbox) uses Signal Labeler to label time and
frequency features of noisy pulse radar signals.
• Digital and Analog Filters — freqz, impz, impzlength, lp2bp, lp2bs, lp2hp, lp2lp,
sos2ss, sos2zp, ss2zp, stepz, tf2zp, and tf2zpk
• Signal Modeling — arburg, arcov, armcov, aryule, and prony
• Spectral Analysis — pburg, pcov, peig, pmcov, pmusic, pyulear, rooteig, and rootmusic
• Time-Frequency Analysis — instbw
• Waveform Generation — marcumq
You must have MATLAB Coder to generate standalone C and C++ code for supported functions. For
more information on usage and limitations, see the Extended Capabilities section at the bottom of
each reference page.
6-4
You must have Parallel Computing Toolbox to use gpuArray objects with supported functions. For
more details, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox). To see which GPUs
are supported, see GPU Support by Release (Parallel Computing Toolbox).
6-5
7
R2020b
Version: 8.5
New Features
Bug Fixes
Compatibility Considerations
R2020b
• Express region-of-interest (ROI) signal masks as tables of ROI limits, as categorical sequences, or
as matrices of binary sequences, and convert between formats
• Manipulate masks: Extend, remove, or merge regions of interest
• Extract signal regions defined by masks to prepare data for training machine learning or deep
learning models
• Plot signals with color-coded regions
European Data Format Files: Read EDF and EDF+ files and obtain
information about them
The European Data Format (EDF) is a widely used storage and file exchange format for biological and
medical signals. This release introduces the edfread and edfinfo functions.
• edfread enables users to read data stored in EDF and EDF+ files into the MATLAB workspace.
• edfinfo returns information about the header and contents of an EDF file.
Starting this release, the stft and istft functions can compute one-sided forward and inverse
short-time Fourier transforms of real-valued signals.
7-2
Signal Labeling: Point to signal collections in the workspace or in files
using signalDatastore objects
Starting this release, the labeledSignalSet object accepts input specified by signalDatastore
objects.
Compatibility Considerations
In previous releases, resample accepted arrays with more than two dimensions but returned two-
dimensional matrices. As a result of this behavior, the resampled output was correct in some cases
but not all. Starting this release, the function has a dim argument that allows users to specify the
dimension along which to operate. If dim is not specified, resample operates along the first array
dimension with size greater than 1. The output has the same number of dimensions as the input.
• Generate Synthetic Signals Using Conditional Generative Adversarial Network uses a conditional
generative adversarial network to produce synthetic signals.
• Deploy Signal Segmentation Deep Network on Raspberry Pi generates a MEX function and a
standalone executable that perform waveform segmentation on a Raspberry Pi.
7-3
R2020b
You must have MATLAB Coder to generate standalone C and C++ code for supported functions. For
more information on usage and limitations, see the Extended Capabilities section at the bottom of
each reference page.
You must have Parallel Computing Toolbox to use gpuArray objects with supported functions. For
more details, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox). To see which GPUs
are supported, see GPU Support by Release (Parallel Computing Toolbox).
You must have MATLAB Coder and GPU Coder to generate CUDA code.
tall Array Support: Operate on tall arrays with the pwelch function
The pwelch function now accepts tall arrays as input.
7-4
8
R2020a
Version: 8.4
New Features
Bug Fixes
Compatibility Considerations
R2020a
Signal Labeler now enables you to autolabel plotted signals and inspect labeling results before
committing. When in autolabeling mode, you can run any function that labels attributes, regions of
interest, or points of interest. You can then inspect the labeling, modify the autolabeling function, edit
labels, and save the labeling when it is satisfactory. For easier label inspection, the autolabeling mode
displays only the labels generated by the most recently called function.
• Iterative Approach for Creating Labeled Signal Sets with Reduced Human Effort uses a train-as-
you-label iterative method for deep learning classifier training.
• Pedestrian and Bicyclist Classification Using Deep Learning (Phased Array System Toolbox) uses a
deep learning network to classify pedestrians and bicyclists based on their micro-Doppler
characteristics.
• Modulation Classification with Deep Learning (Communications Toolbox) performs modulation
classification using a convolutional neural network.
8-2
tall Arrays: Operate on tall arrays with the spectrogram and stft
functions
The spectrogram and stft functions now support tall arrays as inputs. For more information on
usage and limitations, see the Extended Capabilities section at the bottom of each reference page.
GPU code generation support for fftfilt, stft, and istft functions
The fftfilt, stft, and istft functions now support code generation for graphical processing
units (GPUs). You must have MATLAB Coder and GPU Coder to generate CUDA code.
You must have MATLAB Coder to generate standalone C and C++ code for supported functions. For
more information on usage and limitations, see the Extended Capabilities section at the bottom of
each reference page.
Signal Analyzer no longer opens Signal Labeler, which is now available as an app. If you want to label
signals, open Signal Labeler from the MATLAB Toolstrip or the Command Window.
8-3
9
R2019b
Version: 8.3
New Features
Bug Fixes
R2019b
Signal Labeling: Automatically find and label signal peaks and valleys
The Signal Labeler now enables you to find and label local maxima and minima of signals. Signal
Labeler uses the MATLAB functions islocalmax and islocalmin to search for the peaks and
valleys.
9-2
• Spectral Windows — chebwin
You must have MATLAB Coder to generate standalone C and C++ code for supported functions.
9-3
10
R2019a
Version: 8.2
New Features
Bug Fixes
R2019a
Signal Analyzer App: Remove trends from signals and estimate their
envelopes
The Signal Analyzer app now enables you to compute the upper and lower envelopes of a waveform.
You can find the envelopes using an FFT-based analytic function, an FIR Hilbert filter, the function
peaks, or the signal RMS values.
This release also introduces functionality to remove trends from signals. You can remove constant
trends, linear trends, and piecewise linear trends.
10-2
barthannwin, bartlett, blackman, blackmanharris, bohmanwin, flattopwin, gausswin,
nuttallwin, parzenwin, rectwin, taylorwin, triang, and tukeywin now accept variable
input.
• Waveform Generation:
You must have MATLAB Coder to generate standalone C and C++ code for supported functions.
10-3
11
R2018b
Version: 8.1
New Features
Bug Fixes
R2018b
• wvd computes the Wigner-Ville distribution of a signal. The function also computes the smoothed
pseudo Wigner-Ville distribution, which uses independent windows to smooth in time and
frequency.
• xwvd computes the cross Wigner-Ville distribution of two signals. The function also computes the
cross smoothed pseudo Wigner-Ville distribution, which uses independent windows to smooth in
time and frequency.
• signalLabelDefinition enables users to create signal label definitions. The definitions can be
for attributes, regions, or points of interest.
• labeledSignalSet enables users to group signals, label definitions, and label values that can be
used in learning algorithms.
11-2