Octave - Graphique en fonction de l'heure - Problème de pas temps de temps
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Octave - Graphique en fonction de l'heure - Problème de pas temps de temps



  1. #1
    invitecab2dd19

    Exclamation Octave - Graphique en fonction de l'heure - Problème de pas temps de temps


    ------

    Bonjour à tous,

    Je fais appel à votre aide car je n'arrive pas à tracer mes valeurs de températures en fonction de l'heure (HH:MM:SS) sous Octave.

    Je n'ai aucun problème sur l'extraction des données du fichier d'origine qui est un .CSV . Je sors de la lecture de ce fichier une matrice K dans laquelle les 6 premières colonnes correspondent dans l’ordre à l'année, le mois, le jour, heure, minute, seconde. Les colonnes suivantes correspondent aux valeurs de températures des différents thermocouples.

    Mon problème vient du pas de temps, qui est de 20s. En fait, j'arrive à tracer la température en fonction du temps, avec l'heure sous la forme HH:MM:SS. Mais je n'arrive pas à faire correspondre à chaque point l'heure qui lui correspond. Ce qui est génant!! J'ai essayé de mettre le pas de temps suivant (20/3600)/24 qui correspond à ce que représente 20s dans 24h, mais sans succès. Je ne pas comment on doit fixer ce pas de temps dans Octave, lors de la définition du x_tick.

    L'idée est que le tracé soit automatisé, c'est à dire que l'on ait pas besoin de rentrer une heure de début et de fin puisqu'elles sont contenues dans le .CSV.

    Peut être que je m'y prends mal pour créer le vecteur temps, je fais ça en autodidacte...

    Ci joint vous trouverez le tracé de la courbe actuel, un aperçu de la matrice k en question et le fichier brut .CSV des températures avec les heures initiale et finale.

    Pouvez vous m'aidez?? N'hésiter pas à me poser des questions si ma demande n'est pas claire.

    Étienne


    Voici le code:

    clear all; close all; clc;

    nomtemp=('temp_11020918.CSV');
    k=dlmread(nomtemp,'/,:',1,0);
    datejour=[k(:,1) k(:,2) k(:,3) k(:,4) k(:,5) k(:,6)];
    v = datevec(datejour);
    dateo=datenum(datejour);


    figure(1)
    k=dlmread(nomtemp,'/,:',1,0);
    datejour=[k(:,1) k(:,2) k(:,3) k(:,4) k(:,5) k(:,6)];
    dateo=datenum(datejour);
    plot(k(:,9));
    xlabel('Heure');
    grid('on');
    i=length(dateo);
    x_tick=dateo(1)20/3600)/24:dateo(i);
    set(gca,'XTickLabel',cellstr(d atestr(x_tick,'HH:MM:SS')))

    -----
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

  2. #2
    lou_ibmix_xi

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    L'idée est que le tracé soit automatisé, c'est à dire que l'on ait pas besoin de rentrer une heure de début et de fin puisqu'elles sont contenues dans le .CSV.
    Je ne vois pas où est-ce que tu entres la date de début et la date de fin, qui sont de toute façon facilement accessible grâce à respectivement
    Code:
    datejour(1)
    et
    Code:
    datejour(end)
    .
    En revanche, tu peux franchement simplifier ta manipulation des dates puisque tu peux directement utiliser
    Code:
    k(:, 1:6)
    comme argument de
    Code:
    datestr

  3. #3
    invitecab2dd19

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    Merci pour le tuyau concernant la manipulation des dates. Cependant je ne suis pas plus avancé. J'ai toujours un problème, soit au niveau de datenum, en fait les valeurs contenues dans la matrice datenum(datejour) sont identiques, soit au niveau de la définition du pas de temps.

  4. #4
    Xoxopixo

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    Bonsoir,

    soit je n'ai pas bien compris, ou soit je ne vois aucun probleme ici.
    Sans même regarder le code, la courbe ne correspond-elle pas aux données ?
    j'ai bien l'impression que oui, du moins avec l'extrait des données du .csv présenté.

    Si l'apparence du probleme vient du fait que l'on ait de vilaines barres horizontales, c'est simplement du au fait que les valeurs de temperatures successives sont bel et bien constantes.
    519 ou 520 au début plusieurs fois par exemple.

    L'espace entre les points depend bien du Tick, mais c'est aussi le même entre des points relies par des diagonales, c'est moins visible, c'est tout.

    Mais peut-être n'ai-je pas saisi la nature du probleme ?

  5. A voir en vidéo sur Futura
  6. #5
    invitecab2dd19

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    En effet, la courbe correspond aux données mais c'est du "bricolage" j'ai trouvé un pas de temps empirique à appliquer lors de la création de x_tick. Cela correspond assez bien mais ce n'est pas rigoureux et surtout ce n'est pas non pas répétable. L'idée est de tracer automatiquement les courbes à partir du point CSV quelque soit la longueur de la matrice. Le pas de temps entre chaque mesure est de 20s expérimentalement.
    Ce n'est pas problème de température constante, ces relevés proviennent du réacteur d'un process pilote et on veut une température constante durant les essais.
    En fait je veux tracer la température en fonction de l'heure et pour chaque point que l'heure sur le graphique corresponde bien à l'heure du fichier CSV. Ce n'est pas le cas actuellement.

  7. #6
    Xoxopixo

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    d'accord je vois mieux,
    C'est la courbe qui n'est pas proportionelle au cadre.
    Je regarde ça.

  8. #7
    Xoxopixo

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    Cette valeur (20/3600)/24
    n'a à mon avis rien a voir avec le probleme.
    Il n'y a pas de lien entre la taille de la chaine heure et le temps.
    Une fois que tu as choisi un ecart pour ta courbe, il te suffit de donner une valeur x_tick correspondante.
    A chercher par tatonnement peut-être.

    La courbe est bien tracée independament du cadre ?
    Je ne connais pas le langage d'Octave, même si ça me parait compréhensible ici. Donc je prefere demander.

    plot(k(:,9));
    c'est le tracé des données issu de l'enregistrement k du csv suite au dlmread
    et
    set(gca,'XTickLabel',cellstr(d atestr(x_tick,'HH:MM:SS')))
    c'est le tracé de la courbe.

    Donc normalement tu peut trouver une valeur entiere pour x_tick qui fasse correspondre les deux tracés, non ?

  9. #8
    invitecab2dd19

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    Citation Envoyé par Xoxopixo Voir le message
    Donc normalement tu peut trouver une valeur entiere pour x_tick qui fasse correspondre les deux tracés, non ?
    C'est cette valeur que je veux trouver et il faut que cela soit automatique, sinon ce n'est pas intéressant. L'idée c'est de gagner du temps.

    En attendant je trace les courbes en fonction d'un vecteur temps temps qui prend en compte le pas de temps de 20s. de 0 à X min. Mais il nous faut le tracé en fonction de l'heure, car c'est elle est qui nous sert de référence pour le changement des paramètres opératoires.

  10. #9
    Xoxopixo

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    Citation Envoyé par trixera
    C'est cette valeur que je veux trouver et il faut que cela soit automatique
    Pourquoi elle bougerais ?

    Je vois.

    Tu cales bien ton x_tick par estimation avec disons 20s pour l'ecart connu. Une fois cette operation faite, il te suffit de vérifier que les ecarts de ton fichier .csv correspondent bien à 20s
    En prennant les deux premieres valeurs par exemple.
    Si l'ecart est different de 20s tu ajuste ton x_tick en le multipliant ou divisant exactement par le rapport 20s/(Valeur nouvelle du fichier .csv)
    Cette operation peut d'ailleurs être faite dans tous les cas.
    20s/20s = 1

    La question etant evidement de savoir si ton fichier .csv est homogene, toutes les valeurs successives avancent t-elles avec une valeur de pas fixe ? (20s par exemple ici).
    Si oui, ça devrait fonctionner d'apres moi.

  11. #10
    invitecab2dd19

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    En fait j'ai déjà fait cela mais pour une autre manip avec ce même pas de temps "empirique" ça ne fonctionne plus.
    Le pas de temps expérimental est constant et égal à 20s durant toute la durée des manips. Je pense qu'il faudrait relier la longueur de la matrice au calcul de ce pas de temps mais toute les combinaisons logique que j'ai testé ne fonctionne pas. Dans la documentation, ils disent que le pas de temps doit être relié à la durée d'une journée 24h. (20/3600)/24 ne fonctionne pas non plus. C'est vraiment bizarre le fonctionnement du traceur d'octave avec les heures, je ne comprends pas trop comment ça marche.

  12. #11
    Xoxopixo

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    Citation Envoyé par Xoxopixo
    La courbe est bien tracée independament du cadre ?
    Je ne connais pas le langage d'Octave, même si ça me parait compréhensible ici. Donc je prefere demander.
    Ok, je crois comprendre.
    Le tracage Plot est lié au x_tick comme l'est le cadre...
    x_tick c'est une variable réservée ?

    le x_tick doit aussi être spécifié avant le plot ?
    Il y a des chances que la lecture de figure(1) par l'interpreteur se fasse en sequentiel sur Octave.

  13. #12
    invitecab2dd19

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    Oui c'est ça la courbe est tracé indépendamment du cadre, c'est gênant. En fait le x_tick c'est moi qui l'est fixé. La solution serait peut être pour le x_tick de ne pas fixer le pas de temps mais le nombre d'incrément pour l'interpolation ( nombre de mesure - 1)
    Le x_tick est en général spécifié après le plot.

  14. #13
    invitecab2dd19

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    Il y a peut une piste à exploiter avec la fonction linspace, je sais essayer ça.

  15. #14
    Xoxopixo

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    D'accord,
    donc le plot avance apres chaque lecture d'un incrément.
    Puisqu'il ne fait à aucun moment reference à l'heure, ça serait pratique du reste.
    k=dlmread(nomtemp,'/,:',1,0);
    c'est spécifié ici ? le 1 ?

    Puisque Plot(k(:,9)); ne fait reference qu'à la colonne 9 du .csv
    Ca doit bien être défini quelque-part ?

  16. #15
    invitecab2dd19

    Re : Octave - Graphique en fonction de l'heure - Problème de pas temps de temps

    En fait j'ai trouvé la solution je trace mon graph en fonction de l'heure mais en base 100. Par exemple pour 17h30 j'ai 17,5. C'est largement suffisant pour ce que j'ai à faire.
    Vous savez s'il y a moyen de convertir 17.5 en 17:30 sous Octave?


    Je mets quand même le code pour ceux que cela intéresse:

    %Températures

    %Lecture des températures

    tp=dlmread(nomtemp,'/,:',1,0);
    i_tp=length(tp);

    %Création du vecteurtemps pour le tracé à partir du pas de temps.
    xtp=linspace(0,i_tp*20,i_tp);
    vecteurtemps=tp(1,4)+(tp(1,5)* 60+tp(1,6))/3600+xtp/3600;

    %Tracé T=f(t)

    figure(1)
    graph1=plot(vecteurtemps,tp(:, 7),vecteurtemps,tp(:,8),vecteu rtemps,tp(:,9),vecteurtemps,tp (:,10),vecteurtemps,tp(:,11),v ecteurtemps,tp(:,12),vecteurte mps,tp(:,13));
    hold('on');
    set(graph1,'linewidth',2);
    legend('Haha c'est secret');
    title(titretemp);
    xlabel('Heure (h)');ylabel('T (°C)')
    grid('on');
    print('graph.png','-dpng'); %Impression du graphique

Discussions similaires

  1. Maple, fonction Odeplot comment obtenir une couleur en fonction du temps ?
    Par invite8810fee1 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 28/11/2010, 22h05
  2. graphique vitesse-temps fusée
    Par saflin dans le forum Physique
    Réponses: 2
    Dernier message: 30/01/2010, 11h23
  3. Graphique avec seuils et non linéaire en abscisse (dans le temps)
    Par zoslex dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 15/04/2009, 16h12
  4. Réponses: 4
    Dernier message: 13/02/2008, 19h24