LabVIEWForum.de - Bestimmte Werte aus Array löschen

LabVIEWForum.de

Normale Version: Bestimmte Werte aus Array löschen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Die Aufgabe löst man doch sehr gut mit der Funktion "Array umformen", und ich muß hier mal kritisch feststellen, daß diese Zauberfunktion selbst von Profis viel zu wenig oder überhaupt nicht benutzt wird - so wie auch hier.
[attachment=30206]
Lv86_img[attachment=30207]
@Torsten: Danke, das schaue ich mir morgen an.
@Lucki: Danke. Das sieht aber nicht gerade performant aus, mit den zig Array-Umformungen (1D -> Quotient/Rest -> 2D -> Transformieren -> Rechnen -> Transformieren -> 1D). Aber ich muss das zeitlich mal genauer unter die Lupe nehmen. Es sieht jedenfalls interessant aus.
Edit: Deleted. /EOM
Jo klar. Man muss natürlich das Array initialisieren und dann die Werte ersetzen.
Aber ich denke, das weiß Lucki und er hat es der Einfachheit halber so gelöst, da es eher ums Prinzip geht, wie man das lösen kann.
Edit: Deleted. /EOM
' schrieb:bei der Ersetzungsmethode musst man eben auch viel kopieren [...]
Wieso das?
Wenn der Speicher einmal reserviert ist und man Werte ersetzt, wird doch nichts kopiert.
Oder was meinst du genau?

Nachtrag: Hier steht auch etwas dazu. Wobei ich den Punkt "Use shift registers instead of loop tunnels for large arrays." nicht nachvollziehen kann, da mir im Forum kürzlich das Gegenteil geschrieben wurde. Da ist immer die Frage, wem glaubt man nun.Unsure
Ganz halte ich mich da jedoch auch nicht dran. Ich nutze Cluster aufgrund der Übersichtlichkeit auch in zeitkritischem Code (letzter genannter Punkt dort).
Edit: Deleted. /EOM
Ach das meinst du. Jupp, kopieren muss man immer. Dennoch sollte man es vermeiden, unnötig zu kopieren.

Vergrößert man das kleine Array fortlaufend in der Schleife, wird das gesamte Array in jedem Durchlauf kopiert und der neue Speicherbereich ist immer etwas größer als der alte. Im letzten Durchlauf wird dann das vollständige Array kopiert.
Wird dieses Array vorab initialisiert, findet nur eine Speicherzuweisung zu Beginn statt.
Edit: Deleted. /EOM
' schrieb:Jo klar. Man muss natürlich das Array initialisieren und dann die Werte ersetzen.
Aber ich denke, das weiß Lucki und er hat es der Einfachheit halber so gelöst, da es eher ums Prinzip geht, wie man das lösen kann.
Ja, so war es eigentlich. Jetzt habe ich aber mal selbst gemessen und dabei festgestellt, daß das bisher als zeitrabend bekannte Erstellen des Arrays nicht so lange braucht wie das Ersetzen.
Ich führe das drauf zurück, daß solche Feststellungen, daß das eine langsamer ist als das andere, versionsabhänig sind. Was für die Version 8 richtig war, muß für LV2010 nicht mehr gelten.

Also Konkret: Array DBL, 6 Sensoren á 1E5 Messwerte, davon werden die Messwerte von drei Sensoren entfernt.
Methode Array bilden: ca. 38ms
Methode ersetzen: ca 48ms
[attachment=30213]
Lv10[attachment=30212]
Seiten: 1 2 3 4
Referenz-URLs