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 des valeurs d'une matrice [Débutant]


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Simulation numérique - Hydrodynamisme
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Simulation numérique - Hydrodynamisme
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Supprimer des valeurs d'une matrice
    Bonjour à tous,

    Je souhaite supprimer des valeurs d'une matrice en réalisant une boucle sur ses indices. Le petit code que j'ai écrit est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for i=1: ...
        if  n_cycles(i)==0
     
            n_cycles(i)=[];
            xcenters(i)=[];
     
        end
    end
    Le problème se situe au niveau de l'arrêt de la boucle. Ayant un vecteur "n_cycles" variant en dimension si la condition "if" est vérifiée, je me trouve face à l'erreur de dimension de matrice lorsque ma boucle for excède les dimensions du mon nouveau vecteur "n_cycles".

    Je souhaite donc pouvoir corriger ce petit défaut qui me fait pour ainsi dire tourner en rond.

    Si quelqu'un à une petite idée pour me débloquer, n'hésitez pas!

    Maxime

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Il y a trois solutions.

    Soit tu parcours le tableau en commençant par sa fin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i = numel(n_cycles):-1:1
        if n_cycles(i)==0
            n_cycles(i) = [];
            xcenters(i) = [];
        end
    end
    Soit tu stockes les indices dans la boucle et tu supprimes les valeurs correspondantes à la fin du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    k = 0;
    for i = 1:numel(n_cycles)
        if n_cycles(i)==0
            k = k+1;
            idx(k) = i;
        end
    end
     
    n_cycles(idx) = [];
    xcenters(idx) = [];
    Soit tu te passes de la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    idx = n_cycles==0;
     
    n_cycles(idx) = [];
    xcenters(idx) = [];
    Voir la FAQ : Qu'est-ce que l'indexage logique ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Simulation numérique - Hydrodynamisme
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Simulation numérique - Hydrodynamisme
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Super merci!

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

Discussions similaires

  1. Supprimer aléatoirement des valeurs d'une matrice
    Par MATLAB2008 dans le forum MATLAB
    Réponses: 6
    Dernier message: 30/04/2008, 19h29
  2. Réponses: 2
    Dernier message: 09/03/2008, 07h45
  3. Supprimer des lignes dans une matrice
    Par Ptinéwik dans le forum MATLAB
    Réponses: 7
    Dernier message: 30/01/2008, 13h55
  4. Extraire des valeurs d'une matrice
    Par Kcyril dans le forum MATLAB
    Réponses: 4
    Dernier message: 23/04/2007, 14h59
  5. tri des valeurs d'une matrice
    Par suzanne loubert dans le forum Langage
    Réponses: 2
    Dernier message: 07/12/2005, 03h47

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