[Matlab] plotter un fichier .dat

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

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Ç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
    1. 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
    2. @toutfaireSorry 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
    3. 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
    4. 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
    5. 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
  2. Contributeur
    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
    1. 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
      1. Contributeur
        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.
        1. 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
      2. Modérateur
        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.
        1. Egal, l'esentiel est qu'en fin de compte je puisse avoir plotter les valeurs qui se trouvent dans mes fichiers.dat

          bien toi
      3. Contributeur
        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.

        Discussions similaires

        question pix mot caché

        7 réponses