Handling Großer Datenmenge - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Handling Großer Datenmenge (/Thread-Handling-Grosser-Datenmenge) |
Handling Großer Datenmenge - Pepe - 10.07.2006 22:35 Hallo, ich habe ein kleines Problem mit großen Datenmengen. Ich habe ein 2D-Array (Größe: 4096x2000, Darstellung I32) Also mehrer MB groß. Nun möchte ich spezielle Elemente dieses Arrays incrementieren. Das Ganze mache ich in einer for-Schleife in welcher ich in jedem Durchlauf ein "Index Array" benutze, mir damit das entsprechende Element hole dieses incrementiere und anschließend mit "Replace Array Subset" wieder in den Array einfüge. Dannach geht der Array in das Schieberegister der Schleife und im nächsten Schleifendurchlauf wird dann auf geichem Wege das nächste Element incrementiert. Das ganze mache ich für ca. 100 ausgewählte Elemente. Nun könnt ihr auch sicher vorstellen das mein Arbeitsspeicher explodiert und meine CPU kocht wenn der in jedem Schleifendurchlauf ein mehrere MB großes Array "durchschleift"! Meine Frage ist nun ob es möglich ist, in einem Schritt mehrere Elemente eines 2D-Arrays zu incrementieren? (evtl. mit Pointern arbeiten?) Das nächse Problem ist die Darstellung diese Arrays in einem Intensity-Chart. Da stirbt mein Rechner den Heldentod! Gibt es eine Möglichkeit in LabVIEW solch große Datenmengen besser zu handeln? Beste Güße Pepe Handling Großer Datenmenge - Lucki - 11.07.2006 07:46 Zitat:Meine Frage ist nun ob es möglich ist, in einem Schritt mehrere Elemente eines 2D-Arrays zu incrementieren? (evtl. mit Pointern arbeiten?)Das funktioniert nur, wenn die Elemente zusammenhängend in einer Zeile oder Spalte liegen: [attachment=2558] aber das ist wohl in Deinem Fall nicht zutreffend. Ich würde einen anderen Weg gehen: dafür sorgen, daß das Incrementieren eines einzelnen Elementes schneller geht. Z.B so: Vektor umwandeln in Matrix (=neuer Datentyp in LV8), mit Mathscript gezielt das einzelne zu incrementierende Element ansprechen. Kann Dir da aber nicht helfen, habe nur darauf los geraten, daß es so gehen könnte. Vielleicht weiß hier jemand mehr. Handling Großer Datenmenge - jg - 11.07.2006 09:09 <div align="left">Hallo, Pepe, also ich hab schon größere Arrays im Speicher gehalten, deines belegt 32 MB. Dein Ansatz, das Array über ein Schieberegister durchzuschleifen, ist eigentlich sehr gut, spart eine Unmenge an Hauptspeicher. Auch die Funktion "Replace Array Subset" ist eigentlich bei einem bestehenden Array eine recht schnelle Funktion. Was du vermeiden solltest, sind lokale Variablen deines Arrays, da wird dann immer mindestens eine Kopie im Speicher angelegt. Achte auch bei der Übergabe an SubVI's nach Möglichkeit darauf, das Array immer durch das SubVI durchzuschleifen (sprich als Ein- und Ausgang), sonst werden wieder Kopien angelegt. Auch Knoten, an den das Array an 2 Stellen weitergegeben werden, verursachen in der Regel, das eine Kopie der Daten angelegt wird (also nach Möglichkeit vermeiden). Noch eine Bemerkung zur For-Schleife: Ich hoffe, du gehst nicht durch jeden Wert des Arrays, sondern nur gezielt durch die Indices, die du verändern willst. Das sollte dann eigentlich recht schnell gehen. Zu deinem Punkt Darstellung, vielleicht hilft dir da eine Bibliothek auf der National Instruments Seite wieder (leider gerade offline, aber hoffentlich bald wieder verfügbar): Such mal nach dem Stichwort "gigaLabVIEW". MfG, Jens</div> Handling Großer Datenmenge - Pepe - 11.07.2006 12:10 Hallo Jens, danke für Deine schnelle Antwort! Du hattes natürlich vollkommen recht mit dem was Du geschrieben hast. In der Tat sollten 30 MB kein Problem darstellen. Aber ich Depp hab mir auf dem Frontpanel des VI´s noch ein Anzeigeelement für den Array zu Testzwecken platziert, also nochmal 30 MB Speicher reserviert :-) Und dann habe ich das Programm immer auf meinem (alten) Laptop mit 256 MB Ram laufen gehabt. Der RAM des Laptops war jedoch eh schon vor Ausführung von LabVIEW immer an der Grenze und so wurde dann mein Array immer schön in jedem Schleifendurchlauf in die Auslagerungsdatei gepackt :-) Hab jetzt mal nen Rechner mit mehr Speicher genommen und siehe da, alles läuft perfekt! Auch die Darstellung im Intensity-Chart ist kein Problem :-) Danke für die Schnelle Hilfe! Pepe Handling Großer Datenmenge - DanielE - 07.08.2006 01:13 Hi, ich suche auch nach ner Möglichkeit, große Datenmengen effizient als Graph oder Chart anzuzeigen. Leider kann ich die angesprochene Bibliothek gigaLabVIEW nich öffnen, da ich nur 6.1 habe. Könnte mir das jemand konvertieren? Oder gibts irgendwo schon ne 6.1er-Version? GigaLabVIEW-link VIelen Dank, Daniel |