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 :

[textscan] Lire .csv complexe


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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
    Par défaut [textscan] Lire .csv complexe
    Bonjour,

    Je dois lire un .csv mais étant un peu complexe, je me sert de textscan. Voici le début du fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    "Time","\\.\Lecture\Modbus1.40003","\\.\Lecture\Modbus1.40004","\\.\Lecture\Modbus1.40005","\\.\Lecture\Modbus1.40006","\\.\Lecture\Modbus1.40007","\\.\Lecture\Modbus1.40008","\\.\Lecture\Modbus1.40009","\\.\Lecture\Modbus1.40010","\\.\Lecture\Modbus2.40003","\\.\Lecture\Modbus2.40004","\\.\Lecture\Modbus2.40005","\\.\Lecture\Modbus2.40006"
    10/07/2008 00:00:00,221,161,897,21,251,189,559,159,0,0,0,0
    10/07/2008 00:00:01,221,161,903,21,250,182,551,159,0,0,0,0
    10/07/2008 00:00:02,222,168,867,21,250,182,551,162,0,0,0,0
    10/07/2008 00:00:03,222,168,867,21,255,184,550,158,0,0,0,0
    [...]
    La difficulté réside dans la lecture, la séparation et l'interprétation la 1ere colonne (i.e. le temps).

    Voilà ce que je fais (déjà pour ouvrir le .csv)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    fid=fopen('valeurs.csv','r');
    disp(fid)
    %%%%%%%%%%%%%% Boucle: Eliminer les N premières lignes du fichier %%%%%%%%
    N = 1; 
    for n=1:N;
       fgetl(fid);
    end;
     
     
    C = textscan(fid,'%s %g %g %g %g %g %g %g %g %g %g %g %g','delimiter',',')
    mais il me retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ??? Error using ==> textscan
    Badly formed format string.
    
    Error in ==> LectRMS_full at 21
    C = textscan(fid,'%s %g %g %g %g %g %g %g %g %g %g %g %g','delimiter',',')
    J'ai essayé avec %c, %q, [...] etc.. rien n'y fait je piges pas.

    Merci de votre aide !

  2. #2
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    C'est le %g qui va pas à mon avis, essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C = textscan(fid,'%s %d %d %d %d %d %d %d %d %d %d %d %d','delimiter',',','headerlines',1)
    Il existe pleins de façon évidemment de récuperer les infos que tu désires, c'est donc une des solutions possibles à a dapter à tes besoins.

    EDIt:
    je confirme le %g n'est pas supporté (confere la doc de textscan)

  3. #3
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Avec TEXTREAD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [X{1:18}] = textread('data.csv','%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d','delimiter',' /:,','headerlines',1);

  4. #4
    Membre éprouvé
    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
    Par défaut
    Super nikel : une petite question tout de même, quand je mets ensuite

    il me file toute la liste de 10, alors que j'en veux qu'un seul...(?)

    Bon j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Jour_full = X{1,1}; jour = Jour_full(1,1)
    mais bon il lit tout quand même et perd du temps...

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Essaye comme ceci :

  6. #6
    Membre éprouvé
    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
    Par défaut
    Ca marche bien, merci.
    Mais c'est bizarre, maintenant j'essaye de convertir le temps en heures donc je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    secondes = X{1,6}
    minutes = X{1,5}
    heures = X{1,4}
     
    secondes_heures = secondes/(1/3600)
    minutes_heures = minutes/(1/60)
     
    temps = heures + secondes_heures + minutes_heure
    Mais je remarque qu'il ne fait pas les calcules éléments de la matrice par facteurs.. il fait je sais pas quoi...
    Pourquoi donc autant de mystères?

Discussions similaires

  1. [textscan] lecture fichier csv complexe
    Par Newenda dans le forum MATLAB
    Réponses: 2
    Dernier message: 28/01/2014, 11h30
  2. [PHP 5.3] Je n'arrive pas à récupérer un fichier pour le lire (csv)
    Par beegees dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2011, 10h02
  3. lire XML complexe
    Par kite33 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/02/2010, 17h09
  4. [textscan] Lire des blocs de données
    Par AnSo14 dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/08/2008, 15h35

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