Hallo, möchte eine Textdatei mit Matlab einlesen. Mache das mit dem folgendem Befehl: fid=fopen('logfile.txt','r'); C=textscan(fid,'%s %s %s'); und an der Stelle habe ich ein Verständnisproblem und zwar %s heißt ja es wird ein String ausgelesen. Der Logfile hat diese Form: 2560788 usecs: file start 7658115 usecs: file closed C=textscan(fid,'%s %s %s');zeigt mir folgendes: C{1}{1} = 2560788 C{1}{2} = 7658115 Was sind das für komische Zeichen  und woher kommen sie? %s heißt ja es wird ein String ausgelesen. In meinem Logfile sind die Zahlen zu sehen. Warum kann Matlab sie nicht nicht als Integer auffassen? C=textscan(fid,'%u16 %s %s') oder C=textscan(fid,'%d16 %s %s') zeigt, dass der Inhalt der Datei leer ist.
:
Bearbeitet durch User
Hallo, Matlab bietet viele Möglichkeiten Dateien einzulesen. Angefangen beim >dlmread<, >csvread< bis hin zum fopen und fscanf.... Textscan importiert übrigens in Cells. Kannst Du vielleicht mal Dein logfile.txt posten, damit man das Problem sehen kann. Fopen und fscanf ist übrigens das universellste, weil es eine sehr Änhlichkeit mit C bietet.
Anbei ist der Logfile. Wie gesagt, die Zahl an der ersten Stelle der jeweiligen Zeile wird nur erkannt, wenn ich sie string bezeichne. Wieso? Die Ausgabe sieht dan so aus: 2560788 Woher komt  ? Erwartet Matlab eventuell noch eine Angabe? (Header oder so was?)
:
Bearbeitet durch User
Fsd Fdsfds schrieb: > Woher komt  ? Du hast das Glück eine Textdatei mit UTF8-BOM am Anfang zu haben: $ curl http://www.mikrocontroller.net/attachment/240010/logfile.txt | xxd | head -n 2 0000000: efbb bf32 3536 3037 3838 2075 7365 6373 ...2560788 usecs 0000010: 3a20 7374 6172 740d 0a37 3635 3831 3135 : start..7658115 das "efbbbf" zu begin ist die BOM. In Windows-1251 ist das dann eben 
:
Bearbeitet durch User
Ok, soll ich die Datei anders speichern oder wie kann man das lösen?
:
Bearbeitet durch User
%exel auslesen [xlsfile,path2xls] = uigetfile('*.xls', 'test.xls'); rawdata1 = xlsread(fullfile(path2xls,xlsfile)); BEISPIEL FÜR EXEL
Fsd Fdsfds schrieb: > Ok, soll ich die Datei anders speichern oder wie kann man das lösen? Woher kommt denn die Datei? Bei praktisch jedem besseren Texteditor kann man UTF-BOM an/aussschalten. Notfalls einfach die ersten drei Bytes abschneiden.
Selbst die Altlastensammlung Matlab kann inzwischen UTF8 lesen, siehe Doku zu fopen. Das richtige Encoding anzugeben ist auf Dauer sinnvoller als das Textfile vorher zu bearbeiten.
Habe die Datei mit Editor erstellt. Mit OpenOffice erstellen und als .txt speichern hat geholfen. Mit C=textscan(fid,'%s %s %s'); Erstellt matlab eine Exceltabelle, wo in der Tat alle Zahlen und Wörter sauber abzulesen sind. Mit C=textscan(fid,'%u18 %s %s'); werden alle Zahlen, die in einer Spalte eingetragen wurden auf einmal in eine Zeile hintereinander geschrieben So: [2560788;7658115;15231059;20332392;27901525;32999353]. Wieso? Ich möchte später ein Plot erstellen, die Zahlenwerte brauche ich für einen Graph. Erkennt Matlab sie nicht als Zahlenwerte an, wenn sie mit %s bezeichnet werden?
:
Bearbeitet durch User
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.