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 :

Exporter des données textes


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Exporter des données textes
    Bonjour, j'ai un problème pour exporter mon fichier texte.

    Voici mon fichier matlab:

    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
    [filename, pathname]=uigetfile('*.prc','sélectionner le fichier .prc');
    if (pathname == 0); return; end;
     fid = fopen(fullfile(pathname,filename),'rt');
    tline = fgetl(fid);
    mat = [];
    tline,
     while (~feof(fid))
        a = strread(tline,'%s','delimiter','=');
     
       if (strcmp(a{1},'SITE'))
            mat = [mat a(2)];
     
        end
        tline = fgetl(fid);
     
     end
     mat,
    et mon fichier texte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fefefe
    ZEZEZ
    SITE A=3
    SITE B=4
    SITE C=5
    Je veux récupérer les chiffres dans la ligne SITE

    Le soucis c'est quand je passe à la ligne suivante matlab me dit : tline=''
    alors qu'il y a encore des lignes en dessous.... et du coup n'extrait pas les chiffres.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Attention à la structure du programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tline = fgetl(fid);
    while (~feof(fid))
        % ...
        tline = fgetl(fid);
    end
    Tu peux très bien être arrivé à la fin de ton fichier en lisant la dernière ligne. Tu sors donc de la boucle alors qu'il reste une donnée à traiter.
    fgetl retournant -1 si l'on se situe à la fin, on peut par exemple vérifier si tline est toujours de type char :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tline = fgetl(fid);
    while ischar(tline)
        % ...
        tline = fgetl(fid);
    end
    Ensuite la ligne if (strcmp(a{1},'SITE')) est incorrecte : a{1} va contenir les A, B et C. Donc plutôt que de comparer la chaîne entière, compare les quatre premiers caractères ('SITE') avec strncmp.

    Enfin, ne pas oublier fclose(fid); à la fin.

    Remarque : si tu as deux lignes d'entête puis le reste en données de la forme SITE X=N, tu peux utiliser la fonction testscan ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    T = textscan(fid, 'SITE %*c=%d', 'headerlines', 2);
    mat = T{1}
    [EDIT] Erreur corrigée, merci FLB.
    Dernière modification par Invité ; 04/04/2013 à 11h10. Motif: Correction erreur

  3. #3
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Hello,
    petit typo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    tline = fgetl(fid);
    while ischar(tline)
        % ...
        tline = fgetl(fid);
    end

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup...

    Question un peu à part: Est-il possible d'ouvrir un dossier avec matlab?

    C'est un dossier avec 5 fichiers excel et en ce moment j'utilise uigetfile('*.csv')
    et j'ouvrir les fichiers un par un.

    Je voudrais ouvrir le dossier et n'ouvrir qu'une seule fois.

    Je pourrais sélectionner en utilisant une boucle for tous les fichiers mais cette solution ne m'interesse pas.

    Je voudrais juste ouvrir le fichier.

    Merci

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En regardant plus en détail la documentation de la fonction doc uigetfile, tu y verras l'option 'MultiSelect' qui devrait t'intéresser

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour la réponse. Je préferais ouvrir seulement un dossier et pas les fichiers je ne sais pas si c'est possible...

    En gros juste charger le chemin du dossier...

    J'ai trouvé une solution jecharge un seul fichier et je récupère son path maisje suppose qu'il doit y avoir une meilleure solution...

  7. #7
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Un petit tour dans les méthodes cousines ("See Also", en bas de la doc) de uigetfile, et hop :

Discussions similaires

  1. Export des données à partir d'un fichier texte
    Par Ti-EN dans le forum VBScript
    Réponses: 1
    Dernier message: 07/05/2014, 13h10
  2. Script pour exporter des données dans fichier texte
    Par dionmaxime dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/03/2011, 05h18
  3. exporter des données vers un fichier text
    Par JauB dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/07/2006, 21h36
  4. importer et exporter des données
    Par denza1 dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/12/2004, 16h34
  5. Exporter des données sous forme de requetes
    Par Pasiphae dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/10/2004, 17h27

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