[Matlab] plotter un fichier .dat
toutfaire
-
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.
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
-
Ç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-
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- 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
-
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 -
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 -
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
-
-
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
-
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 -
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. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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.
-
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.