Verfasst am: 14.07.2015, 08:30
Titel: Fehlerhafte Daten bei fgetl auslassen
Guten morgen.
Leute, ich brauch eure Unterstützung. Ich hab eine log Datei (rssi.txt). Da sind normalerweise 4 Zahlen pro Zeile. All diese Daten möchte ich in dataall ablegen.
Das Problem ist, dass die log Datei auch mit Fehlern erstellt werden kann, was dann Fehler in matlab verursacht. Ich hab die Problemstellen in rssi.txt und im Code mit rot markiert.
Ich hab versucht die Zeile so zu ändern: strcat(tlien,';0'), Fehler an der Stelle %d%d%d%d kommt leider trotzdem.
Den sehr wichtigen Befehl
path
mit einer Variablen zu überschreiben, ist sehr tückisch. Auf Anhieb erzegut das zwar keine Fehler, aber beim Debuggen kann man arg auf die Nase fallen.
Wenn die Datei "größer" ist, ist das iterative Anwachsen von dataall extrem ineffizient. Dann wäre es viel besser zunächst eine Maximal-Größe zu allocieren und dann hinterher abzuschneiden. Z.B. die Filegröße/4.
Hi Jan,
danke erstmal für die Hilfe! Ich hab gecheckt wie du gemeint hast, aber der count ist leider immer Null. Also auf dataall = cat(1, dataall, data) komme ich nie.
Woran kanns denn liegen?
clearall
löscht alle lokalen Variablen, alle Breakpoints des Debuggers, alle funktionen, die schon von der Festplatte ins RAM geladen wurden, alle
persistent
Variablen, alle MEX-Files und Java-Classes. Vor allem das Löschen der Breakpoints ist schlimm, weil der Debugger ja ein wichtiges Hilfsmittel beim Programmieren ist.
Am Anfang einer Funktion gibt es auch keine lokalen Variablen, so dass das leidige
clearr all
hier einfach nur unnötig Resourcen verschleudert.
Das Schließen aller Fenster ist auch eine unpraktische Idee. Das ist am Anfang einer File-Auslese-Funktion überflüssig. Stell Dir vor, Du hast ein GUI offen und darin viele Einstellungen vorgenommen. Dann wird von irgendwoher die File-Einlese-Routine gestartet und das GUI geschlossen. Wozu?!
Es finden auch keine Ausgaben ins CommandWindow statt, dann macht
clc
auch nicht außer den User zu verunsichern.
Der brutale Clearing Header
clearall, closeall, clc
ist deshalb meiner Ansicht nach ausgesprochen unpraktisch und macht dem Programmierer das Leben schwerer ohne irgendeinen Vorteil zu bieten. Trotzdem findet man das immer wieder im Code von Programmier-Anfängern. Wo wird das nur empfohlen?!
Jan, riesen Dank dir, ich werd deine Empfehlungen merken.
Alles hat sehr gut funktioniert.
Vielen Dank noch mal)
Viele Grüße
Igor
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.