Fast Kronecker matrix multiplication

Fast Kronecker matrix multiplication for matrices of any size
294 Downloads
Updated 6 Oct 2015

View License

Fast Kronecker matrix multiplication, for both full and sparse matrices
of any size. Never computes the actual Kronecker matrix and omits
multiplication by identity matrices.
y = kronm(Q,x) computes
y = (Q{k} kron ... Q{2} kron Q{1})*x
If Q contains only two matrices and x is a vector, the code uses the
identity
( Q{2} kron Q{1} )*vec(X) = vec(Q{1}*X*Q{2}'),
where vec(X)=x. If Q contains more than two matrices and/or if x has more
than one column, the algorithm uses a generalized form of this identity.
The idea of the algorithm is to see x as a multi-dimensional array and to
apply the linear maps Q{i} separately for each dimension i.
Acknowledgement:
This code follows the same idea as 'kronmult' by Paul G. Constantine &
David F. Gleich (Stanford, 2009). However, I avoid loops and allow for
non-square inputs Q{i}. I have also included the special treatment for
identity matrices.

Cite As

Matthias Kredler (2026). Fast Kronecker matrix multiplication (https://uk.mathworks.com/matlabcentral/fileexchange/53382-fast-kronecker-matrix-multiplication), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2011b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Categories
Find more on Linear Algebra in Help Center and MATLAB Answers
Acknowledgements

Inspired by: Fast and Efficient Kronecker Multiplication

Inspired: Matrix times array

Version Published Release Notes
1.0.0.0

Fixed some typos in description and made it more precise. No changes to actual code.