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 entre les valeurs de chaque ligne d'une matrice


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 10
    Points : 7
    Points
    7
    Par défaut combinaison entre les valeurs de chaque ligne d'une matrice
    Bonjour
    y a-t-il une fonction prédéfinie sous Matlab, sinon si quelqu'un peut m'aider à écrire un algo qui permet de générer en sortie toute les combinaisons entre chaque valeur de chaque ligne d'une matrice de taille (nxm où n est le nombre de lignes et m est le nombre de colonnes) donc la sortie doit être des vecteurs de tailles (1,n) concaténés et donc une matrice de taille (n,k) ou k est le nombre des vecteurs résultants de cette combinaison.
    Exemple:
    soit une matrice de taille (3x2)
    résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C= 
         1 1 1 1 2 2 2 2 
         4 4 5 5 4 4 5 5
         7 8 7 8 7 8 7 8
    merci d'avance

  2. #2
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Je ne pense pas qu'il y ait une fonction prédéfinie dans MatLab pour faire cela, mais je connais mal matlab.
    Ce que tu souhaites c'est calculer toutes les combinaisons.
    Nous avons très souvent débattu sur le sujet dans ce même forum. Fais donc une recherche dans les discussions et tu verras que la solution utilise une récursivité.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    comme l'a suggéré ToTo13, la fonction récursive n'est pas compliquée à programmer.

    Sinon, en utilisant les fonctions MATLAB, on peut faire :
    >> A = [1 2;4 5;7 8 ]
    
    A =
    
         1     2
         4     5
         7     8
    
    >> B = unique(nchoosek([ 1 2 1 2 1 2],3), 'rows');
    >> [A(1,B(:,1)).' A(2,B(:,2)).' A(3,B(:,3)).'].'
    
    ans =
    
         1     1     1     1     2     2     2     2
         4     4     5     5     4     4     5     5
         7     8     7     8     7     8     7     8
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Je ne sais pas si il existe une fonction Matlab pour faire ce que tu désires, mais c'est tout à fait faisable avec des boucles.

    Le nombre de combinaison possible, à l'instinct, est de nombreDeColonnesnombreDeLignes.

    Avec des boucles cela donne un truc de ce genre, à adapter selon ton cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    resultat = zeros(nombreDeLignes,nombreDeColonnes^(nombreDeLignes));
    % maMatrice = ...
    c=1;
     
    for i = 1:nombreDeColonnes
        for j = 1:nombreDeColonnes
            for k = 1:nombreDeColonnes % le nombre de boucle for nécessaire est égale au nombre de lignes
                resultat(:,c) = [maMatrice(1,i); maMatrice(2,j); maMatrice(3,k)];
                c=c+1;
            end
        end
    end
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/02/2015, 13h27
  2. combinaison entre les valeurs
    Par noussa309 dans le forum C
    Réponses: 2
    Dernier message: 08/12/2011, 15h29
  3. Réponses: 2
    Dernier message: 21/10/2011, 21h04
  4. Fonction Find sur chaque ligne d'une matrice creuse
    Par Mathieu999 dans le forum MATLAB
    Réponses: 13
    Dernier message: 11/02/2011, 14h04
  5. Réponses: 3
    Dernier message: 08/04/2009, 12h10

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