LabVIEWForum.de
Werte auf- und absteigend suchen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Signaldarstellung (/Forum-Signaldarstellung)
+---- Thema: Werte auf- und absteigend suchen (/Thread-Werte-auf-und-absteigend-suchen)



Werte auf- und absteigend suchen - JoeHännes - 21.04.2020 19:57

Hallo zusammen,

ich bin neu in Labview und habe heute erst damit begonnen. Ich habe den ganzen Tag gegoogelt unter anderem in diesem Forum und sehr viele nützliche Dinge gefunden.
Ich möchte die Fläche der dargestellten Kurve in den Schnittpunkten der roten Linie berechnen. Also den Teil der weiß dargestellt ist.

Die Werte(Daten 1.txt) und mein aktuelles .vi habe ich in den Anhang geladen. Die Werte beschreiben Drehzahl(X) und Leistung(Y).

Für mich ist es wichtig die Schnittpunkte der roten Linie zu ermitteln. Das habe ich mit den Funktionen Schwellwert(1-D) und Array indizieren für den ersten Schnittpunkt (bei ca. 10200 rpm) schon geschafft.
Er gibt mir die Zeilennummer aus und dann kann ich in dem 1-D Drehzahl-Array danach suchen und den Wert ausgeben. Bisher gebe ich die rote Linie vor. Das werde ich automatisieren, sobald ich die Daten der Schnittpunkte habe.

Ich habe große Schwierigkeiten den zweiten Schnittpunkt bei absteigenden Werten zu identifizieren.
Die Datenstruktur ist mit steigender Drehzahl aufgebaut. Wenn ich jetzt nach dem Leistungswert der roten Linie suche, bekomme ich immer den ersten Schnittpunkt.
Ich habe dann versucht über den Startindex (ab der Stelle der größten Leistung) bei der Funktion Schwellwert zu suchen. Jedoch gibt er mir dann immer den Wert ersten Wert nach dem Startindex zurück.

Wie kann ich die absteigenden Werte nach einer möglichst genauen Übereinstimmung durchsuchen?
Es wird keine exakte Übereinstimmung geben, da die rote Linie 2/3 von Pmax ist und dieser Wert berechnet ist, sodass es dazu vielleicht keinen Drehzahl-Wert gibt.


Desweiteren will ich dann so vorgehen, dass ich mir ein Teil-Array über den Bereich der roten Linie erstelle.
Diesen Bereich, von der Nulllinie bis zur weißen Kurve werde ich dann über die Funktion Nummerische Integration (nicht äquidistant) integrieren, da die Werte der X-Achse nicht immer den selben Abstand haben.
Anschließend berechne ich die Fläche von Bereich 2. Meine tatsächliche Fläche ist dann Gesamtfläche - Bereich 2.

Wenn ich das mit fiktiven Werten durchprobiere, bekomme ich schon etwas raus. Mir fehlt jetzt der Automatismus den zweiten Schnittpunkt zu ermitteln.

Könnte mir jemand einen Tipp geben?

Danke und beste Grüße
Johannes


RE: Werte auf- und absteigend suchen - GerdW - 21.04.2020 20:17

Hallo Johannes,

herzlich willkommen im Forum!

Mal eine Idee:
[attachment=60886]

Threshold1DArray arbeitet nur mit aufsteigenden Werten, steht so in der LabVIEW-Hilfe. Du könntest aber "von hinten anfangend" suchen, indem du dein Y-Werte-Array einmal mit Reverse1DArray umdrehst…


RE: Werte auf- und absteigend suchen - JoeHännes - 22.04.2020 09:03

Hallo Gerd,

danke dir für deine schnelle Hilfe.
Ich habe mich heute Morgen gefreut sofort eine Antwort erhalten zu haben.

Deine skizzierte Idee "filtert" die Werte mit der Bedingung alles > X % von Pmax. Das ist eine sehr gute Herangehensweise, welche ich direkt nachgebaut habe. Allerdings bleibt dann das Problem des Zeilenindex wo die Schnittpunktwerte stehen.
Ich habe deinen Lösungsvorschlag mit der Funktion 1D Array umkehren beherzigt und das Ergebnis ist ein voller Erfolg. Thanx
Es macht jetzt genau das was ich möchte. Allerdings musste ich nicht nur das Y-Array umdrehen, sondern auch das X-Array, da sonst die Zeilennummer nicht gepasst hat.
So ist es es möglich die Zeile mit dem Wert zu finden und diese Zeilennummer dann in dem umgedrehten X-Array zu suchen. Schon hatte ich den zweiten Schnittpunkt.
Habe das Ergebnis in den Anhang geladen.

Ich hätte allerdings noch eine Frage zu der Funktion Schwellwert (1D-Array). Dort steht in der Hilfe, "bis zwei aufeinander folgende Elemente gefunden werden, bei denen der Schwellwert y größer als der erste Wert und kleiner gleich dem zweiten Wert ist." D.h. übersetzt doch die Zelle finden in der der Wert größer als der Suchwert ist?

Außerdem hätte ich eine noch eine Frage zur Achsenskallierung. Ist es möglich die X-Achse in Abhängigkeit der Messwerte zu skallieren?
Ich werte ja die Drehzahl der maximalen Leistung aus n(Pmax). Kann ich die X-Achse bei z.B 50 % von n(Pmax) beginnen lassen und dann bis zum Ende darstellen? Ich möchte die Skallierung jedoch nicht händisch anpassen, sondern eine Funktion diese Aufgabe übernehmen lassen.
Ich habe durch die Suche eine Funktion Aktive Scale gefunden, jedoch erziele ich damit keinen Erfolg.


Vielen Dank für die schnelle Unterstützung trotz meiner "Neuling"-Fragen Thanx


RE: Werte auf- und absteigend suchen - GerdW - 22.04.2020 10:08

Hallo Johannes,

Zitat:Allerdings bleibt dann das Problem des Zeilenindex wo die Schnittpunktwerte stehen.
Mit meinem Vorschlag musst du nur gucken, wo ein Wert ungleich Null steht (Anfang) und danach der erste Null-Wert (Ende). Das kann mit mit Search1DArray sehr gut erledigen…


Zitat:Ist es möglich die X-Achse in Abhängigkeit der Messwerte zu skallieren?
Ja klar ist das möglich!
Wenn dir also die Autoskalierung nicht zusagt, musst du eben selbst Min/Max der Achse festlegen. Dafür nimmt man Propertynodes…

Zitat:Ich habe durch die Suche eine Funktion Aktive Scale gefunden, jedoch erziele ich damit keinen Erfolg.
Wenn du die X-Achsen-Eigenschaften bearbeiten willst, solltest du die passende Eigenschaft unter "X Scale" finden…


RE: Werte auf- und absteigend suchen - jg - 22.04.2020 10:15

(21.04.2020 19:57 )JoeHännes schrieb:  Hallo zusammen,

ich bin neu in Labview und habe heute erst damit begonnen.

Könnte mir jemand einen Tipp geben?

Danke und beste Grüße
Johannes
Hallo,

ein wenig Off-Topic: aktuell sind alle Self-Paced Learning Kurse bei NI kostenlos zugänglich:
https://www.labviewforum.de/Thread-NI-News-eLearning

Gruß, Jens


RE: Werte auf- und absteigend suchen - BNT - 23.04.2020 12:42

Guck Dir doch mal den "Peak Detector" an.

Die gesuchte Schwelle von Deiner Kurve subtrahieren, Betrag bilden und die Minima suchen.

Kleine Hausaufaufgabe: Jeden Tag eine Funktions-Subpalette mit Hilfe der Kontexthilfe anschauen, um einen Überblick über vorhandene Funktionen zu bekommen.

Gruß Holger