19.08.2012, 20:51
Beitrag #1
|
FirstSoulWinner
LVF-Grünschnabel
Beiträge: 15
Registriert seit: Apr 2012
2011
2012
EN
Deutschland
|
Großes Array richtig handeln
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
|
|
|
20.08.2012, 07:28
Beitrag #2
|
Kasi
LVF-Stammgast
Beiträge: 342
Registriert seit: Dec 2010
6 - 2009
2005
DE_EN
79194
Deutschland
|
RE: Großes Array richtig handeln
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)
|
|
|
20.08.2012, 07:57
Beitrag #3
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Großes Array richtig handeln
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)...
|
|
|
20.08.2012, 08:04
Beitrag #4
|
FirstSoulWinner
LVF-Grünschnabel
Beiträge: 15
Registriert seit: Apr 2012
2011
2012
EN
Deutschland
|
RE: Großes Array richtig handeln
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
|
|
|
20.08.2012, 08:05
(Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2012 08:10 von Kasi.)
Beitrag #5
|
Kasi
LVF-Stammgast
Beiträge: 342
Registriert seit: Dec 2010
6 - 2009
2005
DE_EN
79194
Deutschland
|
RE: Großes Array richtig handeln
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.)
Beitrag #6
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Großes Array richtig handeln
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?
|
|
|
20.08.2012, 08:11
Beitrag #7
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: Großes Array richtig handeln
Verwaltung großer Datenmengen und beliebiges Auslesen, da bietet sich einen Datenbank für das Speichern an!
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
20.08.2012, 08:23
Beitrag #8
|
Kasi
LVF-Stammgast
Beiträge: 342
Registriert seit: Dec 2010
6 - 2009
2005
DE_EN
79194
Deutschland
|
RE: Großes Array richtig handeln
(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)
|
|
|
20.08.2012, 11:10
Beitrag #9
|
FirstSoulWinner
LVF-Grünschnabel
Beiträge: 15
Registriert seit: Apr 2012
2011
2012
EN
Deutschland
|
RE: Großes Array richtig handeln
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.
|
|
|
20.08.2012, 11:52
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Großes Array richtig handeln
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...
|
|
|
| |