supposons qu'on a 3 ensembles
A={A1 A2} b={B1 B2} C={C1 C2}
comment faire pour avoir toutes les combinaisons possibles avec un element de A en premiere position et un element de B en 2eme et C en 3eme.
merci
Version imprimable
supposons qu'on a 3 ensembles
A={A1 A2} b={B1 B2} C={C1 C2}
comment faire pour avoir toutes les combinaisons possibles avec un element de A en premiere position et un element de B en 2eme et C en 3eme.
merci
Bonjour,
je ne pense pas que cela soit la solution la plus optimum, mais tu pourrais utiliser des boucles for.
ex :Si tu connais le nombre de combinaisons possible tu peux faire une pré-allocation de ta variable de stockage, de même, tu pourrais faire une boucle for pour remplir le rôle de la variable num_combinaison.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 num_combinaison = 0; taille_a = size(A); for num_a = 1 : 1 : taille_a(2) taille_b = size(B); for num_b = 1 : 1 : taille_b(2) taille_c = size(C); for num_c = 1 : 1 : taille_c(2) num_combinaison = num_combinaison +1; maVar{num_combinaison} = { A{num_a} B{num_b} C{num_c}} ; end end end
Il "suffit" de coder les positions "en dur" dans le code :
ce qui donne :Code:
1
2
3
4
5 A = [1 2]; B = [3 4]; C = [5 6]; M = [A([1 1 1 1 2 2 2 2]) ; B([1 1 2 2 1 1 2 2]) ; C([1 2 1 2 1 2 1 2])].'
Non ?Code:
1
2
3
4
5
6
7
8
9
10 M = 1 3 5 1 3 6 1 4 5 1 4 6 2 3 5 2 3 6 2 4 5 2 4 6
le problème c'est que je ne sais pas le nombre des ensembles ni le nombre des éléments de ces ensembles.
Ils sont saisis par l'utilisateur :)
Cette contribution devrait faire l'affaire : ALLCOMB by Jos (10584)
Dut, trés bonne idée mais ça marche seulement avec les variables de type double
Pourrais-tu nous montrer un exemple avec le type de valeur que tu souhaites réellement manipuler ?
A={A1 A2} b={B1 B2} C={C1 C2 C1C2}
Que contiennent les variables A1, A2, B1, B2... ?
ah non pardon je voulais dire :
A={'A1' 'A2'} b={'B1' 'B2'} C={'C1' 'C2'}
Essaie ceci :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 A = {'A1' 'A2'}; B = {'B1' 'B2'}; C = {'C1' 'C2'}; ABC = [A B C]; [uABC,a,b] = unique(ABC); for n = 1:numel(A) idx = strcmp(A{n},uABC); Ad(n) = a(idx); end for n = 1:numel(B) idx = strcmp(B{n},uABC); Bd(n) = a(idx); end for n = 1:numel(C) idx = strcmp(C{n},uABC); Cd(n) = a(idx); end Xd = allcomb(Ad,Bd,Cd); X = cell(size(Xd)); for m = 1:size(Xd,1) for n = 1:size(Xd,2) X{m,n} = uABC{Xd(m,n)}; end end X
oui ça marche
merci :ccool: