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 d'un fichier de données à plusieurs colonnes


Sujet :

MATLAB

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut Lecture d'un fichier de données à plusieurs colonnes
    Bonjour;
    J'ai un fichier texte de données ECG (cardiography) que je veux lire avec Matlab.
    Le fichier contient trois colonnes de ce format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    time	MLII	V5
    (sec)	(mV)	(mV)
     10.000	 -0.390	 -0.275
     10.003	 -0.395	 -0.265
     10.006	 -0.390	 -0.285
     10.008	 -0.405	 -0.300
     10.011	 -0.405	 -0.305
     10.014	 -0.400	 -0.285
     10.017	 -0.375	 -0.270
    Lorsque je lis ce vecteur sous Matlab comme avec ce petit bout de code classic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fid_xn = fopen('file.txt');
    xn = fread(fid_xn, 'float32');
    fclose(fid_xn);
    j'obtiens un vecteur à une seule dimension je sais pas comment calculée meme
    Je sais pas comment avoir toute la matrice ou lire chaque colonne dans un vecteur à part.
    Est ce quelqu'un a une idée pour résoudre ce pb?
    Merci d'avance pour vos aides.

  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 828
    Points
    14 828
    Par défaut
    Comme tu as du texte au début, je ne suis pas sure que FREAD arrive à gérer correctement.
    Un moyen serait de passer les 2 lignes (si tu es sur qu'il y a toujours exactement 2 lignes) avec FGETL puis lire avec FREAD.

    Sinon regarde du côté de TEXTSCAN qui permet la lecture formatée.

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut
    en fait, y'a pas de texte. Ca commece directement par les valeurs. Je l'ai mis juste pour montrer le semantique de chaque colonne.
    Mais j'essaye de mettre chaque colonne dans une variable vecteur pour pouvoir les représenter par la suite sou forme de graphe.
    Merci.

  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 828
    Points
    14 828
    Par défaut
    Et bien comme je te l'ai dis regarde l'aide de la fonction TEXTSCAN, elle fait exactement ce que tu souhaites.

    [EDIT]ou plus simple s'il n'y a réellement que des nombres, utilises la fonction LOAD avec l'option -ASCII, ce sera fait en une seule ligne.

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut
    Merci Caroline.
    Je vais l'essayer et vous tenir au courant.
    Bon travail à tous

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut
    Bravo Caroline
    Ca marche vraiment nickel maintenant avec ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    load '100.txt';
    t= X100(:,1);
    v=X100(:,2);
    plot(t,v);
    J'ai eu exactement ce que je veux. Mais y'a petit problème. Est ce qu'on peut gérer le nom de la matrice obtenu par la fonction load. Dans mon code j'ai du executer la 1ere commande pour savoir le nom attribué par matlab.
    En fait, je vais utiliser ce code dans une fonction avec comme paramètre le fichier à lire.
    Merci pour l'aide.

  7. #7
    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 828
    Points
    14 828
    Par défaut
    Il faut mieux utiliser la forme fonctionnelle de LOAD et récupérer alors la sortie.
    Dans le cas d'un fichier texte (car attention la sortie sera différente s'il s'agit d'un fichier MAT) on peut donc faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fichier='100.txt';
    M=load(fichier);
    plot(M(:,1),M(:,2));%Il n'y a pas vraiment d'interet a passer par des variables intermediaires

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 230
    Points : 96
    Points
    96
    Par défaut
    Merci Caroline, mon pb est maintenant bien résolu.
    Bonne travail à vous et à toute l'équippe Developpez.com

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

Discussions similaires

  1. Lecture à partir du fichier du donnée
    Par madritista dans le forum Oracle
    Réponses: 7
    Dernier message: 29/09/2012, 18h33
  2. Réponses: 1
    Dernier message: 16/03/2010, 10h58
  3. Réponses: 4
    Dernier message: 12/05/2009, 13h21
  4. Tri fichier CSV suivant plusieurs colonnes
    Par ddouet2000 dans le forum Langage
    Réponses: 2
    Dernier message: 25/02/2009, 15h58
  5. Réponses: 2
    Dernier message: 02/11/2006, 22h35

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