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 :

Supprimer un groupe de lignes [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 40
    Par défaut Supprimer un groupe de lignes
    Bonjour


    J'ai encore un petit soucis avec Matlab:
    J'ai une matrice "loc" remplie de données au format "string".
    Je souhaiterais supprimer(grâce a une commande) les 7 premières ligne de cette matrice car je n'en ai pas besoin.
    J'ai déjà vu des postes à ce sujet mais les solutions ne fonctionnent pas dans mon cas.
    Par exemple, j'ai essayé cela(juste pour la première ligne):Pourriez vous me donne une piste?
    Cela peut paraître bête comme question mais je débute en Matlab!
    Merci d'avance pour vos réponses et bonne journée.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    La commande loc(1,:)=[]; me paraît tout à fait appropriée.
    Obtiens-tu un message d'erreur ou un résultat inattendu ?
    Que renvoie whos loc ?

    Voir aussi la FAQ Comment ajouter/supprimer des lignes/colonnes à un tableau ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 40
    Par défaut
    Non, aucun message d'erreur ne s'affiche, mais quand je fais l'opération pour les 6 lignes et que je regarde le résultat de l'opération dans la matrice, 3 lignes qui devaient pourtant être supprimées sont toujours là et du coup 3 autres lignes dont j'ai besoin ont été supprimées à la place.

    La commande whos loc renvoie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >> whos loc
      Name       Size             Bytes  Class    Attributes
     
      loc       97x9             106768  cell

  4. #4
    Invité
    Invité(e)
    Par défaut
    Quel code utilises-tu pour ces 6 lignes ? Si tu as une boucle, il faut faire attention au changement de dimension de ton tableau à chaque itération, et aux indices en conséquence.
    Généralement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    indicesAsupprimer = 1:6; % 6 premières lignes ici
    loc(indicesAsupprimer, :)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 40
    Par défaut
    Bonjour,

    j'ai trouvé la solution:
    ma boucle for de départ ressemblais à cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i=1:7
            loc(i,:)=[];
            end
    Cela supprimait la première ligne ce qui faisait remonter les suivantes d'une ligne mais le marqueur se placait sur la deuxième ligne ce qui créer un décalage et justifie l'existence des 3 lignes qui devaient être supprimer.
    J'ai donc rajouter une boucle for comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for b=1:7
        for i=1:1
            loc(i,:)=[];
        end
    end
    Cela empêche le décalage et mes 7 lignes sont supprimées comme il faut.

    Merci beaucoup pour votre aide, cela m'a bien servie!

    Bonne journée et encore merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Pas la peine d'avoir deux boucle for, une suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for b=1:7
        loc(1,:)=[];
    end
    C'est effectivement une solution, qui ne marchera que pour les N premières lignes.
    Outre la solution proposée précédemment, on peut faire le parcours avec une boucle for, mais à l'envers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i = 7:-1:1
        loc(i,:) = [];
    end

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/03/2006, 15h54
  2. [CSV] supprimer les retours à la ligne
    Par illegalsene dans le forum Langage
    Réponses: 3
    Dernier message: 09/01/2006, 16h14
  3. EXCEL : Additionner deux groupes de lignes
    Par repié dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/12/2005, 20h59
  4. Supprimer un saut de ligne
    Par spikto dans le forum Langage
    Réponses: 1
    Dernier message: 28/11/2005, 20h54
  5. [RegEx] supprimer les retours à la ligne
    Par illegalsene dans le forum Langage
    Réponses: 4
    Dernier message: 21/10/2005, 10h53

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