[Matlab] plotter un fichier .dat

Fermé
toutfaire - 20 janv. 2010 à 23:06
 toutfaire - 22 janv. 2010 à 18:08
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.
A voir également:

6 réponses

mamiemando Messages postés 33595 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 mars 2025 7 834
21 janv. 2010 à 01:30
Ç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
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
toutfaire > toutfaire
22 janv. 2010 à 12:24
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
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
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
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
22 janv. 2010 à 12:32
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
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
22 janv. 2010 à 15:49
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33595 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 mars 2025 7 834
22 janv. 2010 à 16:41
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
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
22 janv. 2010 à 17:25
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