2017-06-16 4 views
1

Meine Eingabedatei sieht es wie mit:aus einer Datei in einen Vektor in Matlab Lesen import()

# FILE:app/src/f1.c 
    2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 32 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 
    # FILE:src/f2.c 
    1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 31 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 
    ............... 

ich den Header dh die Zeilen lesen will, die mit # beginnen, und die Vektoren vorhanden unten die Header in Listen. Ich habe versucht, importdata() wie folgt zu verwenden. Aber das gibt mir nur den ersten Header und den ersten Vektor. Ich muss es bis zum Ende der Datei lesen.

filename = 'output.txt'; 
A = importdata(filename); 
disp(A.rowheaders); 
disp(A.data); 

EDIT: A = import (Dateiname, '#'); Dies löste mein Problem

+2

Fügen Sie die Lösung nicht in der Frage hinzu. Setzen Sie das als Antwort stattdessen. Übrigens importiert diese Lösung die Daten nicht in der Form einer Struktur, die Sie anscheinend versucht haben. Es importiert die Daten stattdessen als eine Zelle. –

Antwort

0

Ich glaube, der fgetl Befehl sollte den Trick tun.

Ich würde es in eine for-Schleife mit zwei fgetl Befehle, eine für die Metadaten-Zeile und eine für die numerische Datenleitung setzen.

EDIT: Hinzugefügt Beispiel

fid = fopen('test.txt'); 

celHeaders = {}; 
celData = {}; 
while(~feof(fid)) 
    celHeaders{end+1} = fgetl(fid); 
    celData{end+1} = fgetl(fid); 
end 

fclose(fid); 

disp(celHeaders) 
disp(celData) 

Dies wird unter der Annahme, dass die Textdatei enthält keine zusätzliche Zeilen über oder unter den Daten.

Verwandte Themen