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 :

Faire un graphe avec uniquement quelques données ciblées (sous condition d'un autre paramètre) [Débutant]


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 40
    Points : 32
    Points
    32
    Par défaut Faire un graphe avec uniquement quelques données ciblées (sous condition d'un autre paramètre)
    Bonjour,

    j'ai ce tableau de données (data) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    "Date";"Time";"Temp";"Quality"
    "D/M/Y";"hh:mm";"°C";"Numb"
    "18/11/2012";"03:01";0.028;4
    "19/11/2012";"03:16";0.027;1
    "20/11/2012";"03:31";0.029;1
    "21/11/2012";"03:46";0.03;4
    "22/11/2012";"04:01";0.03;1
    je suis entrain de faire un graphe "Temp" en fonction des "Date" (pour toutes les valeurs de la température), avec ce programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    d = importdata ('data.txt',';');
     
    D = strcat(d.textdata(3:end,1),{' '},d.textdata(3:end,2));
    Dn = datenum(D,'dd/mm/yy HH:MM');
     
    figure   
    subplot(5.5,1,1) ; 
    plot(Dn,d.data(:,1),'.')
    datetick
    ylabel('Temp [°C]')
    set(gca,'xticklabel',[])
    Mon but est de faire un graphe "Temp" en fonction des "Date", mais uniquement pour les valeurs de "Temp" qui correspondent aux valeurs de "Quality" qui sont égale a "1" :

    Merci d'avance pour votre aide et orientation

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

    Il te suffit de sélectionner les valeurs par indexage logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    quality = 1;
    Dn = datenum(D(d.data(:,2) == quality), 'dd/mm/yy HH:MM');
    Dernière modification par Invité ; 21/01/2014 à 23h03.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    merci pour votre réponse "Winjerome"

    j'ai essayé le scripte avec l' indexage logique, mais ça ne marche pas :
    voici ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    d = importdata ('data.txt',';');
    D = strcat(d.textdata(3:end,1),{' '},d.textdata(3:end,2));
    d.data(:,2)==1
    Dn = datenum(D(d.data(:,1) == d.data(:,2)),'dd/mm/yy HH:MM');
    
    figure   
    subplot(5.5,1,1) ; 
    plot(Dn,d.data(:,1)== d.data(:,2),'.')
    datetick
    ylabel('Temp [°C]')
    set(gca,'xticklabel',[])
    Matlab m'affiche une erreur dans "Dn", donc même pour "plot"

    je ne sais pas pourquoi, merci une autre fois pour votre aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    Erreur de ma part, c'est la colonne 2 et non 1 qui contient les valeurs "Quality". C'est corrigé dans mon message précédent.

    Remarque que d.data contient ces données numériques (colonne 1 en rouge, colonne 2 en vert) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    "Date";"Time";"Temp";"Quality"
    "D/M/Y";"hh:mm";"°C";"Numb"
    "18/11/2012";"03:01";0.028;4
    "19/11/2012";"03:16";0.027;1
    "20/11/2012";"03:31";0.029;1
    "21/11/2012";"03:46";0.03;4
    "22/11/2012";"04:01";0.03;1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    >> d.data
     
    ans =
     
        0.0280    4.0000
        0.0270    1.0000
        0.0290    1.0000
        0.0300    4.0000
        0.0300    1.0000
    On sélectionne alors les valeurs de la seconde colonne qui ont pour valeur quality = 1; :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >> d.data(:,2) == quality
     
    ans =
     
         0
         1
         1
         0
         1
    et utilisons ces indices logiques sur D seules les valeurs correspondant aux valeurs "vraies" 1 sont sélectionnées.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    merci "Winjerome"
    ça marche "Dn" :
    mais lorsque j'essaye avec "plot", toujours erreur ;

    Comme "Dn" :

    on l'a dèja définit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    quality = 1;
    Dn = datenum(D(d.data(:,2) == quality), 'dd/mm/yy HH:MM');
    normalement je devrai suivre la même logique pour plot:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(Dn, d.data(:,1)== quality,'.')
    mais là ça ne marche pas!!!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je te conseille de revoir attentivement mon dernier message.
    Que contient d.data(:,1) ? Que penses-tu faire en faisant d.data(:,1) == quality ?
    Regarde chaque partie

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 40
    Points : 32
    Points
    32
    Par défaut
    Oupps c'est vrai je me suis trompé dans la logique,

    Normalement comme ça, ça marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    m=d.data(:,1)
    a=m(d.data(:,2)== quality)
    plot(Dn,a,'.')
    j'attends votre réponse maître, afin de mettre "résolu" pour cette discussion

    merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Oui, c'est bon (des variables supplémentaires dont on pourrait se passer, mais c'est bon), tu peux aussi je pense le vérifier par toi-même

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

Discussions similaires

  1. comment faire un graphe avec " requete"
    Par nb-wissam dans le forum Excel
    Réponses: 4
    Dernier message: 14/09/2010, 15h38
  2. [ZF 1.10] faire des graph avec pchart et zend
    Par gogololo dans le forum Zend Framework
    Réponses: 1
    Dernier message: 03/09/2010, 11h27
  3. [VxiR2] graphe avec mois dans données
    Par nabie dans le forum Webi
    Réponses: 2
    Dernier message: 16/06/2009, 16h14
  4. Faire des graphes avec wxPython
    Par dedesite dans le forum wxPython
    Réponses: 6
    Dernier message: 26/02/2008, 21h42
  5. Mysql & mrtg : faire un graphe avec le contenu d'une tab
    Par fouhaa dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 12/08/2005, 12h38

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