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 .txt d'une certaine forme


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 12
    Par défaut lecture d'un fichier .txt d'une certaine forme
    bonjour,

    Mon problème est le suivant, j'ai un fichier .txt de cette forme :

    ncols 149
    nrows 128
    xllcorner 409176.254468
    yllcorner 1386725.316507
    cellsize 6.0188510000003
    NODATA_value -9999
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ....... 0
    .
    .
    .
    .
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ....... 0
    J'essaie de le lire avec matlab mais je n'y arrive pas. Avec textread, j'ai pu lire les 6 premieres ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [nom, taille] = textread('rastert_ms_test1.txt', '%s %f', 6);
    Mais après l'histoire se corse puisqu'il n'y pas le même nombre de colonne.
    L'idée c'est de commencer a lire le fichier .txt depuis la 7eme ligne, pour avoir une matrice [128;149]. Quelqu'un pourrait-t-il m'aider ?

    Merci d'avance ...

  2. #2
    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
    Citation Envoyé par Liun971 Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [nom, taille] = textread('rastert_ms_test1.txt', '%s %f', 6);
    Il suffit alors de sauter le nombre de lignes voulues en définissant tes 7 premières lignes comme un Header (en-tête) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [nom, taille] = textread('rastert_ms_test1.txt', '%f', n,'headerlines',7);

  3. #3
    Expert confirmé
    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
    Par défaut
    Comment passer l'entête d'un fichier texte en lecture ?

    Personnellement je préfère utiliser TEXTSCAN que TEXTREAD comme conseillé par l'aide de MATLAB.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour.
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x=textread('fichier.txt','%s')
    Tu as tout dans x.

  5. #5
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 12
    Par défaut
    Re-bjr,

    euh oui merçi, j'ai lu le FAQ avant de poster le sujet ici mais avec textread ou textscan, le format me gene.

    J'ai 149 colonnes, comment faire pour mettre dans le format 149 de %f ?!

    Citation Envoyé par phryte Voir le message
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x=textread('fichier.txt','%s')
    Tu as tout dans x.
    J'ai essayé ça aussi, mais ça me donne que des caracteres, j'ai essayé de le convertir en double comme ça double(x(n)), mais rien à faire, il n'aime pas.

  6. #6
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par Liun971 Voir le message
    J'ai 149 colonnes, comment faire pour mettre dans le format 149 de %f ?!
    Ta question n'était pas claire alors.
    En fait tu voulais savoir comment former la chaine format.
    Si tu as 149 colonnes de double à lire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nbCol=149;
    format = repmat('%f ',1,149); % replique 149 fois '%f '
    format(end) = [];%enleve le dernier espace en trop

  7. #7
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 12
    Par défaut
    Dsl si j'ai mal expliqué mon problème. Avec toutes vos explications j'en suis arrivé à là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    format = repmat('%f ',1,149);
    format(end) = []; % enleve le dernier espace en trop
     
    fid=fopen('test.txt','rt');
     
    % J'écris en partant de la 7eme ligne
    for i=7:1:128
        A(i,:)=textscan(fid,format,'headerlines',i);
    end
     
    fclose(fid);
    Et ma matrice A devient une matrice <128*149 cell> rempli de [].
    Et pourtant le format c'est bien du double ... ?!

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

Discussions similaires

  1. lecture d'un fichier.txt dans une classe
    Par loeca dans le forum C++
    Réponses: 3
    Dernier message: 23/03/2014, 17h24
  2. Réponses: 2
    Dernier message: 27/07/2011, 10h10
  3. Réponses: 4
    Dernier message: 24/05/2010, 13h06
  4. Lecture d'un fichier Txt dans une JSP !
    Par bim92i dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 29/04/2008, 09h55
  5. Réponses: 2
    Dernier message: 01/05/2007, 18h50

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