Hallo, ich habe im Moment ein kleines Problem bei der Datenauswertung, un zwar: Ich logge im Moment alle möglichen Werte meiner Controlleranwendung in eine Textdatei. Das ganze geschieht in Tabellenform. Normalerweise werte ich dann anschließend meine Daten mit Excel aus. Nun habe ich aber das Problem, dass ich mehr als 65536 Zeilen in meiner Datei habe und Excel somit die Dateien nichmehr komplett verarbeiten kann. Ein weiteres Problem ist, dass mein Logprogramm Teilweise Fehler in der Textdatei erzeugt, sodass ab und zu in einer Zeile nicht alle Messwerte eingetragen wurden oder es werden Buchstaben eingetragen. Aus diesem Grund meckert z.B Matlab, wenn ich die Datei laden will (Matrix Format passt nicht). Wenn ich nun Versuche die Datei mit einem Texteditor zu teilen, dann stürtzt dieser immer ab, sodass ich damit auch nicht weiterkomme (habe mehrere getestet). Meine Dateien haben so ca. 20 bis 25MB. Hat vielleicht von euch einer eine Idee wie man diese Dateien am besten verarbeiten oder teilen kann? Idealerweise wäre ein Programm, bei dem man angeben kann, wo man die Datei teilen will. Oder ein Programm zu graphischen Darstellung von Daten, idealerweise mit Autofiltern, welches auch mit Formatfehlern zurecht kommt. Hoffe ihr könnt mir helfen! Viele Grüße, Ralf
hi, habe eine ähnliche anwendung, daten werden in textfile eingetragen. wie bei dir, selten, aber in manchen datensätzen steht müll drin, warum auch immer. ich verwende zur weiteren bearbeitung filemaker, ein simples datenbanksystem. realistische obergrenze für anzahl datensätze ist bei ca. 2-3.000.000, reicht für meine anwendung. die effektivste und schlankste version ist fm3 oder fm4, alle danach kommen mit reichlich firlefanz daher, sind langsamer und teurer, ausserdem ist fm3+4 noch netzwerkfähig, der rest nicht, da gibt's dann für extra-kohle 'ne server-version. hab meine lizenz über ebay für um 30,- bekommen. geht auch noch mit mysql (aufwendig), dbase (nur msdos-mode, spätere versionen umständlich und blöd), acces (grottenlahm), dbfast (ganz brauchbar), aber am besten filemaker, der ist echt unkritisch beim einlesen und datenmüll findest du superzackig per filter. gruss, harry
Hallo Ralf, Probier doch mal UltraEdit32. das nehm ich immer für solche Fälle, wenn was von Hand zu trimmen sein soll. Viele Grüße Axel
Falls Du ein bischen Perl kannst bzw. es lernen willst: Unter http://cpan.uwinnipeg.ca/dist/Spreadsheet-WriteExcel-Simple gibt es ein passendes Perl-Modul zum erstellen von Excel-Dateien mit nur einer handvoll Befehlen. Selbst wenn Du noch kein Perl kannst sollte sich damit innerhalb ein paar Stunden unter Verwendung von diversen Perl-Tutorials ein einfacher txt->excel-Wandler in < 10 Zeilen schreiben lassen. Stefan
{http://www.mikrocontroller.net/forum/read-1-105027.html} Schreib doch schnell selbst ein Programm, in C oder Pascal ist das gleich vorbei. Wenn Du nichts hast, TurboPascal 5.5 kann man bei Borland kostenlos runterladen, ist zwar noch DOS und wenig komfortabel, funktioniert aber für solche Zwecke tadellos. die if-then-Abfrage musst Du an Deine Aufgabe anpassen, hier gibt sie die erste Zeile aus (nach Alt-F5 sichtbar), die nicht-Ziffern enthält. Du kannst auch ab einer Zeilennummer ein in ein weiteres File schreiben oder beliebig anderes tun. Save file mit F2, compile mit F9, run mit Ctrl+F9, show output mit Alt+F5, quit mit Alt+X http://community.borland.com/article/0,1410,20803,00.html Turbo C 2.01 http://community.borland.com/article/0,1410,20841,00.html } var i,z:integer;r,w:text;s:string; begin assign(r,'readfile.txt');reset(r);z:=0; assign(w,'writefil.txt');rewrite(w); repeat readln(r,s);inc(z); for i:=1 to length(s) do begin if (s[i]<'0') or (s[i]>'9') then begin writeln('Zeile ',z,' ',s);close(w);halt end end; writeln(w,s) until eof(r); close(w) end.
zu Problem 2: Hab das speziell noch nicht gemacht, aber vielleicht schreibst du in Excel (z.B. VBA) ein paar Zeilen Code, welcher Dir den Datenmüll entsorgt. Oder du synchronisierst deine Datenausgabe in deinem Logger besser, so dass nur vollständige Datensätze ausgegeben werden. Gruß, Micha
Hi ohne das Datenformat genau zu kennen kann ich natürlich nicht perfekt helfen. Was verstehst du unter Datenauswertung? Diagramm zeichnen? Dann schau dir mal gnuplot an. Das kann mit großen Datensätzen problemlos umgehen. Mit defekten Zeilen kommt gnuplot seit Version 4 auch relativ gut klar. Um die Datei auf korrekte Datensätze zu untersuchen reicht evtl. grep und eine passende regex aus. Matthias
Hallo, danke für die vielen Antworten! Selber programmieren wollte ich eigentlich nichts, da ich das ganze auf der Arbeit mache und z.Zt nicht so viel Zeit dafür habe. Das Logging besser zu synchronisieren ist auch eher schwer, da ich ein Programm der Firma verwende, welches nichtmehr gepflegt wird und noch so einige Macken hat. @Matthias: gnuplot hört sich gut an. Ich habe gedacht, dass dieses Programm ähnlich wie Matlab auf falsche Formatierungen reagiert. Aber ich habe mich auch noch nicht damit beschäftigt. Das wird sich dann jetzt wohl mal ändern ;-) Die Formatierungen meiner Dateien ist relativ einfach. Zuerst kommt eine Zeile Header mit Datum und Uhrzeit, dann eine Zeile mit Variablennamen, welche ich gerade loggen will und darunter kommen dann Zahlenwerte. Das ganze sieht also wie eine Tabelle aus. Ich glaube, dass die Werte alle mit Tabs voneinander getrennt sind. Viele Grüße, Ralf
Hi das ist doch die Anwendung für gnuplot. Bedarf zwar einer gewissen Einarbeitung, funktioniert dann aber sehr gut. Matthias
mal eine dumme Frage: gibt es ein Limit in einer Textfile-Datei, bis zu der man noch Daten speichern kann? habe nämlich ein ähnliches Problem. Excel kann keine genügend großen Dateien bearbeiten... Dann zur Bearbeitung: Datenmüll wird voraussichtlich in keiner Zeile stehen, daher wäre MATLAB wohl kein so großes Problem bei der Bearbeitung. Müsste nur in der Kopfzeile ein paar Zeilen löschen und dann verbleiben reine Zahlenwerte... Wie verhält sich MATLAB damit? Kann MATLAB Datensätze im Million-Anzahl-Bereich einlesen oder wird das Programm dann unendlich lahm und ist nur noch in der Theorie dazu bereit? mfg
Großes Fragezeichen schrieb: > gibt es ein Limit in einer Textfile-Datei, bis zu der man noch Daten > speichern kann? Das wird bestimmt, durch das Dateisystem des Datenträgers (FAT: 2GB) > habe nämlich ein ähnliches Problem. Excel kann keine genügend großen > Dateien bearbeiten... Die neueren Versionen sollen diesbezüglich deutlich aufgebohrt worden sein, ob die Daten dann aber noch handhabbar sind, steht aud einem anderen Blatt. > Wie verhält sich MATLAB damit? Kann MATLAB Datensätze im > Million-Anzahl-Bereich einlesen oder wird das Programm dann unendlich > lahm und ist nur noch in der Theorie dazu bereit? Zu MATLAB kann ich wenig sagen, allerdings aus den Erahrungen mit Beitrag "Re: Visualisierung von geloggten Daten" kann man bei einigen 10 000 Datensätzen a einigen 'zig Messwerten schon mal mit einer Minute Wartezeit für den Plot der gesamten Datei, je nach Rechner kalkulieren. mfG ingo
Hallo, MATLAB wird beim Einlesen von großen Datensätzen durch seine Speicherverwaltung gebremst. 500MB Daten aus einer Textdatei sind kein Problem, wenn du den Speicher vor dem Einlesen auf einen Schlag allokierst. daten=zeros(nZeilen,zeilenlaenge); Die Länge deiner Zeilen kennst du ja, die Anzahl musst du evtl. aus der Dateigröße abschätzen. Wenn du in der Datei Punkte als Dezimaltrenner verwendest und alle Zeilen (bis auf den Header) die gleich Länge haben kannst du die Daten zeilenweise in die allokierte Matrix schreiben. daten(iZeile,:)=fgetl(fid); Die mitgelieferten textread und dlmread Funktionen halte ich bei größeren Datenmengen für ungeeignet. @ingo: Kann ich nicht nachvollziehen. Auf meinem 4 Jahre altem PC kriege ich eine 100x10000 Matrix in ca. 4s zu einer 3D Oberfläche geplottet. Viel Spass! Stephan p.s. Das Ganze gilt natürlich auch für GNU-Octave.
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.