Is possible put a vector as a diagonal of matrix ?
Afficher commentaires plus anciens
I mean, if a have:
A= [1 2];
can i get
B=
[1 2 0 0 0 0;
0 0 1 2 0 0;
0 0 0 0 1 2];
without any loop ?
Réponses (3)
Andrei Bobrov
le 13 Fév 2014
Modifié(e) : Andrei Bobrov
le 13 Fév 2014
blkdiag(A,A,A)
or
A = [1 2];
n = 4;
a1 = repmat({A},n,1);
out = blkdiag(a1{:});
Azzi Abdelmalek
le 13 Fév 2014
n=3;
a=repmat([1 2 zeros(1,2*n-2)],n,1);
b=arrayfun(@(x) circshift(a(x,:),[0 2*(x-1)]),(1:n)','un',0);
out=cell2mat(b)
Jos (10584)
le 13 Fév 2014
A = [1 2] ;
n = 3 ;
B = kron(eye(n),A)
2 commentaires
Alex
le 13 Fév 2014
Jos (10584)
le 13 Fév 2014
You're welcome. If you're satisfied you can accept the answer so others know as well.
Catégories
En savoir plus sur Operating on Diagonal Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!