2016-06-30 22 views
0

Ich habe eine Textdatei, die ich in Matlab importieren möchte. Hier sind die ersten zwei Zeilen der Textdatei (tempfile.txt):Textdatei in Matlab scannen

1,"4/26/2016","6:40:00 PM","111","0","13.45","NaN","ACTIVE","NaN", 
2,"4/26/2016","6:40:30 PM","73","0","14.99","NaN","ACTIVE","NaN", 

Als ich versuchte, mit textscan:

fid = fopen('tempfile.txt'); 
data = textscan(fid, '%*d %s %s %s %*d %*d %*d %*s %*s', 'Delimiter', ',') 

Es importiert nur die erste Zeile der Textdatei. Ich habe versucht, \ n zum formatSpec hinzuzufügen, aber es funktioniert immer noch nicht. Bitte helfen Sie!

+0

Warum verwenden Sie den Stern? Bist du hinter der Feldbreite her? – GameOfThrows

+0

Ich benötige nur das Datum, die Uhrzeit und das vierte (111 & 73) Spaltenfeld! – TYL

Antwort

1

Ihr Problem ist, dass alle Ihre Felder sind in doppelten Anführungszeichen - dh Sie Strings sind, und Sie können sie nicht analysieren in als Floats/Doppel, sie stattdessen in als Strings analysieren und wirft sie zu Double in Matlab:

data = textscan(fid, '%d %s %s %s %s %s %s %s %s', 'Delimiter', ',') 

bei Parsen Ihre Daten einwandfrei funktioniert, dann str2num verwenden, um Ihre Daten wieder in numerischen zu konvertieren. Warum haben Sie doppelte Anführungszeichen um alles?

============= EDIT ============

Da Sie nur 3 Felder wollen, sollten Sie so etwas wie:

fid = fopen('abc1.txt'); 
data = textscan(fid, '%*d %s %s %s %*s %*s %*s %*s %*s', 'Delimiter', ',') 
+0

Das funktioniert! Vielen Dank, du bist mein Held, denn ich versuche den ganzen Tag lang Daten in Matlab zu importieren. Wie auch immer, ich bin nicht sicher, warum es doppelte Anführungszeichen gibt, aber wie Sie vorgeschlagen haben, löst str2num es. Danke noch einmal! – TYL

0

Es scheint, dass Sie diese Funktion eine durch Kommata getrennte Werte CSV-Datei versuchen, haben statt:

M = csvread('tempfile.txt') 
+0

Das ist nicht möglich, da csvread alle Elemente numerisch benötigt (was ich denke), was meine Textdatei nicht qualifiziert – TYL