LabVIEWForum.de - Boolsch Array, Zahl der true Einträge zählen?

LabVIEWForum.de

Normale Version: Boolsch Array, Zahl der true Einträge zählen?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo

Mein Problem klingt etwas trivial aber gibt es evtl. ein VI das die Anzahl der True Einträge in einem Boolschen Array ausgibt?

Gruß
Hans
Hm, vielleicht sollte ich erst überlegen und dann posten Wink)
So wie im Bild geht es natürlich auch.
Ich wüßte da nichts, aber ich würde es eher so machen:
[attachment=55035]
Deine Lösung mag dir auf den ersten Blick elegant vorkommen, aber sie ist weder die schnellste noch die resourcen-sparsamste Lösung.

Das Problem ist das "Conditional Indexing": Du erzeugst hier ein neues Array (belegt neuen Speicher). Die Größe des Array kann der LabVIEW-Compiler aber nicht vorab festlegen. Deshalb hängt LabVIEW bei jedem "TRUE" immer ein neues Element an das schon bestehende Array an, es wird also dauernd neuer Speicher alloziert. Auch nicht gerade schnell.

Anders erklärt: Conditional Indexing entspricht (auch in der Realität) dem folgenden Source-Code (Im False-Case wird das Array einfach unverändert belassen):
[attachment=55036]

Schneller ist auf jeden Fall die folgende Umsetzung:
[attachment=55037]

Gruß, Jens
@Lucki:
Vorsicht, bei sehr großen Arrays geht deine Lösung schief, da der Ausgang von "Boolean to Number" eine I16-Zahl ist. Beim Addieren hast du dann schnell einen Zahlenüberlauf. Aber das lässt sich schnell beheben:
[attachment=55038]
Gruß, Jens
Nachtrag: So etwas teste ich natürlich gleich an Hand sehr großer Arrays auf Laufzeit. Bei einem Boolschen Array mit 10 Mio Elementen streiten sich bei abgeschalteten Debug-Optionen Luckis und meine Lösung um den ersten Platz, meist ist Lucki etwas schneller. Der Abstand zu Vorschlag von hansi hängt davon ab, wieviele Elemente des Array TRUE sind. Bei sehr vielen True wird der Abstand exorbitant groß.
(12.01.2016 22:41 )jg schrieb: [ -> ]Bei einem Boolschen Array mit 10 Mio Elementen streiten sich bei abgeschalteten Debug-Optionen Luckis und meine Lösung um den ersten Platz, meist ist Lucki etwas schneller.
Aber auf jeden Fall würde ich bei großen Arrays Deine Lösung favorisieren. Du zählst einfach durch und erzeugst nicht erst noch ein zweites Array mit nochmal 10 Mio Elementen.
Wie wäre es denn mit einer "Kreuzung" aus beiden Vorschlägen?
[attachment=55040]
Hallo ihr zwei

Herzlichen Dank für eure Anregungen.
Da sieht man mal wieder das viele Wege nach Rom führen aber auch viele Umwege Wink
Referenz-URLs