- kron([1 0;0 1],A)
- kron([1 0;1 0],A)
- kron([1 0 0;0 0 1],A)
Repmat with pattern
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Walter Roberson
le 20 Jan 2012
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 commentaires
Plus de réponses (1)
Andrew Newell
le 20 Jan 2012
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{:})
Voir également
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!