- kron([1 0;0 1],A)
- kron([1 0;1 0],A)
- kron([1 0 0;0 0 1],A)
Repmat with pattern
조회 수: 5 (최근 30일)
이전 댓글 표시
Does anyone know an efficient way of replicating a matrix in a predetermined pattern(such as diagonal or triangular)?
Some examples: 1. We have A=[1,2;3,4] and we want B=[A,zeros(2);zeros(2),A] 2. We have A=[1,2;3,4] and we want B=[A,zeros(2);A,A] 3. We have a=[1;2;3;4] and we want B=[a,zeros(4,1);zeros(4,1),a]
댓글 수: 0
채택된 답변
Walter Roberson
2012년 1월 20일
That is, put a 1 for each copy of A that should appear, and put a 0 for each place 0's the same size as A should appear.
댓글 수: 6
추가 답변 (1개)
Andrew Newell
2012년 1월 20일
For 1. you could use
B = blkdiag(A,A);
For 2, why not just use the command you gave?
B=[A,zeros(2);A,A] ;
For 3:
B=[a' zeros(1,4); zeros(1,4) a']'
EDIT: Here is a generalization of 1:
n = 3; % e.g.
Amat = repmat(A,n,1);
Acell = mat2cell(Amat,2*ones(1,n),2);
B = blkdiag(Acell{:})
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!