Spot – A Linear-Operator Toolbox

Linear operators are at the core of many of the most basic algorithms for signal and image processing. Matlab’s high-level, matrix-based language allows us to naturally express many of the underlying matrix operations (e.g., computation of matrix-vector products and manipulation of matrices) and is thus a powerful platform on which to develop concrete implementations of these algorithms. Many of the most useful operators, however, do not lend themselves to the explicit matrix representations that Matlab provides. The aim of the Spot Toolbox is to bring the expressiveness of Matlab’s built-in matrix notation to problems for which explicit matrices are not practical.

Here’s simple example that shows how Spot operator primitives can be stitched together using familiar Matlab commands to form more complex operators:

n = 1000; x = (1:n)';        % the first column defines a circulant matrix
F = opDFT(n);                % create a DFT operator
s = sqrt(n)*F*x;             % eigenvalues of C
C = real( F'*opDiag(s)*F );  % the circulant operator
w = C*x;                     % apply C to a vector
y = C'*w;                    % apply the adjoint of C to a vector
z = C(end:-1:1,:)*y;         % reverse the rows of C and apply to a vector
double( C(1:5,1) )'          % extract a few elements of the first column
ans =
            1            2            3            4            5

Download

Version 1.2, August 2, 2013: spot-1.2.zip

The latest release is always available on the Spot GitHub page.