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 :

[datenum] VS [num2str]


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut [datenum] VS [num2str]
    Bonjour,

    Soit un vecteur temps de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    temps_heure_uni_ =[...]
    2009020923.00
    2009021004.00
    2009021005.00
    2009021210.00
    2009021301.00
    2009021302.00
    2009021315.00
    [...]
    Je le transforme en string :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    temps_heure_uni_string = num2str(temps_heure_uni(:));
    pour ensuite faire un DATENUM :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    temps_heure_uni_hf_matlab = datenum(temps_heure_uni_string, 'yyyymmddHH');
    et tout ceci me retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ??? DATENUM failed.
    Failed on converting date string to date number.
     
    Error in ==> VisuAll3 at 507
        temps_heure_uni_matlab = datenum(temps_heure_uni_string, 'yyyymmddHH');

    Alors qu'un test avec une seule valeur marche bien :

    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
    >> temps_heure_uni = 2009021316.00
     
    temps_heure_uni =
     
      2.0090e+009
     
    >> temps_heure_uni_string = num2str(temps_heure_uni)
     
    temps_heure_uni_string =
     
    2009021316
     
    >> temps_heure_uni_hf_matlab = datenum(temps_heure_uni_string, 'yyyymmddHH')
     
    temps_heure_uni_hf_matlab =
     
      7.3382e+005
    ...et que je suis persuadé que ce code marchait hier...

    Merci si vous apercevez un problème...
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    temps_heure_uni =[...
    2009020923.00
    2009021004.00
    2009021005.00
    2009021210.00
    2009021301.00
    2009021302.00
    2009021315.00];
    temps_heure_uni_string = num2str(temps_heure_uni(:))
    temps_heure_uni_hf_matlab = datenum(temps_heure_uni_string, 'yyyymmddHH')
    fonctionne très bien chez moi.

    Il faudrait donc plus d'informations pour trouver ce qui cloche (il y avait un _ de trop dans ta 1ère variable mais j'ai supposé une erreur de Copier/Coller).

    Le fichier VisuAll3 est-il un script ou une fonction ?
    Es-tu sur qu'il n'y aurait pas une ligne de temps_heure_uni qui ne donnerait pas une date ?

    On obtient ton erreur en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    temps_heure_uni =[...
    2009020923.00
    26.3];
    temps_heure_uni_string = num2str(temps_heure_uni(:))
    temps_heure_uni_hf_matlab = datenum(temps_heure_uni_string, 'yyyymmddHH')
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    effectivement maintenant il me met une autre erreur qui se produit avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ??? Index exceeds matrix dimensions.
     
    Error in ==> VisuAll3 at 482
            RMS_heure_v1(i_uni) = sum(RMS_v1(temps_heure==temps_heure_uni(i_uni)));
    Et je pense que ça rejoint ce que tu dis Caro-Line (pas besoin de comprendre le message d'erreur, car l'erreur est avant) :

    Mon fichier .txt de base est de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    name, date_precis, RMS_v1_5, RMS_v1_cor, Disp_v1_5_good, RMS_v2_5, RMS_v2_cor, Disp_v2_5_good
    090209_00070494 733813.00491833338 5958.8348110 5958.8348110 3206.1394000 893.9048360 893.9048360 488.2849000
    090209_00070550 733813.00492482632 1498.0298320 1498.0298320 814.5711090 212.5752270 212.5752270 34.9827710
    090209_00070889 733813.00496402779 2131.6393070 2131.6393070 1037.3091300 282.5139740 282.5139740 99.8714160
    090209_00104237 733813.00743484951 137.9888640 137.9888640 1.0431600 328.7118830 328.7118830 79.2951940
    090209_00163230 733813.01148503472 132.7362690 132.7362690 2.7202530 266.3029610 266.3029610 62.0392730
    [...]
    090213_01411867 733817.07035501162 NaN NaN NaN 401.9445090 401.9445090 87.1796200
    090213_01411936 733817.07036296290 NaN NaN NaN 494.2283290 494.2283290 199.8522430
    090213_01412496 733817.07042780099 NaN NaN NaN 860.2747290 860.2747290 415.2661340
    090213_01412734 733817.07045535871 NaN NaN NaN 340.0423570 340.0423570 70.4975650
    [...]
    090213_16094261 733817.67340988421 NaN NaN NaN 398.3762640 398.3762640 205.4693620
    je l'ouvre comme suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     [Filename,temps,RMS_v1,RMS_v1_cor,Disp_v1,RMS_v2,RMS_v2_cor,Disp_v2] = textread('Info_fichier_BF_2009_3.txt'...
            ,'%s%.11f%.1f%.1f%.1f%.1f%.1f%.1f','headerlines',1);
    mais en regardant dans la variable temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    temps = [...]
       7.3381
        0.0025
        7.3381
        0.0045
        7.3381
        0.0026
        7.3381
        0.0040
        7.3381
        0.0030
        7.3381
    [...]
    Tout ce qui est en rouge n'est pas bon et correspond, je suis presque sûr aux données de la dernière colone car :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    K>> sprintf('%.11f',temps(end))
     
    ans =
     
    205.46936200000
    et cette valeur est bien la dernière de la dernière colonne (en vert dans mon fichier texte que j'ai copié)

    Incompréhensible ! c'est un programme qui marchait très bien depuis 2 mois !

    merci
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Ton formatage dans TEXTREAD est faux.
    Je n'arriverais pas bien à t'expliquer pourquoi ça coince mais manifestement les %.1f font qu'il ne lit qu'un digit après la virgule, du coup pour lui les chiffres après correspondent à une nouvelle donnée, et il est tout perdu.

    En faisant ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Filename,temps,RMS_v1,RMS_v1_cor,Disp_v1,RMS_v2,RMS_v2_cor,Disp_v2] = textread('Info_fichier_BF_2009_3.txt'...
            ,'%s%.11f%.11f%.11f%.11f%.11f%.11f%.11f','headerlines',1);
    ça fonctionne bien.

    Ou pour éviter les soucis si le format du fichier texte change encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [Filename,temps,RMS_v1,RMS_v1_cor,Disp_v1,RMS_v2,RMS_v2_cor,Disp_v2] = textread('Info_fichier_BF_2009_3.txt'...
            ,'%s%f%f%f%f%f%f%f','headerlines',1);
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    Effectivement c'était bien cela, hum, certaines commandes manquent de maniabilité quand même...

    merci beaucoup !
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

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

Discussions similaires

  1. [datenum] Conversion date Excel sous MATLAB 7
    Par harafado dans le forum MATLAB
    Réponses: 9
    Dernier message: 26/09/2011, 17h34
  2. [Débutant] Datenum sur un vecteur
    Par Newenda dans le forum MATLAB
    Réponses: 9
    Dernier message: 06/05/2009, 15h37
  3. Problème utilisation datenum
    Par bourdon_42 dans le forum MATLAB
    Réponses: 6
    Dernier message: 20/02/2008, 20h37
  4. Problème avec datenum
    Par Krokro00 dans le forum MATLAB
    Réponses: 2
    Dernier message: 30/10/2007, 17h13
  5. [datenum] Optimiser le temps d'exécution
    Par xduris dans le forum MATLAB
    Réponses: 11
    Dernier message: 08/08/2007, 16h07

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