Lire un fichier texte sur matlab

dragonbleu82dl Messages postés 4 Statut Membre -  
 youva -
Salam
J'ai un petit problem pour lire le fichier si desous sur matlab, en fait j'ai besoin que des deux matrices, et si je lesse que les nombres et j'efface l'ecriture avec la commande load il ne me donne pas les chiffres apres les virgules.
Merci beaucoup.

National Instruments Oscilloscope 1.0a1 Data
Date Created: 02/06/06 03:29:02 PM

USER NAME:
COMMENTS:
WAVEFORM NAME:
START DATA

0,000000E+0 -3,973411E-1
1,000000E-3 -4,428123E-1
2,000000E-3 -4,678367E-1
3,000000E-3 -3,240989E-1
END DATA

WAVEFORM NAME:
START DATA

0,000000E+0 1,712339E+0
1,000000E-3 9,707619E-1
2,000000E-3 2,486875E+0
3,000000E-3 2,233864E-1
END DATA

6 réponses

  1. creativo Messages postés 1 Statut Membre 7
     
    Bonjour,

    Voici une petite fonction pour lire ton fichier brut :

    function WaveFrms = ReadWaveFormeFile( FileName )

    Tampon=[];
    wf=0;
    pfin = fopen( FileName );
    if pfin > 0
    while ~feof(pfin)
    Ligne = fgetl(pfin);
    if strcmp(Ligne,'START DATA')
    wf= wf+1;
    Ligne = fgetl(pfin); % Sauter la ligne vide
    Ligne = fgetl(pfin); % Lire la premiere ligne
    while ~strcmp(Ligne,'END DATA')
    Ligne = strrep(Ligne,',','.');
    Tampon=vertcat(Tampon,str2num(Ligne));
    Ligne = fgetl(pfin);
    end
    WaveFrms{wf} = Tampon; % Sauvegarder la matrice
    Tampon=[]; % Reinitialiser le tampon
    end
    end
    fclose(pfin);
    end

    Utilisation :
    R=ReadWaveFormeFile('mat1.txt')

    Acces aux matrice :

    R{1}

    ans

    0 -0.3973
    0.0010 -0.4428
    0.0020 -0.4678
    0.0030 -0.3241

    R{2}

    ans


    0 1.7123
    0.0010 0.9708
    0.0020 2.4869
    0.0030 0.2234

    R{n} si plus de matrice.

    J'espères avoir répondu à ton attente

    Bon courage
    Creativo

    NB : Désoler pour la mise en forme pas de concervation de la tabulation lors du copier coller
    7
    1. Hey_monkey
       
      Salut,

      Merci pour ce code, il peut m'être utile aussi mais des que j'appelle ta fonction il me reporte une erreur

      Error in ==> Lire at 3
      Tampon=[];

      Peux-tu m'aider?

      Merci.
      0
    2. mumu > Hey_monkey
       
      Salut,
      je suis dans le mem ca que toi, peut tu me dir si tu a trouver une solution pour ce probleme
      merci
      0
    3. Hey_monkey > mumu
       
      Non, je n'ai pas réussi a me servir de cette fonction tel quel mais j'ai réussi a faire, ce que je voulais en m'en inspirant.

      Dans mon cas:

      %% Ouverture des fichiers
      FichierOutput = fopen('Output.txt','w'); FichierInput = fopen('Input.txt','r');
      %% Tant qu'on est pas a la fin du fichier
      Ligne = fgetl(FichierInput);
      while ~feof(FichierInput)
      if strcmp(Ligne,'Datum1')
      %Lecture du datum1
      Tampon=[];
      while ~strcmp(Ligne,'Datum2') Ligne = fgetl(FichierInput); Tampon=vertcat(Tampon,str2num(Ligne));end
      datum1 = Tampon;
      %Lecture du datum2
      Tampon=[];
      while ~strcmp(Ligne,'Datum1') Ligne = fgetl(FichierInput); Tampon=vertcat(Tampon,str2num(Ligne));end
      datum2 = Tampon;
      % Appel la fonction getParameters avec Scale=1
      [tp,ac,tr] = getParameters(datum2,datum1,1);
      % Metres en Millimetres
      Parametres(1)=tp(1)*1000; Parametres(2)=tp(2)*1000; Parametres(3)=tp(3)*1000;
      % Rad en degrés
      Parametres(4)=tp(4)/pi*180; Parametres(5)=tp(5)/pi*180; Parametres(6)=tp(6)/pi*180;
      % Ecrire les paramtres dans fichier
      fprintf(FichierOutput,'%d\t %d\t %d\t %d\t %d\t %d\t %d\n',Parametres);%Parametres
      end
      end
      %% Fermeture des fichiers
      fclose(FichierInput); fclose(FichierOutput);
      0
    4. mumu > Hey_monkey
       
      Merci beaucoup,
      je v essayer ça demain au boulot,
      ++
      0
    5. mumu > Hey_monkey
       
      Salut,
      j'ai un probleme pour ton prog. il ne copie rien dans Output. De plus je ne vois ce que c Datum1 et 2 ça se situe ou dans ton texte? ou si tu peut me passer le fichier à copier? Merki
      0
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    salut.
    Pas clair ton explication.
    essai de remplacer les ',' par des '.'
    et de refaire un "load"
    0
  3. Amine
     
    Merci j'ai remplacé les ',' par des '.' mais il ne me donne toujours pas les chiffres apres la virgule
    0
  4. dragonbleu82dl Messages postés 4 Statut Membre
     
    Merci j'ai remplacé les ',' par des '.' mais il ne me donne toujours pas les chiffres apres la virgule
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Je ne sais pas trop...
    tape "1.001E+3" dans matlab pour voir si il te prend bien les virgules en compte.
    sinon, j'ai une autre technique pour charger les matrices.
    tu met A=[ au début, et ]; à la fin.
    En plus, un load avec deux matrices distinct, dans un même fichier, et sans texte, je ne suis pas sur que ça soit possible.
    Ensuite, est tu sur que ce n'es pas un problème d'affichage des nombre.
    genre, si pour 20001 il t'écris 2e4, essai de lui faire afficher:
    (20001-20000)
    A+
    0
  7. Muammer Messages postés 1 Date d'inscription   Statut Membre
     
    oue c bon merci. C t un probleme de caractere d'espace présent dans le programme. donc il ne pouvai pa detecter la condition de comparaison pour rentrer dans la boucle if. Merci pour tout c gentil
    0