permutations and combinations of column
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (2)
Sean de Wolski
am 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 Kommentare
Sean de Wolski
am 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
am 10 Sep. 2012
Bearbeitet: Azzi Abdelmalek
am 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 Kommentare
Siehe auch
Kategorien
Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!