Fast, compact calculation of inverse of a circulant matrix Given an n*1 vector v, return the inverse c of the n*n circulant matrix C that has v as its first column The returned c is the first column of the inverse, which is also circulant – to get the full matrix, use ‘circulant_make_matrix(c)’
Theoretically same as inv(make_circulant_matrix(v))(:, 1)
, but requires many fewer computations and does not form matrices explicitly
Roundoff may induce a small imaginary component in c even if v is real – use real(c)
to remedy this
Reference: Robert M. Gray, Toeplitz and Circulant Matrices: A Review, Now Publishers, http://ee.stanford.edu/~gray/toeplitz.pdf, Chapter 3
See also: gallery, circulant_matrix_vector_product, circulant_eig.
Package: linear-algebra