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 :

Tri de donnee a partir d un fichier txt


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Tri de donnee a partir d un fichier txt
    Bonjour a tous,
    Je travail sur le logitiel Comsol qui utilise le script Matlab, je suis debutant dans ce domaine. Je dois faire le tri de valeur exporte dans un .txt:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    33        51        
    51        52        
    52        53        
    53        54        
    54        55        
    55        56        
    56        57        
    57        31        
    % Data ((x)[1/(m)])      
    0.0                      
    0.19916594658732073      
    0.39922550850842486      
    0.599285070429529        
    0.7993446323506332
    En fait je veux pouvoir utiliser seulement les valeurs qui sont apres "% Data ((x)[1/(m)])", et enregistrer ces valeurs. De ce que j ai pu voir sur le forum, la fonction fgetl semble approprie, mais je ne vois pas comment l'ecrire, et je ne peux pas utiliser les lignes car "% Data ((x)[1/(m)])" n'est pas toujours a la meme ligne.

    J'espere que vous pourrez m'aider avec ce probleme. Merci d'avance.
    Bonne journee,
    Chris

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    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 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Il suffit de tester le premier caractère de chaque ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    fid = fopen('data.txt','rt');
     
        C = 'A';
     
        while C~='%'
           str = fgetl(fid);
           C = str(1);
        end
     
        M = fscanf(fid,'%f');
     
    fclose(fid);

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup, je voulais aussi savoir, s il vous plait si c est possible de recuperer les donnees apres plusieurs "%" (repere dans le .txt)?
    Par exemple je voudrais avoir juste les donnees qui sont apres "% Data ((x)[1/(m)])", sachant que c'est toujours le 3eme "%":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    % Coordinates
    0.0                      3.0                      
    0.19916594               3.0                      
    0.3992255                3.0     
    % Elements (lines)
    1         2         
    2         3         
    3         4             
    % Data ((x)[1/(m)])      
    0.0                      
    0.19916594658732073      
    0.39922550850842486

    J ai essaye de remplacer le "%" par "% Data ((x)[1/(m)]) ", mais il me renvoi toujours au premier "%".

    Et sinon le programme fonctionne tres bien sur Matlab, mais il me renvoi une erreur sur COMSOL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error: Error converting tokens; possible format string mismatch.
    Error in built-in function fscanf.
    Une idee de ce que ca peut etre?

    Merci encore.
    Bonne journee,
    Christophe

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    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 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Il faut alors utilise STRNCMP pour comparer un certain nombre de caractères d'une chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    fid = fopen('data.txt','rt');
     
        str = 'AAAAAA';
     
        while ~strncmp(str,'% Data',6)
           str = fgetl(fid);
        end
     
        M = fscanf(fid,'%f');
     
    fclose(fid);

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Ca marche super, merci infiniment pour ton aide.
    Bonne continuation
    Christophe

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/04/2012, 17h52
  2. Extraction de donnees a partir d'un fichier excel
    Par atv_picco dans le forum Modules
    Réponses: 6
    Dernier message: 31/08/2006, 18h34
  3. Réponses: 3
    Dernier message: 08/08/2006, 02h50
  4. Réponses: 4
    Dernier message: 19/03/2006, 15h20
  5. Réponses: 4
    Dernier message: 27/07/2005, 11h51

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