Fast Volterra Filtering

Fast algorithm for computing the response of a discrete Volterra model given a input sequence.
1.8K Downloads
Updated 12 Oct 2011

View License

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 (2024). Fast Volterra Filtering (https://www.mathworks.com/matlabcentral/fileexchange/32248-fast-volterra-filtering), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2009b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
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