Octave < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:11 Di 29.09.2009 | Autor: | s4y |
Aufgabe | Guten Tag, und zwar würde ich gerne wissen, wie ich eine Datei einlese. Das Problem ist die Datei soll nicht verändert werden.
Sie sieht ungefähr so aus.
Zeit Temperatur1 Temperatur2
16:15:07 15,3 32,4
16:15:17 15,6 45,4
16:15:27 17,5 56,6
|
ch habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
Es sind noch mehr Spalten vorhanden und auch noch mehr Zeilen. Mein Problem ist zum einen der Zeitsempel (16:15:07) und zum anderen das Komma. Er bringt mir beim Komma immer Fehler, wenn ich einen Punkt einsetze läuft es. Ferner kann er die Zeit nicht einlesen. Weiß jemand wie ich beides ohne die Datei zu verändern einlesen kann. Ich weiß zu dem auch nicht wie ich die Daten ohne der obersten Textzeile einlesen kann. Praktisch nur Abschnittsweise.
Vielen vielen Dank im Voraus für jede Hilfe.
Gruß Sebastian
|
|
|
|
Hallo s4y,
> Guten Tag, und zwar würde ich gerne wissen, wie ich eine
> Datei einlese. Das Problem ist die Datei soll nicht
> verändert werden.
> Sie sieht ungefähr so aus.
>
> Zeit Temperatur1 Temperatur2
> 16:15:07 15,3 32,4
> 16:15:17 15,6 45,4
> 16:15:27 17,5 56,6
>
>
>
>
> ch habe diese Frage auch in folgenden Foren auf anderen
> Internetseiten gestellt:
> Es sind noch mehr Spalten vorhanden und auch noch mehr
> Zeilen. Mein Problem ist zum einen der Zeitsempel
> (16:15:07) und zum anderen das Komma. Er bringt mir beim
> Komma immer Fehler, wenn ich einen Punkt einsetze läuft
> es. Ferner kann er die Zeit nicht einlesen. Weiß jemand
> wie ich beides ohne die Datei zu verändern einlesen kann.
> Ich weiß zu dem auch nicht wie ich die Daten ohne der
> obersten Textzeile einlesen kann. Praktisch nur
> Abschnittsweise.
Schau Dir hierzu dieses Octave-Tutorial an.
> Vielen vielen Dank im Voraus für jede Hilfe.
> Gruß Sebastian
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 11:54 Mi 30.09.2009 | Autor: | s4y |
Hallo, ich muss nochmal fragen.
Ich hab mein Programm soweit schon fertig und es läuft auch bis auf ein Fehler.
Das ist das Programm:
[fid] = fopen("test2.txt", "r", "native");
kopfzeile = fgetl(fid);
[m, count] = fscanf(fid, "%f:%f:%f %f %f %f %f %f %f",[2,9]);
fclose(fid);
m
mit dieser Datei:
Text Text Text Text ....
16:09:06 32.41 32.63 36.43 36.63 36.65 34.56
16:09:13 32.39 35.63 46.43 66.83 26.65 34.56
Gibt er mir so eine Martix 2x7 aus :
16.000 6.000 32.630 36.630 34.560 9.000 32.390
9.000 32.410 36.430 36.650 16.000 13.000 35.630
Er trägt halt immer pro Spalte ein bis diese voll ist und geht dann über zur nächsten. Er soll aber pro Zeile ausgeben. Das wäre wichtig.
so sollte die Matrix in Octave aus der Datei aussehen
16 09 06 32.41 32.63 36.43 36.63 36.65 34.56
16 09 13 32.39 35.63 46.43 66.83 26.65 34.56
Aber ich weiß nicht wie ich das Problem lösen kann das er pro Zeile einliest.
Vielen Dank für die Hilfe schonmal im Voraus. Bin dankbar für jede Hilfe.
Sebastian
|
|
|
|
|
Hallo s4y,
> Hallo, ich muss nochmal fragen.
> Ich hab mein Programm soweit schon fertig und es läuft
> auch bis auf ein Fehler.
> Das ist das Programm:
> [fid] = fopen("test2.txt", "r", "native");
> kopfzeile = fgetl(fid);
> [m, count] = fscanf(fid, "%f:%f:%f %f %f %f %f %f
> %f",[2,9]);
> fclose(fid);
> m
>
> mit dieser Datei:
> Text Text Text Text ....
> 16:09:06 32.41 32.63 36.43 36.63 36.65 34.56
> 16:09:13 32.39 35.63 46.43 66.83 26.65 34.56
>
>
> Gibt er mir so eine Martix 2x7 aus :
> 16.000 6.000 32.630 36.630 34.560 9.000 32.390
> 9.000 32.410 36.430 36.650 16.000 13.000 35.630
> Er trägt halt immer pro Spalte ein bis diese voll ist und
> geht dann über zur nächsten. Er soll aber pro Zeile
> ausgeben. Das wäre wichtig.
>
> so sollte die Matrix in Octave aus der Datei aussehen
> 16 09 06 32.41 32.63 36.43 36.63 36.65 34.56
> 16 09 13 32.39 35.63 46.43 66.83 26.65 34.56
>
> Aber ich weiß nicht wie ich das Problem lösen kann das er
> pro Zeile einliest.
Lese hier zunaächst so ein:
[m, count] = fscanf(fid, "%f:%f:%f %f %f %f %f %f %f",[ 9,2 ]);
Dann erhältst Du:
m =
16.0000 16.0000
9.0000 9.0000
6.0000 13.0000
32.4100 32.3900
32.6300 35.6300
36.4300 46.4300
36.6300 66.8300
36.6500 26.6500
34.5600 34.5600
Dies kannst Du wiederum transponieren:
transpose(m)
ans =
Columns 1 through 7:
16.0000 9.0000 6.0000 32.4100 32.6300 36.4300 36.6300
16.0000 9.0000 13.0000 32.3900 35.6300 46.4300 66.8300
Columns 8 and 9:
36.6500 34.5600
26.6500 34.5600
> Vielen Dank für die Hilfe schonmal im Voraus. Bin dankbar
> für jede Hilfe.
> Sebastian
Gruss
MathePower
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 11:04 Mo 05.10.2009 | Autor: | s4y |
Hallo, ich hab nochmal eine Frage und zwar bezüglich der Textzeile in der Datei.
Die Datei sieht so aus:
Tasd Bs Req wr Dqw rqr hy
3:04:34 5.34 -3 3 45.6 -3 3
3:03:34 5.34 -35 6 45.6 -35 6
3:43:2 5.34 -35 6 45.6 -35 6
Ich hab den Befehl: "textline = fgetl(fid);" benutzt um die erste Zeile zu extrahieren.
Das gibt er dann aus für textline:
Tasd Bs Req wr Dqw rqr hy
DAs Problem ist wenn ich den Befehl "A=textline(:,1);" benutze gibt er mir das aus:
A=T
Aber ich brauche das ganze Wort "Tasd", jedoch ohne den Befehl
"A=textline(:,1:4)" zu benutzen. Ich muss halt das Wort "Tasd" verändern können und das kann dann mehr als vier Buchstaben beinhalten.
Das gleiche macht er bei diesem Befehl:
H = fscanf(fid, '%s %s %s %s %s %s%s', [7 1]);
Er speichert immer die einzelnen Buchstaben. Ich weiß nicht ob ich das gleich beim Speichern verändern kann, so dass er mir das ganze Wort ausgibt. Oder ob es auch funktioniert, wenn ich ein Befehl habe der das Wort so aus der Matrix herausnimmt.
Bin dankbar für jede Hilfe.
Danke schonmal im Voraus.
Sebastian
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:20 Mi 07.10.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|