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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
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)
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
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 ?
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
A={A1 A2} b={B1 B2} C={C1 C2 C1C2}
Que contiennent les variables A1, A2, B1, B2... ?
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
ah non pardon je voulais dire :
A={'A1' 'A2'} b={'B1' 'B2'} C={'C1' 'C2'}
Essaie ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Ingénieur indépendant en mécatronique - Conseil, conception et formation
- Conception mécanique (Autodesk Fusion 360)
- Impression 3D (Ultimaker)
- Développement informatique (Python, MATLAB, C)
- Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)
« J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager