Hallo ich habe eine Tab separierte Messdateimit drei Zeilen header in der ersten Zeile stehen die Messnamen in der Zweiten Zeile die Einheit und in der dritten Zeile der Messverstärker. Folgend sin dann die Messdaten. ungefähr so Spannung_1 Spannung_2 Strom_1 Strom_2 V V mA mA Amp_1.1 Amp_2.1 Amp_1.2 Amp_2.2 10 25 550 660 25 32 230 325 22 12 123 523 nun hätte ich gerne das Matlab mir Variablen erstält die zu den Messnamen passen Spannung_1 10 25 22 Spannung_2 25 32 12 Strom_1 550 230 123 Strom_2 660 325 523 kann mir einer helfen diesbezüglich?
Stefan L. schrieb: > nun hätte ich gerne das Matlab mir Variablen erstält die zu den > Messnamen passen Das erreicht man in Matlab mit der Funktion "genvarname". Also: die Elemente der ersten Zeile als Strings einlesen. Dann mit 'genvarname' die Variablennamen generieren. Dann die Messwerte einlesen. Zum Schluss mit "eval" die Daten den Variablen mit den generierten Namen zuweisen. Wie formatierter Text aus ASCII Dateien eingelesen wird weißt Du?
nein das weis ich nicht so richtig, wie man formatierte ASCII dateien einliest bin noch ziemlich neu in Matlab
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.