Generate all possible combinations for the column vectors of a matrix
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MOHAMMED ABDELGHANI BOUCHAALA
le 18 Nov 2019
Commenté : MOHAMMED ABDELGHANI BOUCHAALA
le 18 Nov 2019
If B=[1; 2] and A=[B B B...(n times B)], how to obtain the matrix C corresponding to all the possible combinations between the column vectors of A .i.e. i want to get the combinations between n copies of the same vector :
For example, for n=3 :
A =
1 1 1
2 2 2
So, 'C' can be obtained using "allcomb" function: "C=allcomb(A(:,1),A(:,2),A(:,3))"
C =
1 1 1
1 1 2
1 2 1
1 2 2
2 1 1
2 1 2
2 2 1
2 2 2
In my case n is variable. How to obtain C for any value of n ?
0 commentaires
Réponse acceptée
James Tursa
le 18 Nov 2019
Modifié(e) : James Tursa
le 18 Nov 2019
E.g.,
>> B = [1;2];
>> n = 3;
>> Bcell = arrayfun(@(k)B,1:n,'uni',false);
>> C = allcomb(Bcell{:})
Warning: NARGCHK will be removed in a future release. Use NARGINCHK or NARGOUTCHK
instead.
> In allcomb (line 63)
C =
1 1 1
1 1 2
1 2 1
1 2 2
2 1 1
2 1 2
2 2 1
2 2 2
>> n = 4;
>> Bcell = arrayfun(@(k)B,1:n,'uni',false);
>> C = allcomb(Bcell{:})
Warning: NARGCHK will be removed in a future release. Use NARGINCHK or NARGOUTCHK
instead.
> In allcomb (line 63)
C =
1 1 1 1
1 1 1 2
1 1 2 1
1 1 2 2
1 2 1 1
1 2 1 2
1 2 2 1
1 2 2 2
2 1 1 1
2 1 1 2
2 1 2 1
2 1 2 2
2 2 1 1
2 2 1 2
2 2 2 1
2 2 2 2
Another way to make Bcell is
Bcell = {B}; Bcell(2:n) = Bcell(1);
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Structures 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!