Is possible put a vector as a diagonal of matrix ?
Mostrar comentarios más antiguos
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 ?
Respuestas (3)
Andrei Bobrov
el 13 de Feb. de 2014
Editada: Andrei Bobrov
el 13 de Feb. de 2014
blkdiag(A,A,A)
or
A = [1 2];
n = 4;
a1 = repmat({A},n,1);
out = blkdiag(a1{:});
Azzi Abdelmalek
el 13 de Feb. de 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)
el 13 de Feb. de 2014
A = [1 2] ;
n = 3 ;
B = kron(eye(n),A)
2 comentarios
Alex
el 13 de Feb. de 2014
Jos (10584)
el 13 de Feb. de 2014
You're welcome. If you're satisfied you can accept the answer so others know as well.
Categorías
Más información sobre Operating on Diagonal Matrices en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!