IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Combinaison vecteurs en matrice [Débutant]


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Points : 4
    Points
    4
    Par défaut Combinaison vecteurs en matrice
    Bonsoir j'ai 4 vecteurs Matlab comme suit:
    V1 [1 2 3]
    V2 [4]
    V3 [5]
    v4 [6 7]

    je veux avoir le code Matlab qui me permet d'avoir la matrice suivantes qui mentionne toutes les combinaisons possibles, autrement je dois avoir la matrice si dessous:
    1 4 5 6
    1 4 5 7
    2 4 5 6
    2 4 5 7
    3 4 5 6
    3 4 5 7

    SVP qui peut m'aidez
    Merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Solution trop force brute !
    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
    clear
    V1=[1 2 3];
    V2=[4];
    V3=[5];
    V4=[6 7];
    n=1;
    for i=1:length(V1)
        R=[];
        R=[R V1(i)];
        for j=1:length(V2)
            R=[R V2(j)];
            for k=1:length(V3)
                R=[R V3(k)];
                for l=1:length(V4)
                    R=[R V4(l)];
                    RR(n,:)=R;
                    R=R(1:3);
                    n=n+1;
                end
            end
        end
    end
    RR

  3. #3
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Points : 4
    Points
    4
    Par défaut Combinaison vecteurs en matrice Matlab
    Bonsoir, tout d'abord merci pour votre réponse ça marche bien mais en fait l'exemple que j'ai donné est plus simple que mon problème actuel. Dans mon problème j'ai 10 vecteurs à combiner les vecteurs sont comme suit:

    V1=[1 2 3 4 5]
    V2=[6 7]
    V3=[8 9]
    V4=[10 11]
    V5=[12 13 14 15 16]
    V6=[17 18]
    V7=[19 20]
    V8=[21]
    V9=[22 23]
    V10=[24]

    et j'ai doit avoir une matrice contenant toutes les combinaisons possibles. Bon j'ai essayé de faire des modifications dans votre code mais je n'ai pas réussi car il ya des lignes que je n'ai pas bien compris puisque je suis débutante en Matlab les lignes sont les suivantes:

    RR(n,: )=R;
    R=R(1:3);

    Bref, est ce que vous pouvez me donner la bonne solution après ces changements, toute en m'expliquant les lignes ci-dessus.
    Merci d'avance.

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Ce nouveau cas est un peu plus compliqué !
    Il faut chercher une solution sans boucles !

    Voilà pou les 5 premiers vecteurs, essaie d'aller jusqu'au bout :

    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
    34
    clear
    V1=[1 2 3 4 5];
    V2=[6 7];
    V3=[8 9];
    V4=[10 11];
    V5=[12 13 14 15 16];
    V6=[17 18];
    V7=[19 20];
    V8=[21];
    V9=[22 23];
    V10=[24];
    n=1;
    for i=1:length(V1)
        R=[];
        R=[R V1(i)];
        for j=1:length(V2)
            R=R(1:1);
            R=[R V2(j)];
            for k=1:length(V3)
                R=R(1:2);
                R=[R V3(k)];
                for l=1:length(V4)
                    R=R(1:3);
                    R=[R V4(l)];
                    for m=1:length(V5)
                        R=[R V5(m)];
                        RR(n,:)=R
                        R=R(1:4);
                        n=n+1;
                    end
                end
            end
        end
    end
    Formatage du vecteur résultat n étant le nombre de lignes et R la valeur à cet instant. Les deux points signifient "Toutes les colonnes"


    Préparation du vecteur suivant en enlevant la dernière valeur.

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut Combinaison vecteurs en matrice
    Bonjour,

    Tu peux faire tout simplement !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    allcomb(V1,V2,V3,V4,V5,V6,V7,V8,V9,V10)

  6. #6
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Points : 4
    Points
    4
    Par défaut
    Bonsoir, quand je tape cette ligne allcomb(V1,V2,V3,...) j'ai cette ligne d'erreur:

    ??? Undefined function or method 'allcomb' for input arguments of type 'double'.
    je m'essaye de trouver de solution mais je ne pas réussi

    Si vous pouvez m'aider

    Cordialement.

  7. #7
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,
    Bon j'ai essayé l'autre méthode que vous m'avez donné. Je mets quelques modifications et ça marche bien merci pour votre aide.
    Bonne journée.

  8. #8
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonsoir,
    Tu trouves la fonction allcob sur le site MathWorks => allcomb(varargin)

  9. #9
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Points : 4
    Points
    4
    Par défaut
    C'est bon j'ai travaillé avec l'autre méthode et ça marche bien merci beaucoup.
    Bonne nuit.

  10. #10
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,
    Maintenant j'ai une autre question:
    supposant que j'ai cette matrice des entiers:
    M= 1 2 3 4
    3 1 2 4
    1 2 3 2

    et je veux créer une matrice K correspondante à M de la manière suivante
    le 1 devient 5
    le 2 devient 6
    le 3 devient 7
    le 4 devient 8 càd je dois avoir cette matrice
    K= 5 6 7 8
    7 5 6 8
    5 6 7 6

    Si quelqu’un peut m'aider toute en m'expliquant le type de retour de cette instruction:
    M(1,2) ?? entier, cellule ou bien quoi ??
    Merci d'avance

  11. #11
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Tu peux t'inspirer de :

    M(1,2) te donne la valeur de la première ligne, deuxième colonne.

  12. #12
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Points : 4
    Points
    4
    Par défaut
    Bonsoir tout d'abord merci pour la solution proposée mais vraiment cette méthode nécessite un grand temps de calcul parce qu'elle génère une nouvelle matrice pour chaque itération
    voici le code que j'ai executé: (un petit exemple)
    W = [2 3; 4 5; 5 3]
    Z(W==2)=20
    Z(W==3)=30
    Z(W==4)=40
    Z(W==5)=50

    et voici la trace d'execution:
    W =

    2 3
    4 5
    5 3


    Z =

    20 3
    4 5
    5 3


    Z =

    20 30
    4 5
    5 30


    Z =

    20 30
    40 5
    5 30


    Z =

    20 30
    40 50
    50 30

    cela avec une matrice (2,3) alors dans mon cas: une matrice (1600,10) le temps de calcul va être énorme surtout que mon programme à des autres tâches à calculer .
    Donc j'aimerai bien avoir une méthode plus puissante qui me donne directement la matrice Z "finale" qui correspond à W.
    Cordialement.

  13. #13
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut Combinaison vecteurs en matrice
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    W = [2 3; 4 5; 5 3]
    Z=W;
    T=[20 30 40 50];
    WT=[2 3 4 5];
    for i=1:4
        Z(W==WT(i))=T(i);
    end
    Z

  14. #14
    Candidat au Club
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Valeurs et vecteurs propres matrice réelle
    Par The Ultimate Gibbon dans le forum Fortran
    Réponses: 2
    Dernier message: 23/09/2008, 15h13
  2. Réponses: 9
    Dernier message: 19/09/2008, 08h54
  3. Boost.uBlas et sous-vecteur de matrice
    Par Le Farfadet Spatial dans le forum Boost
    Réponses: 11
    Dernier message: 30/04/2008, 23h25
  4. Empiler des éléments de N vecteurs en Matrice?
    Par maiza_med dans le forum MATLAB
    Réponses: 3
    Dernier message: 28/04/2008, 11h56
  5. [Débutant] Manipulation de vecteurs et matrices
    Par nanath02 dans le forum MATLAB
    Réponses: 6
    Dernier message: 04/11/2007, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo