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 de fichier texte et modification de valeurs


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Par défaut Lecture de fichier texte et modification de valeurs
    Bonjour,

    débutant sur MatLab, je sollicite votre aide

    j'ai besoin d'écrire un programme pour lire un fichier texte et à partir de celui ci de créer une matrice de 180 lignes sur 288 colonnes. Cette matrice correspond à des données de longitudes (colonnes) suivant les latitudes (lignes).

    je dispose à la base d'un fichier texte avec des données texte qui ne m'interessent pas et des milliers de valeurs!!!!
    le fichier n'est pas à la base "rectangulaire" le nombre de colonnes est différent pour chaque donnée de latitude (elles vont de -89.5 à 89.5 tous les 1°)
    voilà ci joint le début du fichier en question (il n'y a pas que des zéros comme valeurs, hormis pour les latitudes, elles sont toutes positives et s'echelonnent jusqu'à 999). voici le début du fichier texte qui fait 160ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    Day: 1 Jan 1, 2004 EP/TOMS ARC 360 RES GEN:04.219 V8 ALECT: 10:58 AM 
     
    Longitudes: 288 bins centered on 179.375 W to 179.375 E (1.25 degree steps) 
     
    Latitudes : 180 bins centered on 89.5 S to 89.5 N (1.00 degree steps) 
     
    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 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 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 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 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 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 lat = -89.5 
     
    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 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 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 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 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 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 lat = -88.5 
     
    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 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 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 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 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 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 lat = -87.5 
     
    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 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 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 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 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 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 lat = -86.5

    je vous remercie par avance pour la lecture du message et un grand merci à ceux qui pourront m'aider

    bonne journée

  2. #2
    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
    Il y a plusieurs fonctions pour récupérer du texte dans MATLAB :
    - textscan => voir l'aide, on peut lui donner plein d'arguments
    - les fonctions bas niveau comme en c : fopen, fgetl, fclose qui permettent de lire les lignes 1 à 1

    On ne peut t'aider plus ne sachant ce que tu veux conserver, ce que tu veux ignorer dans ton fichier.

  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
    Tu pourrais attacher ton fichier txt en le compressant en archive zip (la taille devrait énormément réduire...)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Par défaut
    je te file le fichier texte compressé

    en fait les données texte jusqu'à steps ne m'interessent pas (3 premières lignes)

    je souhaiterais créer une matrice de 180 lignes sur 288 colonnes
    les 180 lignes correspondent à chaque lattitude
    les 288 colonnes aux valeurs des longitudes pour chaque latitude

    la premiere ligne correspond au premier bloc (que des valeurs 0 ici jusqu'à latitude -89.5, il y a 288 zéros)
    dans la suite du fichier les valeurs ne dépassent pas 40 sauf qu'il y a des 999 pour indiquer une absence de valeur (voir fin du fichier) et parfois elles sont accollées donc difficile de les distinguer

    en tout j'ai prés de 1000 fichier de la sorte a traiter alors je te remercie par avance si tu peux m'aider

    voilà le tout premier de la liste, ils sont tous identiques

    j'ai tapé le début du programme je sais pas si c'est juste mais il y a un souci avec les 999.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    clear all
    close all;
     
    %demander le fichier à lire
    fichier = input('fichier =');
     
    %fichier= '200401.txt'
     
    %ouverture du fichier, lecture du fichier et selection des lignes
    fid=fopen(fichier)
    A=textscan(fid, '%s','delimiter','','headerlines','2')
    fclose(fid);
     
    %affichage de la cellule resultat
    A{1}
    merci pour l'aide
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Par défaut je commence à avancer!!!!
    j'ai réussi à éliminer les lignes de texte qui me servaient à rien

    j'obtiens un fichier qui fait 2160 lignes

    il faut que j'arrive à remplacer dans chaque ligne la valeur 999 par "999+ un espace"
    pour eviter d'avoir des lignes de 999 interrompues et ensuite il faudra que je mette dans une ligne mes 12 premieres lignes pour creer ma matrice. je bloque completement.

    je vous file le debut du programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    clear all;
    close all;
     
    %demander le fichier à lire
    fichier = input('fichier =');
     
    %fichier= '200401.txt'
     
    %ouverture du fichier, lecture du fichier et selection des lignes
    fid=fopen(fichier)
    A=textscan(fid,'%s','delimiter','','headerlines',3)
    fclose(fid);
     
    %affichage de la cellule resultat
    A{1}
    %affichage du nombre de lignes de la cellule
    nbligne=length(A{1})
     
    %séparation des 999!!!!!
    si jamais quelqu'un a une idée merci

    à plus

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Par défaut je bloque pour le remplacement de valeur!!!!
    Bonjour tout le monde

    j'ai réussi à trouver l'idée mais je bloque pour ecrire la suite du programme

    pour remplacer mes 999 par '999+ un espace' il faut que je fasse trois étapes de remplacement

    1 pour mes 999 accollés au chiffre 9 qui m'interesse je dois d'abord ecrire 9'espace'999999999.....en gros pour toutes mes suites de 9=4:3:75, le premier 9 doit etre remplacé par '9'espace''

    2 meme raisonnement pour les valeurs qui m'intéressent pour X=19:10:99
    la série qui commence par 19 (ou 29 ou 39...) je dois l'écrire '19'espace'999999....donc mes séries appelées A, de la forme A=X999999999...je dois l'ecrire X'espace'999999999

    3 enfin derniere étape remplcé tous mes 999 par '999'espace'

    bien sur 'espace' ici renvoie à un espace et non le mot

    merci pour ceux qui ont une idée

    bonne journée

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/11/2006, 20h57
  2. Réponses: 20
    Dernier message: 23/03/2006, 16h21
  3. Lecture d´un fichier texte .
    Par pilouface dans le forum C
    Réponses: 5
    Dernier message: 20/01/2006, 23h48
  4. [AS2] Lecture Ecriture Fichier Texte
    Par cpr0 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 13/09/2005, 11h22
  5. lecture de fichier texte
    Par prorider dans le forum C
    Réponses: 36
    Dernier message: 08/09/2004, 20h55

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