Is possible put a vector as a diagonal of matrix ?

1 visualización (últimos 30 días)
Alex
Alex el 13 de Feb. de 2014
Comentada: Jos (10584) el 13 de Feb. de 2014
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
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
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)
Jos (10584) el 13 de Feb. de 2014
A = [1 2] ;
n = 3 ;
B = kron(eye(n),A)
  2 comentarios
Alex
Alex el 13 de Feb. de 2014
Thats works just fine !! thanks
Jos (10584)
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.

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by