Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich bräuchte dringend eure Hilfe in Sachen Datenhandling, da ich einfach nicht darauf komme, wie man es am geschicktesten lösen kann.
Meine Situation ist folgende:
Ich messe mit meiner Apparatur in einem Durchlauf an ~ 300 Positionen. An jeder Position werden wiederum bis zu 16 Proben vermessen. Jede Vermessung einer Probe hat 2048 Werte zur Folge.
Insgesamt gibt es dann noch bis zu 200 Durchläufe. Summa summarum ergäbe dies also ein 200 x 300 x 16 x 2048 Array mit Integern gefüllt. Natürlich macht der Computer/RAM das nicht mit, da das viel zu groß wird (bereits beim Initialisieren des Arrays). Wichtig ist noch zu erwähnen, dass die exakten Dimensionen des hypothetischen Arrys bekannt sind. Es muss also nichts angefügt werden, sondern die Daten können in einem vorinitialisiertem Array ersetzt werden.
Letztendlich werden die Daten auch nach jedem Durchlauf in einer Datei gespeichert, sodass man sich eine Dimension sparen könnte. Jedoch sollten die Ergebnisse auch so geplottet (mit ausgewählter Probe und festem Wert aus dem 2048 Array) werden, dass alle bisherigen Messungen mit angezeigt werden. Von daher muss man die Daten ja irgendwie "mitschleppen".
Wie kann ich diese großen Datensätze in den Griff bekommen? Hatte auch evtl. Cluster angedacht, komme dabei jedoch nicht weiter.
Ich bin da wirklich ratlos und über jeden Tipp hier sehr dankbar!
Ich würde auch zuerst ans Zwischenspeichern von Daten denken. Dass die Daten zum Plotten zur Verfügung stehen, ist ja kein Hindernis, das Laden der Datei und die Darstellung sollte fix genug von statten gehen, so dass der Nutzer davon nichts mitbekommt. Das ganze am besten noch binär und gezippt, damit du mit dem Festplattenplatz nicht ähnliche Probleme wie mit dem RAM bekommst
Ansonsten hat LabVIEW noch allgemein was zu großen Datensätzen zu sagen, aber ich hab mir das noch nie genau angesehen
If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
Das "binär" unterstütze ich voll und ganz. Dadurch brauchst du nur Lesezugriffe an leicht zu berechnenden Dateipositionen, um die gewünschten Werte zu lesen. Aber das Zippen sehe ich problematisch, da du dann entweder erst die Datei entzippen musst (auf Festplatte oder ins RAM)...
vielen Dank für eure Antworten!
Die Binärdateien würden mir auch entgegen kommen, da ich den Inhalt aller Messungen sowieso in entsprechenden Binärdateien (1 pro Durchlauf und Probe, 300 x 2048 2D Array) speichern wollte.
Ist es denn ohne Probleme möglich, durch Auswahl einer Probe in einer Dropdown Liste alle ensprechenden Dateien zu lesen (z.B. 99 bei der 100 Messung) und die aktuellen Dateien anzeigen zu lassen?
Würdet ihr die Daten dann auch als großes Array 300 x 16 x 2048 durch die Schleife führen, oder das noch zusätzlich aufteilen (ginge ja eigentlich nur nach Proben)?
Vielen Dank!
Johannes
20.08.2012, 08:05 (Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2012 08:10 von Kasi.)
Ich ent-zippe, lese und lösche immer in einem Schritt, Performance-mäßig habe ich da noch keinen Einbruch "gefühlt".
Aber das mit dem Packen war auch nur eine Option, falls es zu Platzproblemen kommen sollte.
--- edit ---
Ich habe noch nie mit solchen großen Arrays gearbeitet, gefühlt würde ich aber sagen, dass ich es erstmal mit einem Array versuchen würde, schon von der Programmübersichtlichkeit und der damit verbundenen Bequemlichkeit her. Sollte das "aus Gründen" nicht funktionieren, kannst du immernoch zu einer Aufteilung wechseln.
If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
20.08.2012, 08:06 (Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2012 08:09 von GerdW.)
Zitat:Daten dann auch als großes Array 300 x 16 x 2048 durch die Schleife führen
Falls du mit I32 arbeitest, reden wir hier über <40MB Daten. Das kann man noch in einem Schieberegister halten...
@Kasi:
Wohin entpackst du, wenn du das Zippen wegen Platzproblemen durchführst? Die temporäre Kopie (egal ob RAM oder Festplatte) macht die Sache dann nicht besser/einfacher.
Kannst du das mit dem "Entpacken&Lesen&Löschen in einem Schritt" genauer erläutern?
(20.08.2012 08:06 )GerdW schrieb: @Kasi:
Die temporäre Kopie (egal ob RAM oder Festplatte) macht die Sache dann nicht besser/einfacher.
Kannst du das mit dem "Entpacken&Lesen&Löschen in einem Schritt" genauer erläutern?
Ich hatte daran gedacht, alle Dateien für sich zu zippen, nicht alle in ein Zip zu packen.
Dadurch wird zum Öffnen immer nur ein Teil der Daten expandiert.
If you're havin' serial communication problems I feel bad for you, son, I got 99 problems but a baud ain't one! (except if using USB2serial converters, then I experience serialous problems)
Unabhängig davon ob man nun die Dateien nun zippt werden oder nicht, wäre ich über einen Tipp dankbar, wie man am besten die öffnet und die Daten so extrahiert, dass man diese in einem XY mit mehreren Plots darstellen kann.
die Dateien enthälten Daten mit festem "Raster", d.h. die Werte eines Sensors liegen an genau definierten Positionen in der Datei. Wo genau, hängt davon ab, wie du die Daten abspeicherst.
Bei den Dateioperationen gibt es zwei Funktionen zum Lesen und Setzen der Dateiposition...