C = circulant(V) or circulant(V, 1) returns the circulant matrix C
based on the row/column vector V. C is a square matrix in which each
row/column is a formed by circularly shifting the preceeding row/column
forward by one element. The first row (or column) is equal to V.
C = circulant(V, -1) applies a backward shift, returning a symmetric
matrix, so that C equals TRANSPOSE(C). In this case, it does not matter
if V is a row or column vector.
Examples:
circulant([2 3 5]) % forward shift
% -> 2 3 5
% 5 2 3
% 3 5 2
circulant([2 3 5].') % column input
% -> 2 5 3
% 3 2 5
% 5 3 2
circulant([2 3 5], -1), circulant([2 ; 3 ; 5], -1) % backward shift
% for both row or column vectors, this returns a symmetric matrix:
% -> 2 3 5
% 3 5 2
% 5 2 3
The output has the same type as the input.
V = {'One' '2' 'III'}
circulant(A)
% -> 'One' '2' 'III'
% 'III' 'One' '2'
% '2' 'III' 'One'
Notes:
- This version is completely based on indexing and does not use loops,
repmat, hankel, toeplitz or bsxfun. It should therefore run pretty
fast on most Matlab versions.
- See http://en.wikipedia.org/wiki/Circulant_matrix for more info on
circulant matrices.
See also toeplitz, hankel
latsq, ballatsq (on the file Exchange)
引用格式
Jos (10584) (2024). circulant (https://www.mathworks.com/matlabcentral/fileexchange/22876-circulant), MATLAB Central File Exchange. 检索来源 .
MATLAB 版本兼容性
平台兼容性
Windows macOS Linux类别
标签
致谢
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!