LabVIEWForum.de - Array nach Überschreitung eines Wertes durchsuchen und Index ausgeben

LabVIEWForum.de

Normale Version: Array nach Überschreitung eines Wertes durchsuchen und Index ausgeben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

Ich habe ein 1D Array voll mit Werten. Ich will das Array jetzt von vorne durchsuchen und dann den Index wissen, bei dem das erste mal ein Wert größer als ein vorher definierter Wert ist.
Mit der "1D Array durchsuchen" Funktion hab ich schon gespielt, das Problem ist nur, dass ich ja nicht nach einem exakten Wert suchen will sondern nach einer Bedingung z.B. Element > 2. Hat jemand eine Idee, wie ich diese Bedingung einbauen könnte?
Danke
Hallo,

einfach hingehen und eine For-schleife nehmen. Dort baust du dann dein Array an den Eingang uns lässt die Autoindizierung zu. Dann hingehen und den Wert mit dem Sollwert vergleichen. Nun gehst du noch hin und machst einen Conditional-Stop in deine For-Schleife und machst dort deinen Vergleicher dran. Nun noch den Zählindex i aus deiner For-Schliefe rausgehen lassen et voila.

MfG Carsten

Edit: Hier mal ein kleines Beispiel.
Hallo 123,

du kannst auch
- "Schwellwert (1D-Array)" verwenden
- dein 1D-Array einem ">"-Vergleich unterziehen und das erste gesetzte Bit suchen
- eine Schleife, wie schon beschrieben, verwenden und Einzelwerte testen
Danke!
Ich werde es mal mit der For Next Schleife versuchen.
Kann ich mit diesen Indizes rechnen? Ich will nämlich anschließend mit zwei ermittelten Indizes ein Teil Array aus einem anderen 1D Array rauschneiden. Am besten werde ich das mit der "Teil Array" Funktion machen, nur die Länge muss ich ja rechnerisch ermitteln heißt Index2 - Index1 = Länge (Rest). Direkt den Index des letzten Werts des Arrays einzugeben wird nicht gehen?!
Hallo 123,

wenn du ein Array hast, welches sortiert ist und dann den Schwellwert nutzt, um den Index zu bekommen, ab dem der Wert überschritten ist und dann alles darauf folgenden Werte haben willst kannst du auch einfach mit dem Baustein "Array Länge" die Gsamtlänge nehmen und mit "Teil Array" bei Index den ermittelten Index und Länge die Arraylänge angeben. Dann bekommst du auf jeden Fall alle Elemente, die nach dem Index kommen. Wenn du jedoch zwei Schwellwerte hast, zwischen denen sich die Werte des Arrays befinden sollen, so musst du die For-Schleife zweimal durchlaufen und die beiden Indizes ermitteln. Dann einfach bei "Teil Array" als Länge = größeren Index - kleineren Index und als Startindex den kleineren Wert benutzen.

MfG Carsten
Danke Carsten, genau so hab ich das geplant. Ich hab jetzt zwei For Schleifen mit denen ich die zwei Indizes ermittel. Anschließend berechne ich die Länge und geh mit Index(klein) und Länge in die Funktion "Teil Array".
Kannst du mir vielleicht auch im Folgenden helfen: Jetzt soll das Teilarray nochmal durchlaufen werden und folgendes geschehen:

IF "Element" > x
ELSEIF "Element" < y
--> Fehlermeldung z.B. LED rot

Quasi ein Toleranzband. Wenn die Werte innerhalb liegen ist alles ok, wenn min einer außerhalb liegt, gibt es eine massive Fehlermeldung Smile
Hallo 123,

"In Range and Coerce" ist wie geschaffen dafür...
Ein Traum! Danke Gerd.
Heißt also wieder eine FOR Schleife. Mein Blockdiagramm besteht nur noch aus FOR Schleifen. Naja hauptsache es macht was ich will Wink
Hallo 123,

Zitat:Heißt also wieder eine FOR Schleife.
InRange&Coerce kann auch mit Arrays umgehen - Polymorphie rules...

Zitat:Mein Blockdiagramm besteht nur noch aus FOR Schleifen.
Häng doch mal dein VI an, dann könnten wir drauf gucken...
Zitat:InRange&Coerce kann auch mit Arrays umgehen - Polymorphie rules...
Tatsächlich. Hätte ich mal den ganzen Text lesen sollen.

Zitat:Häng doch mal dein VI an, dann könnten wir drauf gucken...
Sorry das geht leider nicht. Das Programm läuft auf einem Prüfstand und da kann ichs nicht runterziehen. Außerdem denk ich, dass das unters Firmengeheimnis fällt.
Seiten: 1 2
Referenz-URLs