Daten aus Datei einlesen < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 14:06 Do 15.02.2007 | Autor: | justize |
Ich habe folgendes Problem:
Ich habe eine .csv Datei mit unbestimmter Länge. Format sieht aus wie folgt:
2007.02.06,07:55,1.2922,1.2922,1.2921,1.2922,7
2007.02.06,08:00,1.2923,1.2923,1.2918,1.2920,12
...
Die einzelnen Daten sind also durch Kommas getrennt.
Ich möchte diese Werte nun in Matlab zum weiterarbeiten entweder in eine große Matrix oder besser in einzelne Vektoren einlesen und abspeichern.
Aber ich komme nicht drauf, wie ich Matlab sagen soll, welcher Wert zu welcher Variable zugewiesen werden soll.
Hier ist mein Versuch, das ganze in Matlab 6.5 (R13) zu lösen:
function oeffnen(file) % Funktion für m-File
% file ist der Dateiname
% Aufruf: oeffnen('Dateiname')
datei = fopen(file,'r'); %Datei öffnen
m = 0;
while 1 %Datensätze zählen
line = fgetl(datei);
if line == -1
break;
else
m = m + 1;
end
end
m = m/2;
%Vektoren anlegen
time = zeros(m,1); %Zeitvektor
open = zeros(m,1); %Open
high = zeros(m,1); %High
low = zeros(m,1); %Low
close = zeros(m,1); %Close
vol = zeros(m,1); %Volumen
anz = m; %Anzahl
fseek(datei, 0, 'bof'); %Zeiger auf Anfang der Datei setzen
line = fgetl(datei);
%-------------------------------------------------------
%---------------
%Daten zuordnen zum speichern????????
%---------------
%-------------------------------------------------------
fclose(datei);
save anz;
save time;
save open;
save high;
save low;
save close;
save vol;
------------------
Ich bekomme die Zuordnung leider nicht hin...
Kann mir da jemand helfen?
Zu den Variablen: anz ist die Anzahl der Zeilen
Die anderen Variablen sind schon so geordnet, wie sie auch durch Kommas in der Datendatei abgelegt wären.
MfG JustY
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo,
du solltest als Variablennamen keine potentielen Schlüsselwörter benutzen. Also habe ich alle Namen mal um _v erweitert.
Die Zeit- bzw. Datumsangaben lassen sich nicht einfach als Zahlen einlesen. Die solltest du als String übernehmen und dann ggf. umrechnen (dafür gibt es auch schon Funktionen).
Das Einlesen geht in einer Zeile:
[time_v, open_v, high_v, low_v, close_v, vol_v, anz_v] = textread('Dateiname','%s%s%f%f%f%f%u','delimiter',',');
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 07:59 Fr 16.02.2007 | Autor: | justize |
Genial Danke!
Das hat mir sehr geholfen, danke ;)
|
|
|
|