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 :

Ouvrir un fichier ascii et éliminer des lignes


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 202
    Par défaut Ouvrir un fichier ascii et éliminer des lignes
    Bonjour!

    Je m'aperçois que cela fait très longtemps que je n'avais pas posté sur le forum!!

    J'ai un petit problème dans mon Matlab, pourquoi ça marche pas...

    Alors voilà, je souhaite ouvrir un fichier ascii, en extension .asc.
    Le problème est que le load, après un temps de recherche, me renvoie ce message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ??? Error using ==> load
    Number of columns on line 3515 of ASCII file C:\Documents and Settings\Goberville\Mes documents\MATLAB\beach.txt
    must be the same as previous lines.
    Est-il possible d'ouvrir un fichier asc directement sur matlab, et si oui, il y a t'il possibilité de "nettoyer" les 6ères lignes qui ne sont que du texte?

    Merci d'avance de votre aide!

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Par défaut
    bonsoir,

    Si ton fichier ne contient pas beaucoup de colonne, tu peux utiliser la fonction textscan et définir des lignes de header.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    file_id=fopen('beach.txt','r');
     
    donnees=textscan(file_id,'%s %s %s %s','headerlines',6);
    Tu fais sauter les 6 premières lignes. Il faut bien entendu que tu connaisses le format de tes colonnes pour utiliser cette solution et que tu n'en ai pas 50 à rentrer à la main.

    En attendant les spécialistes des ouvertures de fichiers, cette méthode peut te dépanner !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 202
    Par défaut
    Merci pour ce 1er élément de réponse.
    Mais effectivement se pose le problème de la taille du fichier: 38610 colonnes, et 19305 lignes....bref le bazar....

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Par défaut
    Te reste la nuit pour mettre 38610 '%s' dans ton textscan alors

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Par défaut
    Tu peux jeter un coup d'oeil de ce côté :

    http://www.mathworks.fr/support/tech...1400/1402.html

    Apparemment, ca correspond à une modification de load pour permettre de définir des headerlines.

  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
    38610 colonnes

    et 19305 lignes re

    Tu es sur d'avoir besoin de tout ?

    Sinon le message te dit que la ligne 3515 n'a pas le même nombre de colonne que les précédentes donc tu vas avoir un souci à ce niveau-là.

    Es-tu bien sur que ton nombre de colonnes est fixe ?

  7. #7
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Je te propose de lire ton fichier ligne par ligne, tu vérifie son contenu et tu sauve, ensuite tu passes à la ligne suivante en mettant tout cela dans un try
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    try marks the beginning of a <a href="jar:file:///C:/Program%20Files/MATLAB/R2009b/help/techdoc/help.jar%21/matlab_prog/bq9l46c-1.html#bq9ta2g-1" target="_blank">try-catch statement</a>, a two-part sequence of commands used in detecting and handling errors. The try-catch enables you to bypass default error handling for selected segments of your program code and use your own procedures instead. The two parts of a try-catch statement are a try block and a <a href="jar:file:///C:/Program%20Files/MATLAB/R2009b/help/techdoc/help.jar%21/ref/catch.html" target="_blank">catch</a> block (see the figure below). The try block begins with the try command and ends just before to the catch command:

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 202
    Par défaut
    38610 colonnes

    et 19305 lignes re

    Tu es sur d'avoir besoin de tout ?
    ...malheureusement, oui, j'ai besoin de tout...


    Tu peux jeter un coup d'œil de ce côté :

    http://www.mathworks.fr/support/tech...1400/1402.html
    Alors je viens d'essayer cette fonction, qui m'a effectivement permis de séparer le header (la partie texte), des données (data).
    Le problème qui se pose pour moi maintenant, est que d'après le fichier, je suis en 38610*19305, soit 745366050 données.

    Mais data me renvoie 38733642 éléments, ce qui m'empêche de faire mon reshape...

    Avez-vous une idée du problème? Peut-il s'agir d'un problème de mémoire?

Discussions similaires

  1. ouvrir un fichier dans la barre des taches
    Par redstoff dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/02/2011, 11h20
  2. [WD-2003] Comment éliminer des lignes inutiles avant un tableau
    Par CSR94 dans le forum VBA Word
    Réponses: 6
    Dernier message: 04/11/2010, 09h05
  3. [AC-2002] ouvrir un fichier txt et supprimer des lignes
    Par Brett dans le forum VBA Access
    Réponses: 2
    Dernier message: 31/03/2010, 16h36
  4. ouvrir un fichier ASCII
    Par Lost in dans le forum Images
    Réponses: 5
    Dernier message: 06/12/2009, 22h09
  5. Réponses: 20
    Dernier message: 30/04/2009, 18h02

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