circulant

(yet another, but fast) Circulent Matrix
2,5K Downloads
Aktualisiert 12. Feb 2019

Lizenz anzeigen

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)

Zitieren als

Jos (10584) (2026). circulant (https://de.mathworks.com/matlabcentral/fileexchange/22876-circulant), MATLAB Central File Exchange. Abgerufen.

Kompatibilität der MATLAB-Version
Erstellt mit R2018b
Kompatibel mit allen Versionen
Plattform-Kompatibilität
Windows macOS Linux
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und MATLAB Answers
Quellenangaben

Inspiriert von: Circular Matrix computation, Circulant matrix

Version Veröffentlicht Versionshinweise
2.2.0.0

modernised

1.3.0.0

Multiple acknowledgements added

1.2.0.0

v2.0 - bug fixed for forward shifted vectors !!

1.1.0.0

acknowledge both FEX ID 22814 and 22858

1.0.0.0