Duplicate Each Element in a Matrix without using Repelem or Repmat
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Benjamin Ong
il 31 Ott 2019
Commentato: Stephen23
il 4 Mag 2021
Is there a way I can make each element in a matrix duplicate into a 3 by 3? if
A=[1 0;0 1]
Is there a way i can turn it into
Aew=[1 1 1 0 0 0;1 1 1 0 0 0;1 1 1 0 0 0;0 0 0 1 1 1;0 0 0 1 1 1;0 0 0 1 1 1]
so basically
Anew=repelem(A,3,3)
but without repelem, repmat or any special functions?
Thanks
1 Commento
Adam
il 31 Ott 2019
Yes, but the only reason I can see for wanting to do so is as a homework question. Like most things you can do it with a for loop.
Risposta accettata
Fangjun Jiang
il 31 Ott 2019
Modificato: Fangjun Jiang
il 31 Ott 2019
a=eye(2);
k=3;
d=blkdiag(ones(k,1),ones(k,1));
b=d*a*d'
%%Or a more generic case
a=[1 2 3;4 5 6];
k=3;
[m,n]=size(a);
d1=ones(k,1)*ones(1,m);
d1=mat2cell(d1,k,ones(1,m));
d1=blkdiag(d1{:});
d2=ones(n,1)*ones(1,k);
d2=mat2cell(d2,ones(n,1),k);
d2=blkdiag(d2{:});
b=d1*a*d2
Più risposte (1)
Stephen23
il 31 Ott 2019
Modificato: Stephen23
il 31 Ott 2019
>> A = [1,0;0,1]
A =
1 0
0 1
>> V = ceil((1:6)/3);
>> B = A(V,V)
B =
1 1 1 0 0 0
1 1 1 0 0 0
1 1 1 0 0 0
0 0 0 1 1 1
0 0 0 1 1 1
0 0 0 1 1 1
5 Commenti
Stephen23
il 4 Mag 2021
@Ayca Yigit: it generates a vector of indices V, where each index repeats k times. Consider what happens when you use those indices to select the elements of A(V,V).
Vedere anche
Categorie
Scopri di più su Matrix Indexing 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!