Is possible put a vector as a diagonal of matrix ?

1 visualizzazione (ultimi 30 giorni)
Alex
Alex il 13 Feb 2014
Commentato: Jos (10584) il 13 Feb 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 ?

Risposte (3)

Andrei Bobrov
Andrei Bobrov il 13 Feb 2014
Modificato: Andrei Bobrov il 13 Feb 2014
blkdiag(A,A,A)
or
A = [1 2];
n = 4;
a1 = repmat({A},n,1);
out = blkdiag(a1{:});

Azzi Abdelmalek
Azzi Abdelmalek il 13 Feb 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) il 13 Feb 2014
A = [1 2] ;
n = 3 ;
B = kron(eye(n),A)
  2 Commenti
Alex
Alex il 13 Feb 2014
Thats works just fine !! thanks
Jos (10584)
Jos (10584) il 13 Feb 2014
You're welcome. If you're satisfied you can accept the answer so others know as well.

Accedi per commentare.

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by