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


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur énergie
    Inscrit en
    Octobre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur énergie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Supprimer des lignes d'une matrice
    Salut tout le monde !

    J’espère que vous allez bien et que vous serez en mesure de répondre à mon problème, qui est le suivant :

    Je cherche à afficher une courbe de polarisation pour un système donné. Pour cela j'ai un fichier excel avec les variables qui m'intéressent : l'état du système (2, 3, 4, 5), la tension mesurée (colonne 2), et le courant mesuré (colonne 3). J'ai importé ces données et les ai placées dans une matrice 3 colonnes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Matrice_globale =
     
        2.0000    1.6380    1.3167
        2.0000    1.6380    1.3250
        3.0000    0.7355    1.2578
        4.0000    0.9945    2.2635
        4.0000    0.9950    2.2524
        5.0000    1.4570    1.5498
        5.0000    1.4520    1.5588
        2.0000    1.6380    1.2786
        2.0000    1.6380    1.2868
    J'aimerais dans un premier temps ne garder dans cette matrice que les lignes correspondant à l'état 4 du système (les lignes 6 et 7 dans cet exemple), chose que je n'arrive pas vraiment à faire, la grande majorité des solutions proposées sur google sont pour supprimer des lignes de 0 ou avec NaN.

    Ensuite je trie ces valeurs pour avoir la colonne 3 dans l'ordre croissant, et je peux tracer ma courbe. Courbe totalement affreuse, je voudrais donc afficher une courbe de tendance, comme sur Excel, voire même n'afficher que cette courbe de tendance si possible. Je n'ai pas encore beaucoup cherché pour ce dernier point je l'avoue, la journée fut longue, mais toute aide sera la bienvenue.

    Voila, si vous avez quelques minutes pour répondre à un novice en la matière, ne vous gênez pas

    En attendant, bonne soirée !

  2. #2
    Membre confirmé
    Homme Profil pro
    Éternel universitaire
    Inscrit en
    Avril 2012
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Éternel universitaire

    Informations forums :
    Inscription : Avril 2012
    Messages : 421
    Points : 639
    Points
    639
    Par défaut
    Salut,

    Citation Envoyé par Chaos_31 Voir le message
    J'aimerais dans un premier temps ne garder dans cette matrice que les lignes correspondant à l'état 4 du système (les lignes 6 et 7 dans cet exemple), chose que je n'arrive pas vraiment à faire, la grande majorité des solutions proposées sur google sont pour supprimer des lignes de 0 ou avec NaN.
    Regarde du côté de l'indexation logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Matrice_globale(Matrice_globale(:,1)~=4,:)=[];
    Citation Envoyé par Chaos_31 Voir le message
    Ensuite je trie ces valeurs pour avoir la colonne 3 dans l'ordre croissant
    C'est la fonction sort qui t'intéresse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [~,id]=sort(Matrice_globale(:,3),'ascend');
    Matrice_globale=Matrice_globale(id,:);
    Citation Envoyé par Chaos_31 Voir le message
    je voudrais donc afficher une courbe de tendance, comme sur Excel, voire même n'afficher que cette courbe de tendance si possible. Je n'ai pas encore beaucoup cherché pour ce dernier point je l'avoue, la journée fut longue, mais toute aide sera la bienvenue.
    Pour les courbes de tendance, j'utilise le plus souvent polyfit. La documentation est bien faite et te fournie de nombreux exemples https://www.mathworks.com/help/matlab/ref/polyfit.html Je te laisse essayer

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur énergie
    Inscrit en
    Octobre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur énergie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Salut !

    Merci beaucoup pour ton aide, ça marche du tonnerre. A vrai dire j'avais déjà regardé l'indexation logique mais j'étais un peu perdu avec toutes les parenthèses, : et autres signes, je ne comprenais pas qui correspondait à quoi. De bon matin ça va tout de suite mieux.

    C'est la fonction sort qui t'intéresse.
    En effet, mais j'ai trouvé quelque chose de plus simple (enfin je pense), en créant une autre matrice avec juste ce qui m'intéresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Matrice_tri = sortrows(Matrice_globale, 3);
    Pour la courbe de tendance, après avoir bataillé longuement et trouvé que les NaN dans ma matrice faisaient tout foirer, j'ai pu obtenir ce que je voulais avec polyfit, même si le résultat n'est pas aussi joli que sur Excel.
    Merci encore !

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

Discussions similaires

  1. Problème pour inverser des lignes d'une matrice
    Par breizh297 dans le forum MATLAB
    Réponses: 7
    Dernier message: 21/05/2010, 18h00
  2. Réponses: 3
    Dernier message: 25/12/2009, 09h29
  3. Insérer des lignes dans une matrice
    Par you_go dans le forum Fortran
    Réponses: 2
    Dernier message: 21/08/2009, 12h10
  4. Supprimer des lignes dans une matrice
    Par Ptinéwik dans le forum MATLAB
    Réponses: 7
    Dernier message: 30/01/2008, 13h55
  5. [VBA] Supprimer des lignes dans une table
    Par shadockgreg dans le forum Access
    Réponses: 6
    Dernier message: 22/11/2006, 09h58

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