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 :

Trier des lignes de matrices


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Trier des lignes de matrices
    Bonjour,

    Comme vous pouvez vous en douter, je débute sur Matlab et je bute sur un truc qui est sûrement bateau (j'arrive à le faire sur R mais je voudrais apprendre à le faire sur Matlab).

    Alors voilà :
    J'ai une grosse matrice de 3 colonnes (coordonnées X Y Z de points)
    Je voudrais sélectionner les points ayant des coordonnées X Y particulières.
    Le but au final est de créer une sorte de buffer autour d'un point GPS pour avoir la hauteur minimum (Z minimum) autour de ce point.

    Mon soucis, c'est que je n'arrive pas à sélectionner la ligne ENTIERE.

    Exemple avec une matrice banale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    test = [1 1 3;1 2 4;2 1 5:2 2 6;1 3 6;3 1 9;3 3 6; 3 2 2; 2 3 4]
    test =
     
         1     1     3
         1     2     4
         2     1     5
         2     2     6
         1     3     6
         3     1     9
         3     3     6
         3     2     2
         2     3     4
    Je veux les lignes pour lesquelles la première colonne a des valeurs de 1 ou 2

    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    test(test(:,1)<2.5)
     
    ans =
     
         1
         1
         2
         2
         1
         2
    Comme vous le voyez, je ne récupère que la première colonne.

    Dans la mesure où, au final j'aurais besoin de trier selon les coordonnées X ET Y, j'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    test(test(:,1)<2.5 & test(:,2)<2.5)
     
    ans =
     
         1
         1
         2
         2
    Même punition, même si je lui demande de trier selon la première et la deuxième colonne, il ne me renvoie que la première.



    Pour ceux qui connaissent R, j'essaie en gros de faire des subset en fonction des valeurs de la 1ère et 2ème colonne.


    Merci pour vos réponses

  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 : 39
    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,

    Essaye comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test(test(:,1)<2.5 & test(:,2)<2.5,:)
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    C'est parfait merci !
    Ca me faisait suer de faire une boucle pour si peu.

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test(test(:,1)<2.5 & test(:,2)<2.5,:)
    En bleu pour les ligne et en rouge pour les colonnes je suppose ?
    (pourquoi n'y avais-je pas pensé avant )

  4. #4
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Citation Envoyé par Esil90 Voir le message
    En bleu pour les ligne et en rouge pour les colonnes je suppose ?
    C'est bien ca
    Si tu n'as pas l'habitude de la programmation Matlab, tu trouveras des infos intéressantes dans la faq : l'indexage linéaire/logique (utilisé ici), et les opérations sur les tableaux.

Discussions similaires

  1. Trier des lignes de façon aléatoire
    Par schwinny dans le forum Excel
    Réponses: 3
    Dernier message: 13/06/2008, 10h28
  2. trier des lignes
    Par remslol dans le forum Excel
    Réponses: 1
    Dernier message: 05/06/2008, 20h17
  3. [MySQL] Trier des lignes d'un tableau aléatoirement
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/03/2008, 22h30
  4. Réponses: 11
    Dernier message: 10/03/2008, 13h49
  5. Trier des lignes par ordre alphabétique ?
    Par Evocatii dans le forum Eclipse
    Réponses: 0
    Dernier message: 11/08/2007, 12h26

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