INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Handling Großer Datenmenge



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!

10.07.2006, 22:35
Beitrag #1

Pepe Offline
LVF-Grünschnabel
*


Beiträge: 30
Registriert seit: Aug 2005



kA



Handling Großer Datenmenge
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.07.2006, 07:46 (Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2006 07:47 von Lucki.)
Beitrag #2

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Handling Großer Datenmenge
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:
   
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2006, 09:09
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Handling Großer Datenmenge
<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>

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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2006, 12:10
Beitrag #4

Pepe Offline
LVF-Grünschnabel
*


Beiträge: 30
Registriert seit: Aug 2005



kA



Handling Großer Datenmenge
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.08.2006, 01:13
Beitrag #5

DanielE Offline
LVF-Grünschnabel
*


Beiträge: 13
Registriert seit: Mar 2006

6.1,8.0.1, 8.2
2003
kA


Deutschland
Handling Großer Datenmenge
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Error Handling in einem Queue Message Design Architektur galilio 2 4.641 09.08.2016 12:20
Letzter Beitrag: galilio
  Handling von Bedienelementen tooony 8 5.879 27.07.2016 14:17
Letzter Beitrag: wladimir s
  Größer, Kleiner UND Gleich jan_1 10 11.858 07.07.2015 13:57
Letzter Beitrag: Kiesch
  Handhabung großer Datenstreams Kiesch 4 5.170 09.06.2015 12:46
Letzter Beitrag: Kiesch
  VI-Analyzer Test: Disable Automated Error Handling BNT 2 5.514 04.03.2014 16:18
Letzter Beitrag: BNT
  Arbeitsspeicher bei Übergabe großer Cluster ib 2 3.897 07.01.2014 13:47
Letzter Beitrag: ib

Gehe zu: