Frage

Betrachten Sie die folgende Datei

var1 var2 variable3
1     2    3
11    22   33

Ich möchte die Zahlen in einer Matrix, und die Spaltentitel in eine Variable laden, die gleichwertig sein würde:

variable_names = char('var1', 'var2', 'variable3');

Ich habe nichts dagegen, die Namen zu spalten und die Zahlen in zwei Dateien, Matlab-Code-Dateien jedoch die Vorbereitung und eval'ing sie keine Option ist.

Beachten Sie, dass es kann eine beliebige Anzahl von Variablen (Spalten) sein

War es hilfreich?

Lösung

Ich schlage vor, import für Operationen wie folgt aus:

d = importdata('filename.txt');

Die Rückkehr ist eine Struktur mit den numerischen Feldern in einem Elemente ‚Daten‘ und die Spaltenüberschriften in einem Feld namens ‚colheaders‘ genannt.

Eine weitere nützliche Schnittstelle für den Import von Daten, wie diese Manipulation ist die ‚Datensatz‘ Klasse in der Statistics Toolbox.

Andere Tipps

Wenn der Header in der ersten Reihe ist dann

A = dlmread(filename,delimString,2,1);

werden die numerischen Daten in die Matrix A lesen.

Sie können dann mit

fid = fopen(filename)
headerString = fscanf(fid,'%s/n') % reads header data into a string
fclose(fid)

Sie können dann mit strtok dem headerString in ein Zellenfeld spalten. Ist ein Ansatz, den ich von Deal mit einer unbekannten Anzahl von Spalten denken kann,

Bearbeiten

fscanf Funktionsaufruf festgelegt

Verwenden Sie einfach mit verschiedenen Formatbezeichtextscan.

fid = fopen(filename,'r');
heading = textscan(fid,'%s %s %s',1);
fgetl(fid); %advance the file pointer one line
data = textscan(fid,'%n %n %n');%read the rest of the data
fclose(fid);

In diesem Fall ‚Überschrift‘ wird eine Zellenanordnung sein, die Zellen mit jeder Spalte innerhalb Position, so dass Sie sie von Strings in Zellenfeld zu ändern oder was auch immer es ist, dass Sie wollen. ‚Daten‘ wird ein Zellenfeld, ein numerisches Array für jede Spalte enthält, die Sie gelesen haben, so sind Sie in der Katze haben sie zusammen eine Matrix zu machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top