Fast Volterra Filtering
Implementation of the algorithm proposed in the paper:
Morhac, M., 1991 - A Fast Algorithm of Nonlinear Volterra Filtering
Basically, the output of each n-homogeneous subsystem is decomposed into a summation of convolutions. Each of these convolutions is performed in the frequency domain, which improves the efficiency of the computation.
The Volterra model must be provided to the algorithm as a structure containing the kernels in the triangular form, i.e., such that
h(t1,...,tn) ~= 0 only if t1<=t2<=...<=tn
A example is given below:
% Building the model
kernels = {k1 k2 k3 ... kP};
% Defining the memory extension of
% each kernel (in samples)
memories = [N1 N2 N3 ... NP];
% Given an input u, the output
% is computed with
y = fastVMcell(u, kernels, memories);
% y is a P x M vector where the p-th
% row is the output of the
% p-th homogeneous nonlinear system,
% i.e., the multidimensional convolution
% of the input with the kernel kp.
% To get the overall output of the
% Volterra filter, use
yP = sum(y,1);
Note: The code provided *does not* compute Volterra kernels for a model. It only computes the output of a Volterra filter, given its kernels and the input.
Cite As
José Goulart (2026). Fast Volterra Filtering (https://nl.mathworks.com/matlabcentral/fileexchange/32248-fast-volterra-filtering), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
Tags
Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
| Version | Published | Release Notes | |
|---|---|---|---|
| 1.7.0.0 | Fixed the description to match the current version. |
||
| 1.6.0.0 | Function updated to a version that uses a cell containing the kernels as the argument representing the model. |
||
| 1.5.0.0 | Fixed error pointed out by Goryn. |
||
| 1.2.0.0 | Corrected the submission. |
||
| 1.1.0.0 | Included an example of use in the description. |
||
| 1.0.0.0 |
