datei.dat plotten in Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 00:52 Fr 29.01.2010 | Autor: | fmath |
Aufgabe | Hallo,
Für mein Projekt in Mattlab; ich möchte ein par Dateien(ca 2000) mit der Endung .dat plotten. In jedem Datei befindet sich Messwerte(sehr viel). Das Problem ist befor ich ein Datei.dat plotte, muss ich vorerst eine Multiplikation zwischen diesen Messwerte machen.
Eine Datei.dat sieht ungefähr so aus: Datei- Anhang
dabei muss ich in jeder Spalte A, B, C, D eine Multiplikation derart:
[mm] a\*n_{0}=a_{n_{0}} [/mm]
[mm] a\*n_{1}=a_{n_{1}} [/mm]
[mm] a\*n_{2}=a_{n_{2}}
[/mm]
[mm] a\*n_{3}=a_{n_{3}}
[/mm]
[mm] \vdots
[/mm]
[mm] a\*n_{9}=a_{n_{9}}
[/mm]
das gleiche sollte mit der restlichen Spalte und dann soll das Ergebnis(also die [mm] a_{n_{i}}, [/mm] i = 1,2,3, [mm] \cdots, [/mm] 9) geplottet werden. |
Frage:
1. Wie kann ich so eine Datei.dat, die so viel Werte enthalten mit Matlab plotten?
2. Wie sollte ich mit dieser Multiplikation vorgehen? kennt ihr vielleicht eine Art es schnell durchzuführen?
3. Könnt ihr vielleicht ein Tipps, das ganze gut und übersichlich zu machen?
Habe zwar mit Gnuplot versucht aber meine Datein entsprechen nicht der Standardformat, also es sollte formatiert werden; nur weiss nicht nicht wie.
Hättet ihr vielleicht Ideen?
Danke im Voraus
fmath
Dateianhänge: Anhang Nr. 1 (Typ: xlsx) [nicht öffentlich]
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:49 Fr 29.01.2010 | Autor: | Frasier |
Hallo fmath,
was sind denn diese a1, a2, b1, b2 usw?
Die werden ignoriert?
lg
F.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:14 Fr 29.01.2010 | Autor: | fmath |
Hallo f,
die a1, a2 usw sind nicht zu beachten, die sollen einfach ignoriert werden, die sind nur Namen die im Datei stehen.
Vg
fmath
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:39 Fr 29.01.2010 | Autor: | Frasier |
Hallo fmath,
angenommen, die Datei daten.txt sieht so aus:
3 4 5 6
99 99 99 99
99 99 99 99
1 1 1 1
4 4 1 4
7 8 6 3
8 6 5 3
9 3 6 2
3 8 2 3
2 4 5 2
0 0 0 0
Dann solltest du mit
data=load('daten.txt','-ascii');
p=zeros(size(data,1)-3,size(data,2));
for k=1:4
p(1:end,k)=data(4:end,k)*data(1,k);
end
plot(p);
deinen Plot erstellen können.
lg
F.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 18:31 Fr 29.01.2010 | Autor: | fmath |
Hallo noch mal F,
ich versuche gerade erstmal der Datei zu laden, aber er sagt mir ständig
Error using ==> load, Number of columns on line 1 of ASCII file /home/Documents/MATLAB/Documents/smart.dat must be the same as previous lines.
Ich glaube das Problem liegt daran, dass die erste Zeile meiner Datei nicht so ganz der restliche Zeilen entspricht und es stimmt ja auch.
Was kann ich dagegen machen?
Danke für jede Bemühung.
lara
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:40 Fr 29.01.2010 | Autor: | Frasier |
Hallo fmath,
ja, die Fähigkeiten von load sind beschränkt; dafür ist es sehr einfach. Das klappt vor allem dann nicht, wenn Text und numerische Daten gemischt sind. Das ist dann wohl bei dir der Fall? Kannst du dann nochmal die ersten paar Zeilen deiner Datei hochladen?
Man kann der Sache dann mit textscan zu Leibe rücken.
lg
F.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 23:16 Fr 29.01.2010 | Autor: | Frasier |
Hallo nochmal,
hier ein etwas besserer Vorschlag:
1: | fid=fopen('daten.txt','rt');
| 2: | faktoren=str2num(fgetl(fid));
| 3: | ncols=numel(faktoren);
| 4: | fstr=[repmat('%f',1,ncols) '\n'];
| 5: | fseek(fid,0,'bof');
| 6: | daten=textscan(fid,fstr','MultipleDelimsAsOne',1,'HeaderLines',3);
| 7: | fclose(fid);
| 8: | daten=[daten{:}];
| 9: | plot(daten.*repmat(faktoren,size(daten,1),1)); |
Es ist aber wichtig, dass die erste Zeile der Datei ganz genau so viele Spalten hat, wie die Zeilen ab einschließlich der 4.
Alle (dir unbekannten) Befehle solltest du auch in der Hilfe nachschlagen.
lg
F.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:42 So 31.01.2010 | Autor: | fmath |
Hallo Frasier,
es ist ja genau das Problem in diese Dateien, die erste Zeile ist total anders.
Im Anhang ein Beipiel meiner Datei:Datei-Anhang.
Grüsse
fmath
Dateianhänge: Anhang Nr. 1 (Typ: dat) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:19 So 31.01.2010 | Autor: | Frasier |
Hallo,
nach dem Excel-File dachte ich, die Faktoren stünden in der ersten Zeile.
Edit: Ich setzte voraus, dass du die , durch . ersetzt hast.
Versuch es mal so:
1: | fid=fopen('daten.dat','rt');
| 2: | fstr=[repmat('%f',1,13) '\n'];
| 3: | faktoren=textscan(fid,fstr,1,'HeaderLines',2);
| 4: | fseek(fid,0,'bof');
| 5: | daten=textscan(fid,fstr','MultipleDelimsAsOne',1,'HeaderLines',4);
| 6: | fclose(fid);
| 7: | faktoren=[faktoren{:}];
| 8: | daten=[daten{:}];
| 9: | plot(daten.*repmat(faktoren,size(daten,1),1)); |
lg
F.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:02 So 31.01.2010 | Autor: | fmath |
Hi und danke nochmal,
Ich werde es mal probieren und sehen ob es läuft.
Bis dann
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 19:00 Mo 01.02.2010 | Autor: | fmath |
Hallo Frasier,
ich bin's noch mal, ich habe es probiert und es funktioniert auch. Nur was mir Sorge bereitet ist dass mein Plotaugabe nur ein einziges Bild enthaelt, obwohl ich eigentlich 13 Spalten habe. Ist es normal so?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:54 Mo 01.02.2010 | Autor: | Frasier |
Hallo,
ja, das ist normal weil ich es so programmiert habe.
Wenn du mehrere Fenster haben möchtest ist das aber auch kein Problem:
fid=fopen('daten.dat','rt');
fstr=[repmat('%f',1,13) [mm] '\n'];
[/mm]
faktoren=textscan(fid,fstr,1,'HeaderLines',2);
fseek(fid,0,'bof');
legende=textscan(fid,[repmat('%s',1,13) [mm] '\n'],1,'HeaderLines',1);
[/mm]
fseek(fid,0,'bof');
daten=textscan(fid,fstr','MultipleDelimsAsOne',1,'HeaderLines',4);
fclose(fid);
faktoren=[faktoren{:}];
daten=[daten{:}];
daten=daten.*repmat(faktoren,size(daten,1),1);
for k=1:13
figure;
plot(daten(:,k));
title(legende{k});
end
lg
F.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 13:21 Fr 05.02.2010 | Autor: | fmath |
Hallo,
ich versuche seit geräumiges Zeit weiter, aber stöße auf folgendes Problem:
faktoren=textscan(fid,fstr,1,'HeaderLines',2);
bei der oben gegebene Zeile stop die mein Program, obwohl die Syntax richtig ist, was könnte der Grund dafür sein?.
Danke für eure Hilfe.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:51 Fr 05.02.2010 | Autor: | Frasier |
Hallo,
du sagtest doch, dass es schon funktioniert hat, aber dass nur ein einzelnes Fenster kam.
Hast du dann noch was geändert?
Und irgendwie sind mir in den Code nach fstr Apostrophs reingerutscht. Die gehören da natürlich nicht hin.
Der richtige Code ist also
1: | fid=fopen('daten.dat','rt');
| 2: | fstr=[repmat('%f',1,13) '\n'];
| 3: | faktoren=textscan(fid,fstr,1,'HeaderLines',2);
| 4: | fseek(fid,0,'bof');
| 5: | legende=textscan(fid,[repmat('%s',1,13) '\n'],1,'HeaderLines',1);
| 6: | fseek(fid,0,'bof');
| 7: | daten=textscan(fid,fstr,'MultipleDelimsAsOne',1,'HeaderLines',4);
| 8: | fclose(fid);
| 9: | faktoren=[faktoren{:}];
| 10: | daten=[daten{:}];
| 11: | daten=daten.*repmat(faktoren,size(daten,1),1);
| 12: | for k=1:13
| 13: | figure;
| 14: | plot(daten(:,k));
| 15: | title(legende{k});
| 16: | end |
Klappt es damit? Oder kommt eine Fehlermeldung?
lg
F.
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 19:27 Mi 03.03.2010 | Autor: | fmath |
Hallo Frasier,
sorry, aber war's wieder Prüfungszeit und ich musste erstmal mein Projekt auf Seite legen, bin aber jetzt zurück.
Ich habe ehe an der vorleletzte Version bischen was geändert und es hat funktioniert. Nun habe ich folgendes Problem:
Ich habe es so programmiert, dass das programm die geplotteten Ausgabe direkt gedruckt wird(also, an einem Drucker), es ist aber so, dass die Daten(1-13), die auf einem A4 gedruckt wird zu nah an einander sind.
Ich habe bis lang nur den A4 als "Landscape" ändern können.
. wie könnte ich die Größe der Bilder ändern oder beziehungsweise der Abstand zwischen einzelnen geplotteten Bilder manuel vergrössern?
hast du oder Jemand vielleicht eine Idee?
Lg
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:20 Do 18.03.2010 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|