circulant

버전 2.2.0.0 (2.21 KB) 작성자: Jos (10584)
(yet another, but fast) Circulent Matrix
다운로드 수: 2.5K
업데이트 날짜: 2019/2/12

라이선스 보기

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 릴리스 호환 정보
개발 환경: R2018b
모든 릴리스와 호환
플랫폼 호환성
Windows macOS Linux
카테고리
Help CenterMATLAB Answers에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
버전 게시됨 릴리스 정보
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