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 :

[Problème lecture fichier] Ajout d'un espace dans une table de données


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut [Problème lecture fichier] Ajout d'un espace dans une table de données
    Bonjour,

    J'ai un soucis avec Matlab, l'importation d'un fichier et la lecture de celui ci.

    - J'importe un fichier .prn dans Matlab. Le fichier est composé de plusieurs colonnes avec plusieurs milliers de lignes pour chaque colonne.
    - J'ai un problème de lecture de mon fichier quand 2 valeurs de 2 colonnes distinctes ne sont pas séparées par un espace.
    Exemple :
    colonne 1 colonne 2
    280 0.0523
    285 0.0325
    2810.000578

    A la 3ème ligne, j'aimerais insérer un espace avant "0.00578".

    J'ai essayé en faisant ceci, mais ça ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    % ajout d'un espace en debut de colonne
            fid=fopen(Nom_Fichier,'rt');
            car=fread(fid);
            fclose(fid);
     
            fid=fopen(Nom_Fichier,'wt');
            car(car==2)=32;
            fwrite(fid,car);
            fclose(fid);
     
            fid=fopen(Nom_Fichier,'r');
            X=fread(fid);
            fclose(fid);
    Il faudrait que je rajoute un espace à chaque fois que 2 colonnes ne sont pas séparées.
    Auriez vous une idée qui pourrait résoudre mon problème de lecture de fichier.

    Je vous remercie

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Est-ce qu'il se justifie vraiment de faire ça dans Matlab. Personnellement, j'ouvrirais plutôt le fichier dans un traitement de texte et je ferais remplacer partout "0." par " 0."
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    C'est le même soucis qu'une discussion qui avait été crée par Oliv27.
    Pour des raisons de rapidité d’exécution, il est préférable de tout faire avec Matlab.

  4. #4
    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
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    est-ce que le nombre de la première colonne contient toujours 3 chiffres? Si non, est-ce que la première colonne contient toujours au moins 3 caractères?

    Sinon, pourquoi utilises-tu fread? ton fichier prn est un fichier binaire?
    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.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Bonjour Magelan

    J'utilise fread car c'est ce que j'ai trouvé sur le forum lorsque l'on veut remplacer un caractère par un autre pour ouvrir et lire le fichier.

    Concernant la colonne qui me pose problème, son emplacement varie suivant le fichier que je charge (l'ordre et le nombre de colonnes n'est jamais le même).
    La colonne de données qui la précède varie donc également (elle peut avoir 2,3,4 chiffres...)

  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
    Points : 7 614
    Points
    7 614
    Par défaut
    Comment être sûr de l'endroit ou il faut insérer l'espace, alors? Comment identifier cet endroit?

    Pourrais-tu nous montrer un exemple de fichier que tu dois traiter?
    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
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    un exemple de fichier que j'importe :
    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
         259.9      0.01      8179      0.34    460.16       613-0.0669484
         259.7      0.05      8182      0.28    460.88       614-0.0597268
         259.7      0.05      8180      0.27    460.88       614-0.0568605
         259.4      0.05      8187      0.28    461.60       615-0.0573992
         259.4      0.05      8191      0.34    461.60       615-0.0601782
         260.0      0.16      8189      0.33    462.32       616-0.0639345
         260.0      0.16      8189      0.38    462.32       616-0.0674269
         260.0      0.16      8183      0.30    463.05       617-0.0695514
         260.0      0.16      8185      0.32    463.05       617-0.0694402
         259.7      0.04      8191      0.40    463.77       618-0.0665362
         259.7      0.04      8194      0.35    463.77       618-0.0606369
         259.4      0.04      8190      0.32    464.49       619-0.0519038
         259.4      0.04      8187      0.39    464.49       619-0.0408373
         259.4      0.00      8188      0.36    465.21       620-0.0282211
         259.4      0.00      8192      0.35    465.21       620-0.0150402
         259.6      0.00      8195      0.44    465.93       621-0.00238216
         259.6      0.00      8206      0.41    465.93       6210.00866914
         259.6      0.07      8206      0.40    466.65       622 0.0171375
    Ici c'est donc la dernière colonne qui me pose problème (Le nom de cette colonne est Alpha --> le problème des valeurs "collées" est présent uniquement dans la colonne Alpha, pas de soucis pour les autres)

    Je repère les colonnes qui me serviront dans la simu avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Data.textdata(1, strcmp(Data.textdata,'Alpha')) = {'alph'};
     
    Alpha= Data.data(:, strcmp(Data.textdata,'alph'));

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 177
    Points : 46
    Points
    46
    Par défaut
    Sinon est-il possible de limiter la précision des nombres à 3 décimales (ou 0 si chiffre entier), et d'ajouter un espace après.

    Par exemple, mes données précédentes deviendraient
    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
         259.9      0.01      8179      0.34    460.16       613 -0.066
         259.7      0.05      8182      0.28    460.88       614 -0.059
         259.7      0.05      8180      0.27    460.88       614 -0.056
         259.4      0.05      8187      0.28    461.60       615 -0.057
         259.4      0.05      8191      0.34    461.60       615 -0.060
         260.0      0.16      8189      0.33    462.32       616 -0.063
         260.0      0.16      8189      0.38    462.32       616 -0.067
         260.0      0.16      8183      0.30    463.05       617 -0.069
         260.0      0.16      8185      0.32    463.05       617 -0.069
         259.7      0.04      8191      0.40    463.77       618 -0.066
         259.7      0.04      8194      0.35    463.77       618 -0.060
         259.4      0.04      8190      0.32    464.49       619 -0.051
         259.4      0.04      8187      0.39    464.49       619 -0.040
         259.4      0.00      8188      0.36    465.21       620 -0.028
         259.4      0.00      8192      0.35    465.21       620 -0.015
         259.6      0.00      8195      0.44    465.93       621 -0.002
         259.6      0.00      8206      0.41    465.93       621  0.008
         259.6      0.07      8206      0.40    466.65       622  0.017

Discussions similaires

  1. [AC-2007] Problème d'ajout de pièces jointes dans une base de données access
    Par kek's dans le forum VBA Access
    Réponses: 3
    Dernier message: 23/11/2011, 10h13
  2. lecture fichier plat TXT sans espace dans excel
    Par julio44 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/06/2011, 19h31
  3. Ajout automatique d'espace dans une variable numérique
    Par enclave_51 dans le forum Langage
    Réponses: 2
    Dernier message: 08/08/2008, 19h49
  4. Importer fichiers txt d'un dossier dans une table
    Par avantoux dans le forum Access
    Réponses: 16
    Dernier message: 28/12/2005, 13h13
  5. AJOUT d'un ENREGISTREMENT dans UNE TABLE
    Par ramo dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/08/2005, 17h24

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