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 :

Lecture fichier csv


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Par défaut Lecture fichier csv
    Bonjour,

    j'ai un fichier csv comme ceci :

    Avmes Eames Efmes Eemes Rmes eclmes cmes essmes demmes wmes
    0 0 0,108342 0 0 0 0 0 2 0
    0 0 0,108342 0 0 0 0 0 2 0
    0 0 0,108342 0 0 0 0 0 2 0
    0 0 0,108342 0 0 0 0 0 2 0
    0 0 0,108342 0 0 0 0 0 2 0
    0 0 0,108342 0 0 0 0 0 2 0


    je cherche a me débarasser de cette foutu premiere ligne et les tutos de la foire aux questions n'y font rien... comment puis-je faire pour litteralement la suprimer? en effet, quand je la suprime a la main un ptit csvread fonctionne... le probleme c'est que j'ai pres de 500 fichiers donc il me faut une routine... ce qui est presentté ci-dessus c'est mon .csv dans excel...

    merci

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

    Il suffit de spécifier la propriété headerlines:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fid = fopen(monfichier.csv','r');
    T = textscan(fid,'%d %d %d, %d %d %d %d %d %d %d %d','delimiter','\n','headerlines',1)
    fclose(fid);

  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
    Il semble que le séparateur de décimales dans ton fichier soit la virgule... or MATLAB ne comprends que le point comme séparateur.

    Fais une recherche sur ce forum, nous avons déjà traité plusieurs fois ce problème...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Par défaut
    dut: le probleme de la virgule je l'ai deja traité avec un ptit script de ma confection il me reste donc a gerer cette premiere ligne recalcitrante mais avec ce que Winjerome me propose je ne suis pas sur de vraiment saisir comment on gère dans un textscan, le nombre de '%d %d %d, %d %d (d'ailleur la virgule au milieu c'est normale?). Enfait, je l'ai deja testé sur ces fichiers avec les headerlines, matlab le fait tourner proprement mais au bout du compte ca donne rien mon fichier est toujours illisible en csvread premiere ligne premiere colone et comme je le disais, si je la fait sauté à la main (avc excel) je n'ai plus le probleme. Bon je vais trifouiller le textscan jusqu'a sque ca marche puis sinon y a toujour le weekend de pacques pour me farcire 500ligne a effacer...

  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
    Le script pour modifier les virgules en point dans le fichier csv :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    fid = fopen('test.csv','r');
        X = fread(fid,[1,inf],'*char');
    fclose(fid);
    X = strrep(X,',','.');
    fid = fopen('test2.csv','w');
        fwrite(fid,X);
    fclose(fid);
    Le code pour lire le contenu numérique en sautant la première ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    M = dlmread('test2.csv',' ',1,0)
    Cette ligne me renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    M =
     
             0         0    0.1083         0         0         0         0         0    2.0000         0
             0         0    0.1083         0         0         0         0         0    2.0000         0
             0         0    0.1083         0         0         0         0         0    2.0000         0
             0         0    0.1083         0         0         0         0         0    2.0000         0
             0         0    0.1083         0         0         0         0         0    2.0000         0
             0         0    0.1083         0         0         0         0         0    2.0000         0
    Il est également possible d'écraser directement le contenu du premier fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    fid = fopen('test.csv','r+');
        X = fread(fid,[1,inf],'*char');
        X = strrep(X,',','.');
        frewind(fid);
        fwrite(fid,X);
    fclose(fid);

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Par défaut
    je sais que je la ressors à chaque fois, mais avec la fonction txt2mat disponible sur le fex, on obtiens la même chose en 1 ligne sans remplacer les virgules par des points :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A = txt2mat('test.txt');
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Par défaut
    oulala pardon j'oubliais j'ai été un peu distrait pendant la premiere redaction,
    merci Dut et Winjerome pour vos reponse rapides...

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Ergonome
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ergonome
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Par défaut
    c'est bon j'ai trouvé mon bonheur avec le dlmread... merci

Discussions similaires

  1. lecture fichier CSV
    Par kodshadow dans le forum Débuter
    Réponses: 6
    Dernier message: 22/12/2008, 16h42
  2. [MySQL] Lecture fichier CSV et enregistrement dans la base
    Par tifsa dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/09/2008, 12h49
  3. Lecture fichier .csv par colonne
    Par BRAUKRIS dans le forum Langage
    Réponses: 3
    Dernier message: 05/10/2007, 14h08
  4. Lecture fichier CSV
    Par Iphelias dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/06/2007, 21h58
  5. lecture fichier .csv
    Par wiss20000 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 06/06/2007, 20h48

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