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 :

Comment parcourir une table (fichier txt) ?


Sujet :

MATLAB

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Comment parcourir une table (fichier txt) ?
    Bonjour,
    J'ai une table (fichier txt), avec X colonnes et Y lignes. J'aimerais la parcourir ligne par ligne (lecture), de la première à la dernière ligne. A chaque ligne, je récupère les valeurs que j'utilise pour un calcul.

    Table
    V1 V2 V3 (en-tête)
    a1 a2 a3
    b1 b2 b3
    c1 c2 c3
    .
    .
    p1 p2 p3
    1ère étape
    var1 =a1; var2 = a2; var3 = a3
    cal = var1*var2+var3

    2ème étape
    var1 =b1; var2 = b2; var3 = b3
    cal = var1*var2+var3
    etc.
    Pourriez-vous m'aider à parcourir ma table avec Matlab?

    J'avais écrit le programme en VBA et il marche bien (voir ci-dessous, en simplifié) mais là je suis obligé de le mettre en Matlab et je rencontre des difficultés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    rst.MoveFirst
    While Not rst.EOF
        var1 = rst.Fields("V1")
        var2 = rst.Fields("V2")
        var3 = rst.Fields("V3")
        cal = var1*var2+var3
        rst.MoveNext
    Wend
    Merci d'avance.

  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 830
    Points
    14 830
    Par défaut
    Sous MATLAB il vaut mieux tout lire d'un coup.
    Voir par exemple :
    Et pour la ligne de titre :
    Comment passer l'entête d'un fichier texte en lecture ?

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    La vérité est que j'ai un tableau très très grand, et que pour des questions de mémoire et de "pratiques", je ne saurais tout lire d'un coup. Il y a non seulement la question de mémoire mais aussi des tournures (Il y a des calculs qui impliquent deux lignes consécutives). J'avais trouvé dans Help
    Importing Large Data Sets mais je n'ai pas très bien compris.

  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 830
    Points
    14 830
    Par défaut
    C'est quoi "très très grand" ?
    As-tu essayé pour voir si tu avais un Out of memory. Type HELP MEMORY for your options. ?

    Comment déterminer approximativement la quantité de mémoire nécessaire pour le stockage d'une variable ?

    Sinon pour lire ligne par ligne il suffit d'utiliser FGETL.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Merci
    Merci Caro-Line pour ta fameuse "maïeutique", je crois que tu m'as accompagné et peu à peu, j'ai pu construire mon code qui marche très bien!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    fid = fopen('Simul.txt','rt');
    fide = fopen('essai.txt','wt');
     
    while ~feof(fid)
    var = fgetl(fid);
    A = sscanf(var, '%f %f %f');
    b = 2*A(1)
    c = 2*A(2)
    d = 2*A(3)
    fprintf(fide, '%.2f %.2f %.2f\n', b,c,d);
    end
    fclose(fide);
    fclose(fid);

  6. #6
    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 830
    Points
    14 830
    Par défaut
    De rien

    Et pour éviter les variables intermédiaires (on n'aime pas trop ça dans MATLAB) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    fid = fopen('Simul.txt','rt');
    fide = fopen('essai.txt','wt');
     
    while ~feof(fid)
        var = fgetl(fid);
        A = sscanf(var, '%f %f %f');
        fprintf(fide, '%.2f %.2f %.2f\n', 2*A);
    end
    fclose(fide);
    fclose(fid);
    Tout simplement

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    C'est vrai que c'est plus simple! En réalité, j'ai besoin d'utiliser a, b, c dans des calculs plus complexes (que simplement des opérations élémentaires identiques)! Merci.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/12/2008, 15h46
  2. Réponses: 9
    Dernier message: 17/07/2008, 09h14
  3. Réponses: 4
    Dernier message: 25/10/2007, 14h37
  4. comment copier une table vers un fichier texte ou le contraire
    Par kham40 dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/11/2006, 13h51
  5. Comment Copier une table dans un fichier?
    Par thx2003 dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/12/2003, 12h09

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