[Matlab] plotter un fichier .dat

toutfaire -  
 toutfaire -
Bonjour,

J'ai le problem suivant; j'ai un fichier avec extension .dat qui contient des mesures. Seulement ces mesures sont nombreuses et je voudrais donc plotter les avec matlab.
Qulequ'un aurait-il une idee de comment je peux proceder?

Merci pour toute aide.
Configuration: Windows XP
Firefox 3.5.7

6 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    Ça me paraît plus raisonnable d'utiliser gnuplot.
    http://www.gnuplot.info/

    Et sinon en matlab :
    https://forums.commentcamarche.net/forum/affich-12614564-matlab-extraire-donnees-de-plusieurs-dat

    Bonne chance
    0
    1. toutfaire
       
      Salut mamiemando,

      merci deja pour ta reponse. J'ai lu effectivement le gnuplot et il est vraiment beaucoup plus pour mon probleme.
      Seulement j'ai un autre probleme qui se pose: et bien j'ai suivi la commande qui demande de loaden le fichier a plotter, mais seulement le gnuplot ne cesse de ,me dire ''expecting filename''; j'ai procede comme suit:(je dois preciser ici que je travaille dans Linux)

      gnuplot> load Name
      0
      1. toutfaire > toutfaire
         
        Sorry j'ai eu un petit problem.

        Comme je disais mon fichier est compose de 13 colonnes et une multitudes de lignes; le problem qui se pose est que avant de plotter je dois d'abord multiplier une(la premiere) ligne avec toutes les colonnes.
        ma procedure est la suivante:

        gnuplot> load 141 nom_fichier.dat (car c'est ainsi que mes fichiers se font appeller)
        mais la, il me dit "expecting filename" en pointant la fleche sur le 141: je ne comprend pas trop ce qu'il attend d'autre; en plus j'ai verifier avec "pwd" je suis bien dans le fichierdirecteur ou se trouvent mes fichiers a plotter(car j'en ai pres d'une centaine)

        Merci pour votre aide
        0
    2. toutfaire
       
      Slut c'est encore moi,

      j'ai lu le procede avec matlab et j'essaye la depuis de le faire mais je ne comprend pas les 2 lignes:

      numfile=num2str(10000+p);
      numfile=numfile(2:end);

      car dans mon cas j'ai 13 colonnes d'un nombre infini de ligne avec environ 5000 fichiers(le nom est aussi incremente), un peu dans le genre:

      Distance 2 Valeurs : 256,00[µsec], Time-misses gesamt : 00:00:08[sec]

      GR1-X GR1-Y GR1-Z GR2-X GR2-Y GR2-Z AR-X AR-Y AR-Z BR-X BR-Y BR-Z C-Achse

      199,716 199,907 5014,473 499,925 499,697 5018,536 2001,964 499,696 9974,746 2021,627 999,863 20018,36 10009,98

      N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V
      3 6 0 0 -11 6 9 -10 6 -10 0 2 -5
      3 9 2 3 -15 2 8 -15 7 -11 -3 -2 -5
      3 7 1 1 -15 7 8 -13 8 -5 1 3 -5
      3 7 0 3 -11 5 9 -11 9 -10 2 0 -6
      2 5 3 2 -11 5 7 -11 8 -10 2 0 -5
      5 7 0 0 -11 5 7 -11 7 -11 1 0 -5
      6 7 1 2 -14 5 9 -11 7 -10 0 2 -6
      2 3 2 0 -11 5 7 -11 8 -11 -2 1 -5


      et les chiffres en italliques(au total 13) doivent tous etre multiplies colonne par colonne c'est a dire
      par exemple
      199,716*(3; 3; 3; 3; 2; 5; 6; 2) et ainsi de suite jusqu'a la fin

      Alors je me represente un peu la chose de la sorte:

      C=cell(1:13,5000);
      for p=1:5000
      numfile=num2str(10000+p); que represente le 10000 ici pour toi?
      numfile=numfile(2:end);
      fid=fopen(['file' numfile '.dat'],'r');
      C(:,:,p)=textscan(fid, '%f %f');
      fclose(fid);
      end
      C=cell2mat(C);

      seulement qu'en plus je dois faire le plot

      quelqu'un serait-il assez gentil pour me dire si oui ou non je suis sur le chemin?

      Merci
      0
    3. toutfaire
       
      Slut c'est encore moi,

      @Char Snipeur: En fait mon fichier s'appelle 142 kraft.dat, 143 kraft.dat, ... , 200 kraft.dat et a la forme

      Distance 2 Valeurs : 256,00[µsec], Time-misses gesamt : 00:00:08[sec]

      GR1-X GR1-Y GR1-Z GR2-X GR2-Y GR2-Z AR-X AR-Y AR-Z BR-X BR-Y BR-Z C-Achse

      199,716 199,907 5014,473 499,925 499,697 5018,536 2001,964 499,696 9974,746 2021,627 999,863 20018,36 10009,98

      N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V
      3 6 0 0 -11 6 9 -10 6 -10 0 2 -5
      3 9 2 3 -15 2 8 -15 7 -11 -3 -2 -5
      3 7 1 1 -15 7 8 -13 8 -5 1 3 -5
      3 7 0 3 -11 5 9 -11 9 -10 2 0 -6
      2 5 3 2 -11 5 7 -11 8 -10 2 0 -5
      5 7 0 0 -11 5 7 -11 7 -11 1 0 -5
      6 7 1 2 -14 5 9 -11 7 -10 0 2 -6
      2 3 2 0 -11 5 7 -11 8 -11 -2 1 -5


      et les chiffres en italliques(au total 13) doivent tous etre multiplies colonne par colonne c'est a dire
      par exemple
      199,716*(3; 3; 3; 3; 2; 5; 6; 2) et ainsi de suite jusqu'a la fin

      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      j'ai lu le procede avec matlab et j'essaye aussi la depuis de le faire mais je ne comprend pas les 2 lignes:

      numfile=num2str(10000+p);
      numfile=numfile(2:end);

      car dans mon cas j'ai 13 colonnes d'un nombre infini de ligne avec environ 5000 fichiers(le nom est aussi incremente), un peu dans le genre:



      Alors je me represente un peu la chose de la sorte:

      C=cell(1:13,5000);
      for p=1:5000
      numfile=num2str(10000+p); que represente le 10000 ici pour toi?
      numfile=numfile(2:end);
      fid=fopen(['file' numfile '.dat'],'r');
      C(:,:,p)=textscan(fid, '%f %f');
      fclose(fid);
      end
      C=cell2mat(C);

      seulement qu'en plus je dois faire le plot

      quelqu'un serait-il assez gentil pour me dire si oui ou non je suis sur le chemin?

      Merci
      0
    4. toutfaire
       
      Slut c'est encore moi,

      j'ai lu le procede avec matlab et j'essaye la depuis de le faire mais je ne comprend pas les 2 lignes:

      numfile=num2str(10000+p);
      numfile=numfile(2:end);

      car dans mon cas j'ai 13 colonnes d'un nombre infini de ligne avec environ 5000 fichiers(le nom est aussi incremente), un peu dans le genre:

      Distance 2 Valeurs : 256,00[µsec], Time-misses gesamt : 00:00:08[sec]

      GR1-X GR1-Y GR1-Z GR2-X GR2-Y GR2-Z AR-X AR-Y AR-Z BR-X BR-Y BR-Z C-Achse

      199,716 199,907 5014,473 499,925 499,697 5018,536 2001,964 499,696 9974,746 2021,627 999,863 20018,36 10009,98

      N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V N/10V
      3 6 0 0 -11 6 9 -10 6 -10 0 2 -5
      3 9 2 3 -15 2 8 -15 7 -11 -3 -2 -5
      3 7 1 1 -15 7 8 -13 8 -5 1 3 -5
      3 7 0 3 -11 5 9 -11 9 -10 2 0 -6
      2 5 3 2 -11 5 7 -11 8 -10 2 0 -5
      5 7 0 0 -11 5 7 -11 7 -11 1 0 -5
      6 7 1 2 -14 5 9 -11 7 -10 0 2 -6
      2 3 2 0 -11 5 7 -11 8 -11 -2 1 -5


      et les chiffres en italliques(au total 13) doivent tous etre multiplies colonne par colonne c'est a dire
      par exemple
      199,716*(3; 3; 3; 3; 2; 5; 6; 2) et ainsi de suite jusqu'a la fin

      Alors je me represente un peu la chose de la sorte:

      C=cell(1:13,5000);
      for p=1:5000
      numfile=num2str(10000+p); que represente le 10000 ici pour toi?
      numfile=numfile(2:end);
      fid=fopen(['file' numfile '.dat'],'r');
      C(:,:,p)=textscan(fid, '%f %f');
      fclose(fid);
      end
      C=cell2mat(C);

      seulement qu'en plus je dois faire le plot

      quelqu'un serait-il assez gentil pour me dire si oui ou non je suis sur le chemin?

      Merci
      0
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Il faut mettre des guillemets.
    load 'machin.dat'
    Mais es tu sur de la commandes ?
    En matlab (octave) je ferai un load, mais en gnuplot :
    plot 'fichier.dat' u  (($1*$2)):2 w l
    0
  3. toutfaire
     
    Slut,

    sans vouloir te contredire voila ce qu'il me donne apres avoir essaye avec les guillemets
    can't read data file "kraft142.dat"
    util.c: No such file or directory


    le problem est qu'il ne reconnait pas du tout le fichier que veux plotter on dirait.

    bien a toi
    0
  4. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    au moins il trouve ton fichier.
    Il est peut être mal formaté, mais c'est une autre problème.
    Il faut mettre des * en début de ligne sur les en tête de fichier.
    0
    1. toutfaire
       
      en fait je crois plkutot que ce soit mon fichier qui soit mal formate. Saurais-tu peut-etre comment je peux le formater avec matlab ou tout autre chose?


      je m'incline tu as toujours raison
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    Euh finalement tu fais du gnuplot ou du matlab ? Parce que si c'est du gnuplot je pense que vous faites tout les deux fausse route.
    0
    1. toutfaire
       
      Egal, l'esentiel est qu'en fin de compte je puisse avoir plotter les valeurs qui se trouvent dans mes fichiers.dat

      bien toi
      0
  7. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    On va gagner du temps, à quoi il ressemble ton fichier exactement ?
    Moi, j'utilise les deux de manière assez indifférente.
    Coment s'appel ton fichier aussi ? je ne comprends pas ta commande "load 141 nom_fichier.dat" le 141 surtout.
    0