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 :

Bloquer le parcours d'une colonne d'une matrice pour trouver une valeur dans la seconde


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Points : 14
    Points
    14
    Par défaut Bloquer le parcours d'une colonne d'une matrice pour trouver une valeur dans la seconde
    Bonjour,

    j'ai une matrice
    P = [x1 y1
    x1 y2
    x1 y3
    x2 y4
    x2 y5
    x3 y6
    x3 y7...]
    je n'arrive pas à dire à Matlab:
    tu cherches pour x1 quel est le plus grand yi, une fois que tu l'as trouvé tu passes à x2 et tu cherches le plus grand yi...jusqu'à la fin de la matrice, et tu mets ces points dans une nouvelle matrice.

    J'essai un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for i = 1 : n
         while P(i+1,1) = P(i,1)
                 for j = 1 :n
                      if P(j,2) == max P(j,2)
                      Q = [P(i,1) P(j,2)] 
                      end
                 end
          end
    end
    mais il bloque à cause de P(i+1,1) qui sort de la matrice...
    Comment je peux m'en sortir?

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Une solution un peu bourrin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    x_list = unique(P(:,1));
    for i_x = 1:length(x_list)
        Q(i_x,1) = x_list(i_x);
        Q(i_x,2) = max(P(P(:,1)==x_list(i_x),2));
    end
    Ca doit être largement optimisable mais c'est l'idée...

    Bonne journée,
    Duf

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    Merci c'est exactement ce que je voulais.

    Je ne connaissais pas unique et length.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 307
    Points : 52 887
    Points
    52 887
    Par défaut
    Citation Envoyé par duf42 Voir le message
    Ca doit être largement optimisable mais c'est l'idée...
    Une légère optimisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Q(:,1) = unique(P(:,1));
    for n = 1:size(Q,1)
        Q(n,2) = max(P(P(:,1)==Q(n,1),2));
    end

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    Merci

Discussions similaires

  1. [SQL Server] syntaxe pour ajouter une colonne à une table
    Par gloglo dans le forum Langage SQL
    Réponses: 8
    Dernier message: 10/09/2009, 11h43
  2. pb pour selectionner une colonne
    Par 123quatre dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/06/2007, 11h54
  3. Macro pour traiter une colonne en relatif
    Par jacques64 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 14/06/2007, 12h53
  4. [HTML] Pb pour inserer une colonne dans un tableau
    Par cchampion2fr dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 11/11/2006, 11h41
  5. Petite astuce pour compléter une colonne
    Par grotoumou dans le forum Access
    Réponses: 6
    Dernier message: 12/09/2006, 15h15

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