- kron([1 0;0 1],A)
- kron([1 0;1 0],A)
- kron([1 0 0;0 0 1],A)
Repmat with pattern
2 次查看(过去 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 中查找有关 Operating on Diagonal Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!