Stefan L. schrieb:
> das weis ich nicht so richtig, wie man formatierte ASCII dateien
> einliest
Da bietet Matlab verschiedene Möglichkeiten. Ich würde in Deinem Fall
die ersten 3 Headerzeilen zeilenweise mit "fgetl" einlesen (natürlich
erst die Datei mit "fopen" öffnen). Die erste Zeile wird einer
String-Variablen zugewiesen, da zweite und dritte Zeile nicht benötigt
werden, kann deren Inhalt gleich wieder verworfen werden:
1 | file_id=fopen('daten.txt','r');
|
2 |
|
3 | line1=fgetl(file_id);
|
4 | fgetl(file_id);
|
5 | fgetl(file_id);
|
Jetzt die tab-separierten Daten in einem Rutsch mittels "textscan"
einlesen. Nicht vergessen, die Datei danach wieder zu schließen:
1 | data=textscan(file_id,'%d\t%d\t%d\t%d');
|
2 |
|
3 | fclose(file_id);
|
Die Variable "data" repräsentiert ein sogenanntes cell array. Jedes
Element des cell arrays einen vector mit den Werten der Spalten Deiner
Datei.
Für die Generierung der Variablennamen jetzt die vorhin eingelesene
erste Zeile in Einzelstrings zerlegen. Die Matlabfunktion "strread"
benötigt dafür die Angabe des Trennzeichens, bei Dir tab, also "\t". Aus
den Strings kannst Du dann mit "genvarname" die Variablennamen
generieren:
1 | s=strread(line1,'%s', 'delimiter', '\t');
|
2 | v=genvarname(s);
|
Auch die Variable v repräsentiert ein cell array. Diesmal sind die
Elemente Strings, die als Variablennamen verwendet werden können.
Jetzt noch mit "eval" die Spaltenvektoren den Variablennamenstrings
zuordnen:
1 | for n=(1:4)
|
2 | eval([v{n} '=data{n}']) ;
|
3 | end
|
FÜr die Besonderheiten, die bei Verwendung von "genvarname" zu beachten
sind, und auch für die Beschreibungen der anderen Funktionen empfehle
ich die ausführliche Hilfe von Matlab.