LabVIEWForum.de
Großes Array richtig handeln - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Großes Array richtig handeln (/Thread-Grosses-Array-richtig-handeln)

Seiten: 1 2


Großes Array richtig handeln - FirstSoulWinner - 19.08.2012 20:51

Hallo,

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!

Tausend Dank!
Johannes


RE: Großes Array richtig handeln - Kasi - 20.08.2012 07:28

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 Wink

Ansonsten hat LabVIEW noch allgemein was zu großen Datensätzen zu sagen, aber ich hab mir das noch nie genau angesehen Blush


RE: Großes Array richtig handeln - GerdW - 20.08.2012 07:57

Hallo 1stsoul,

Zitat:Das ganze am besten noch binär und gezippt,
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)...


RE: Großes Array richtig handeln - FirstSoulWinner - 20.08.2012 08:04

Hallo,

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


RE: Großes Array richtig handeln - Kasi - 20.08.2012 08:05

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.


RE: Großes Array richtig handeln - GerdW - 20.08.2012 08:06

Hallo Johannes,

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?


RE: Großes Array richtig handeln - jg - 20.08.2012 08:11

Verwaltung großer Datenmengen und beliebiges Auslesen, da bietet sich einen Datenbank für das Speichern an!

Gruß, Jens


RE: Großes Array richtig handeln - Kasi - 20.08.2012 08:23

(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.


RE: Großes Array richtig handeln - FirstSoulWinner - 20.08.2012 11:10

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.


RE: Großes Array richtig handeln - GerdW - 20.08.2012 11:52

Hallo Johannes,

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...