permutations and combinations of column
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
If there are two matrices
A=[1 2 3 4];
B=[5 6 7 8];
How can I create this
C=[ 1 2 3 4;
1 2 3 8;
1 2 7 4;
1 2 7 8;
1 6 3 4;
1 6 3 8;
1 6 7 4;
1 6 7 8;
5 2 3 4;
5 2 3 8;
5 2 7 4;
5 2 7 8;
5 6 3 4;
5 6 3 8;
5 6 7 4;
5 6 7 8]
0 commentaires
Réponses (2)
Sean de Wolski
le 10 Sep 2012
A=[1 2 3 4];
B=[5 6 7 8];
AB = [A;B];
idx = fullfact([2 2 2 2]);
C = AB(sub2ind([2 4],idx,repmat(1:4,size(idx,1),1)))
This won't be sorted. You could presort idx so that it is:
idx = sortrows(idx,1:4)
2 commentaires
Sean de Wolski
le 11 Sep 2012
@Azzi: That won't work because idx is only referencing the row in AB. We need the column information also. Of course, if speed is the primary goal, a for-loop will smoke sub2ind() and day of the week...
Azzi Abdelmalek
le 10 Sep 2012
Modifié(e) : Azzi Abdelmalek
le 10 Sep 2012
A=[1 2 3 4];B=[5 6 7 8];
C=[];n=length(A);
for k=1:n
un=ones(2^(n-k),1);
C=[C repmat([A(k)*un; B(k)*un],2^(k-1),1)];
end
0 commentaires
Voir également
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!