LabVIEWForum.de
Array mit Werten nach Zuständen aus zweitem Array in neue Arrays jedes Zustandes sortieren - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Array mit Werten nach Zuständen aus zweitem Array in neue Arrays jedes Zustandes sortieren (/Thread-Array-mit-Werten-nach-Zustaenden-aus-zweitem-Array-in-neue-Arrays-jedes-Zustandes-sortieren)



Array mit Werten nach Zuständen aus zweitem Array in neue Arrays jedes Zustandes sortieren - Mika - 07.01.2011 12:59

Hallo zusammen,

ich bin neu hier im Forum und habe noch nicht so den Überblick, falls das Thema schon mal angefragt wurde, bitte ich das zu entschuldigen, ich konnte es bisher nicht finden.

Das Ziel ist folgendes:

ein Array mit Messwerten [32,1], die laufend aktualisiert werden (etwa alle 3 sek) soll nach einem Array mit Zuständen, die nur selten geändert werden, sortiert werden.

Es soll für jeden Zustand (es gibt 6 verschiedene) ein eigenes Array, das die zugehörigen Werte enthält herauskommen.

Ich arbeite mit der Version 8.5, und die einzige Möglichkeit, die ich sehe ein Array zu bearbeiten, ist zuerst einen Index von einem (unerwünschten) Wert zu finden und dann an diesem Index das (unerwünschte) Element zu löschen. Mit der Methode konnte ich das Ziel zwar erreichen, aber nur indem ich das ganze in eine Schleife gepackt habe, die die Nebenwirkung hat, dass sie die Hauptschleife extrem verlangsamt (dauert dann 12 sek statt 3).

Gibt es keine einfachere Möglichkeit ohne Schleifen - wie in Matlab wäre es lediglich a = b ( c), um nur die Elemente von b an den Indices c in a zu speichern ? Möglicherweise geht es mit einem Formelknoten - allerdings beherrsche ich dafür die Syntax nicht um die Operation durchzuführen...

Ich bin für jede Hilfe dankbar, auch nicht ganz unerfahren, aber komme in dem Punkt einfach nicht weiter.

Gruß
Michael


Array mit Werten nach Zuständen aus zweitem Array in neue Arrays jedes Zustandes sortieren - Mika - 07.01.2011 13:37

zur Ergänzung noch das vi mit der erreichten Operation in der Schleife und ein Screenshot davon

wie gesagt: Ziel ist das gleiche Ergebnis aber ohne Schleifen u.a. verlangsamende Prozesse

also z.B. aus:

Array a ___ Array b
1 ___ 3.1
2 ___ 4.5
1 ___ 0.1
1 ___ 9.5
3 ___ 1.1

soll werden

Array 1 ___ Array 2 ___ Array 3
3.1 ___ 4.5 ___ 1.1
0.1
9.5

Lv85_img


Array mit Werten nach Zuständen aus zweitem Array in neue Arrays jedes Zustandes sortieren - schrotti - 07.01.2011 16:22

Hallo Mika,

1. Warum ist da ein Wait in der Schleife?
2. Ohne Schleife gehts nicht. In Matlab wird halt eine Funktion aufgerufen, die eine Schleife enthält.
3. Warum die -1000 einfügen, wenn man die Arrays in der ersten Schleife gleich zusammenbauen kann?
4. Vergleiche niemals Fließkommazahlen auf Gleichheit.
5. Die Variable i einer Schleife fängt bei 0 an. Deine Schleifen iterieren daher jede einmal zu viel.
6. Nimm für das Kriterium keine Fließkommazahlen (siehe 4.)
7. Beschränk dich bei den Messwerten auf einen Datentyp und nimm nicht irgendwo Double und später Single.
8. Hab dir mal eine Lösung angefügt.

Lv85_img[attachment=31563]


Array mit Werten nach Zuständen aus zweitem Array in neue Arrays jedes Zustandes sortieren - Mika - 07.01.2011 17:16

Wow, Schrotti, danke erstmal für die Hilfe, das sieht schonmal sehr gut aus. Ich kann es leider gerade nicht im Messprogramm testen, ob sich die Zeit reduziert hat, gehe aber davon aus. Ich kannte die Auto-Indizierung noch nicht.

Trotzdem noch ein paar Rückfragen und Anmerkungen:
- das Wait war nur zum Test, im eigentlichen Programm hab ich es rausgeschmissen
- könntest du bitte erklären, warum man keine Fließkommazahlen für den Vergleich nehmen sollte
- gibt es noch weitere Dinge, die man nach Möglichkeit vermeiden sollte aber als Anfänger bzw. ungelernter User zu tun neigt

Danke und schönes Wochenende,
Michael


Array mit Werten nach Zuständen aus zweitem Array in neue Arrays jedes Zustandes sortieren - schrotti - 07.01.2011 20:02

[url=http://www.google.de/search?q=vergleich+flie%C3%9Fkommazahl&ie=utf-8&oe=utf-8&aq=t&rls=org.mozillaBig Grine:official&client=firefox-a#sclient=psy&hl=de&client=firefox-a&hs=ixc&rls=org.mozillaBig Grine%3Aofficial&q=gleichheit+flie%C3%9Fkommazahl&aq=f&aqi=&aql=&oq=&gs_rfai=&pbx=1&fp=3cadb483bc8f8289]Google ist dein Freund[/url].

Noch ein Tipp, ja, mh, verwende SubVIs, setze Kommentare, Probleme erst auf dem Papier lösen anstatt wild drauf los zu programmieren und so weiter und so fortSmile


Array mit Werten nach Zuständen aus zweitem Array in neue Arrays jedes Zustandes sortieren - unicorn - 08.01.2011 00:34

Anbei ein Beispiel zum Sortieren. Getrennt werden müssen die sortierten Werte noch nach den Indizes in "Array".
Lv10


Array mit Werten nach Zuständen aus zweitem Array in neue Arrays jedes Zustandes sortieren - Lucki - 08.01.2011 19:17

Wenn man das Clusterarray bei Unicorn klaut, die Idee bei Schrotti und das BD außerdem aufräumt, dann sieht es so aus:
[attachment=31576]