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 :

Plot matrice avec 'NaN'


Sujet :

MATLAB

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur motoriste
    Inscrit en
    Février 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur motoriste
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 76
    Points : 52
    Points
    52
    Par défaut Plot matrice avec 'NaN'
    Bonjour,

    Je souhaite tracer cette matice:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    NaN	200	400	600	800	1000	1200	1400	1600	1800
    300	16,0689194957098	16,5656202429303	16,7107877193009	17,9445176976875	19,3448948609836	21,7302480513081	23,0913543062745	26,2900844130221	32,0530379653791
    550	NaN	NaN	NaN	NaN	NaN	NaN	NaN	28,2591881904194	32,1969188935099
    600	NaN	NaN	NaN	NaN	NaN	27,1516943332136	31,5092897184452	NaN	NaN
    700	NaN	NaN	17,7330447685187	19,6977174679838	23,0863744350990	NaN	NaN	NaN	NaN
    750	NaN	16,8055359343979	NaN	NaN	NaN	NaN	NaN	NaN	NaN
    850	NaN	NaN	NaN	NaN	NaN	NaN	NaN	31,8269654994736	34,8391797102234
    900	16,1423357102319	NaN	NaN	NaN	NaN	26,8951976890249	29,9900301927223	NaN	NaN
    1100	NaN	NaN	19,7148938546681	22,3730107049510	26,9375594453520	NaN	NaN	34,8848149957262	44,3229873362540
    1200	NaN	NaN	NaN	NaN	NaN	29,8788211597820	34,6030251683176	NaN	NaN
    1250	NaN	17,9747067879352	NaN	NaN	NaN	NaN	NaN	NaN	NaN
    1500	16,7066790527492	NaN	22,4788913066092	25,9121547050970	32,7009662459308	NaN	NaN	NaN	NaN
    1700	NaN	19,7610591671686	NaN	NaN	NaN	NaN	NaN	NaN	NaN
    2100	17,6472361192127	NaN	NaN	NaN	NaN	NaN	NaN	NaN	NaN
    J'ai donc essayé plusieurs méthodes mais impossible de remplacer les NaN pour obtenir des droites.

    Voici un code avec des points tracés:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(nom_matrice(2:end,1),nom_matrice(2:end,2:end),'o')
    Merci par avance pour votre aide.


  2. #2
    Membre du Club
    Homme Profil pro
    Ingénieur motoriste
    Inscrit en
    Février 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur motoriste
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 76
    Points : 52
    Points
    52
    Par défaut
    J'ai fini par trouver une solution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
           mydata=load ([getappdata(0,'fichier') '\Temp_retour_matrice']);
            Temp_retour_matrice_0=mydata.Temp_retour_matrice;
            Temp_retour_matrice_0(Temp_retour_matrice_0 == 0) = NaN;
            taillemat=size(Temp_retour_matrice_0);
            nCourbes = taillemat(1,2)-1;
            couleurs = hsv(nCourbes);
            for i=2:1:taillemat(1,2)
                    Nmat=~isnan(Temp_retour_matrice_0);
                    increment=0;
                    for k=2:1:taillemat(1,1)
                        if Nmat(k,i)==1
                            increment=increment+1;
                            vectx(increment,1)=Temp_retour_matrice_0(k,1);
                            vecty(increment,1)=Temp_retour_matrice_0(k,i);
                        end
                    end
                    plot(vectx,vecty,'color',couleurs(i-1,:),'LineWidth',1.5);
                    clear vectx vecty;
                    hold on
    end

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

    Une autre solution en interpolant les points NaN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    nCourbes = size(nom_matrice,2)-1;
    couleurs = hsv(nCourbes);
    for k = 2:nCourbes+1
        idx = [true ; isnan( nom_matrice(2:end,k) )];
        nom_matrice(idx,k) = interp1(nom_matrice(~idx,1), nom_matrice(~idx,k), nom_matrice(idx,1));
    end
    set(gca, 'ColorOrder', couleurs)
    plot(nom_matrice(2:end,1),nom_matrice(2:end,2:end),'-o')

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur motoriste
    Inscrit en
    Février 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur motoriste
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 76
    Points : 52
    Points
    52
    Par défaut
    Merci pour cette réponse plutôt très utile pour d'autres cas mais dans le miens je ne souhaite par faire d'interpolation afin d'avoir seulement des points mesurés
    Mais cette réponse permet d'avoir un code beaucoup plus simple.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Dans ce cas, c'est encore plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    nCourbes = size(nom_matrice,2)-1;
    couleurs = hsv(nCourbes);
    set(gca, 'ColorOrder', couleurs)
    hold all
    for k = 2:nCourbes+1
        idx = [true ; isnan( nom_matrice(2:end,k) )];
        plot(nom_matrice(~idx,1), nom_matrice(~idx,k), '-o')
    end

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur motoriste
    Inscrit en
    Février 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur motoriste
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 76
    Points : 52
    Points
    52
    Par défaut
    Je m'excuse pour le retard. Merci beaucoup pour cette n-ième aide.

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

Discussions similaires

  1. matrices avec vector
    Par dev0077 dans le forum SL & STL
    Réponses: 10
    Dernier message: 30/09/2007, 18h59
  2. Matrice avec trois indices
    Par uknico dans le forum C
    Réponses: 3
    Dernier message: 28/05/2007, 19h00
  3. Créer un type matrice avec des templates
    Par souading3000 dans le forum C++
    Réponses: 2
    Dernier message: 15/06/2006, 11h24
  4. Redimensionner une matrice avec "reshape"
    Par kmaniche dans le forum Images
    Réponses: 9
    Dernier message: 07/06/2006, 18h35
  5. Calculer un inverse de matrice avec boost?
    Par Clad3 dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 02/06/2005, 18h38

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