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

Scilab Discussion :

Extraire donné de fichier text avec en-tête numérique (et changment de virgule en point)


Sujet :

Scilab

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Extraire donné de fichier text avec en-tête numérique (et changment de virgule en point)
    Bonjour,
    je suis relativement nouveau sous scilab et je suis bloqué pour extraire des données de fichiers texte qui se présente sous la forme :

    03/12/2014 08:00:00
    Données
    Temps Data2 Data3 Data4 Data5 Data6 Data7 Data8 Data9 Data10 Data11
    0,000000 0,053859 3,928452 43,351501 62,893630 254,276504 4,097042 -43,926809 409,897038 58,724417 0,618446
    0,000063 0,055830 4,027312 43,844159 64,207386 254,670630 4,228418 -44,189560 411,276481 59,020012 0,616147
    0,000125 0,055501 4,268715 44,336818 64,043167 254,736318 3,899979 -44,189560 410,685291 59,249919 0,617461
    0,000188 0,055173 4,474646 44,008379 64,864264 254,670630 3,965667 -45,437629 410,816666 59,512671 0,616804
    0,000250 0,056487 4,641493 44,008379 64,371606 255,196133 3,899979 -45,306253 411,342168 59,611202 0,618117
    0,000313 0,055501 4,929205 44,829477 64,371606 255,064757 3,834291 -44,583687 410,816666 59,381295 0,619431
    0,000375 0,056158 5,323660 43,844159 63,550508 254,867694 3,899979 -44,780751 410,750978 59,348451 0,616804
    0,000438 0,056158 5,574587 44,008379 63,714727 254,802006 4,031354 -44,649375 411,013730 59,742578 0,617132
    0,000500 0,056487 5,605789 44,336818 64,371606 255,064757 3,965667 -45,240565 410,553915 60,300924 0,618446
    0,000563 0,055501 5,527620 44,172598 64,535825 255,327508 4,031354 -45,503317 410,422540 60,793583 0,617789
    0,000625 0,056158 5,448467 43,844159 65,521143 254,670630 3,965667 -45,043502 410,488227 61,253397 0,617789
    La fonction fscanfMat('myfile.txt') fonctionne seulement si les en tête commencent par une lettre, hors dans mon cas a première ligne commence par la date donc la fonction fscanfMat ne fonctionne pas.
    J'ai essayé différente fonction, mais à chaque fois je rencontre des problèmes.
    J'envisage deux solutions :
    1. supprimer les lignes d'en-tête du fichier
    2. rajouter un caractère sur toutes les lignes d'en-tête
    Puis dans les deux cas utiliser la fonction fscanfMat.
    Je n'arrive ni à supprimer les en-têtes ni à rajouter un caractère devant.
    Avez vous une solution?

    De plus, existe-t-il un moyen de transformer toutes les virgules en point?
    Yoann

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Citation Envoyé par yoannthevenoux Voir le message
    existe-t-il un moyen de transformer toutes les virgules en point?
    Tu trouveras une solution ici : Lecture de fichier avec séparateur décimal ","

    Une fois que le virgules seront modifiées, tu pourras importer les données avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fd = mopen('text.txt', 'rt')
     
    mgetl(fd, 1)
    mgetl(fd, 1)
    mgetl(fd, 1)
     
    X = mfscanf(-1, fd, "%f%f%f%f%f%f%f%f%f%f%f")
     
    mclose(fd)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci pour ta réponse rapide, j'avais pensé à utiliser mgetl(fd, n) pour mettre de coté les premières lignes, mais je ne connaissais pas vraiment le fonctionnement de mfscanf, maintenant c'est plus clair.

    Par contre pour la transformation de point en virgule j'ai dû augmenter mon "stacksize" (j'ai un très gros fichier texte) et il y a une erreur: j'ai du mettre mopen("data.txt", "r+") au lieu de mopen("data.txt", "r") pour que cela fonctionne correctement.

    Merci beaucoup

Discussions similaires

  1. export de données en fichier texte avec accents
    Par Akazed dans le forum Réplications
    Réponses: 6
    Dernier message: 29/09/2009, 10h03
  2. Réponses: 0
    Dernier message: 22/09/2009, 17h51
  3. Réponses: 8
    Dernier message: 06/03/2008, 16h32
  4. Réponses: 3
    Dernier message: 02/05/2007, 17h44
  5. [vb6]:Ajuster des données dans un fichier text avec un timer
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 25
    Dernier message: 28/07/2006, 12h13

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