INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Nächstgelegener Datenpunkt zu Schwellwert finden



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

26.11.2012, 17:35
Beitrag #1

sanjo Offline
LVF-Grünschnabel
*


Beiträge: 49
Registriert seit: Apr 2012

11
2012
DE



Nächstgelegener Datenpunkt zu Schwellwert finden
Hallo zusammen,

ich bin mal wieder auf eure Hilfe angewiesen (LabVIEW2011). Ich kürze es mal soweit es geht ab.

Ich gebe zwei Arrays mit Signalen (z.B. Strom und Spannung) auf einen x/y-Graphen. Nun möchte ich zu einem bestimmten x-Wert (Strom) den passenden y-Wert (Spannung) erhalten. Einfachster Fall war z.B. finde den y-Wert zum maximalen x-Wert (also die Spannung, welche beim größten Strom anliegt). Dieser Fall war noch sehr einfach, ich habe den min/max Baustein verwendet und über den Index den passenden Wert aus dem anderen Array erhalten.

Ich suche jedoch einen beliebigen Wert (nicht den maximalen o.ä.), wie gehe ich da vor. Beispiel, finde den y-Wert zu x = 3. Problem an der Sache ist, wahrscheinlich gibt es den x-Wert 3 so gar nicht, sondern nur einen Wert der sich einmal links und einmal rechts neben der 3 befindet. Und um das ganze jetzt ganz schlimm zu machen, die Stützstellen sind je nach Einstellung unterschiedlich weit entfernt, so dass es für mich auf Anhieb nicht möglich war, den Treshold-Baustein zu verwenden, da dieser eine Breite als Input fordert. Alternativ könnte ich das Array sortieren und über Differenzbildung den Wert raussuchen, der
am nächsten an der 3 dran ist, aber da es hier auch etwas auf Performance ankommt und ich nicht zu viel Hick-Hack ins Programm bringen möchte, dachte ich, es gibt evtl. eine elegantere Lösung.

Ich bin ernsthaft überfragt und hoffe, mir kann geholfen werden.

PS.: Sorry für die spärliche Beschreibung, ich hoffe, ihr versteht, was ich meine.

Danke und Gruß
Sanjo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.11.2012, 18:56
Beitrag #2

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Nächstgelegener Datenpunkt zu Schwellwert finden
Dieses VI
   
Ist haargenau maßgeschneidert für Dein Problem. Leider wird da oft nur der orangene Anschlussdraht für DBL-Array gesehen und nicht beachtet, dass es im Text der beiden Eingangsbeschreibungen jeweils noch ein "oder" gibt.
Also bei Dir: oben links Punktarray anschließen, wobei die Punktelemente Clusters [x;y] sind. Die x müssem nicht äquidistant sein, aber monoton nach oben laufen.
An den unteren Eingang das x anschließen, für das das y ausgegeben oder interpoliert werden soll. (letzteres: wenn x nicht im Punktarray vorkommt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.11.2012, 09:33
Beitrag #3

sanjo Offline
LVF-Grünschnabel
*


Beiträge: 49
Registriert seit: Apr 2012

11
2012
DE



RE: Nächstgelegener Datenpunkt zu Schwellwert finden
Hallo Lucki,

danke für deine Antwort! Leider konnte ich daraus nicht wirklich einen Nutzen ziehen. Erstens kann ich nicht garantieren, dass die x-Werte monton steigend sind, zweitens habe ich mir diesen Block angeschaut und ein Cluster (du meinst aus zwei Arrays?) lässt sich nicht anschließen, lediglich ein 1D-Arrray und als Ergebnis erhalten ich dann den x-Wert bzw. den interpolierten x-Wert, welcher in meinem Falle lediglich den Index des Arrays darstellt. OK, mit diesem Index ließe sich dann an das zweite Array gehen, jedoch nur, wenn x ganzzahlig, also nicht interpoliert ist, oder?

Ich versuche das Problem vllt. anders zu beschreiben: Finde den/die Datenpunkte, welche am nächsten an einer vorgebenen Schwelle liegt.

Beispiel: Schwelle = 3; Datensatz = [2,8; 3,98; 3,4; 2,6; 2,99; 3,09; 3,01]

In diesem Fall soll die Routine 2,99 und 3,01 ausspucken, am besten mit Index, damit ich im nächsten Schritt dann aus einem zweiten Datensatz = [10; 50; 60; 30; 40; 20; 10] die Werte 40 und 10 erhalte.

Ich hoffe, ich konnte es verständlicher machen.

Gruß
Sanjo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.11.2012, 09:38 (Dieser Beitrag wurde zuletzt bearbeitet: 27.11.2012 09:42 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Nächstgelegener Datenpunkt zu Schwellwert finden
Hallo Sanjo,

nein, hier war nicht die Rede von einem Cluster aus zwei Arrays...

Zu deinen Fragen:
   
Statt "1D-Array durchsuchen" muss natürlich "1D-Array Schwellwert" oder "1D-Array Interpolieren" verwendet werden. Beide kommen mit gebrochenen Eingangswerten klar...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.11.2012, 18:57
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Nächstgelegener Datenpunkt zu Schwellwert finden
(27.11.2012 09:33 )sanjo schrieb:  Ich hoffe, ich konnte es verständlicher machen.
Das ja, und es ist damit kein Problem, für das genannte Beispiel das entsprechende Programm zu machen. Es ist allerdings so, dass man sich Szenarien ausdenlen kann, wo das zu Willkürlichkeiten und logischen Konflikten führt.
Dass in dem Interpolations-VI die X-Werte monoton sein müssen, ist keine Enschränkung, die sich NI schikanöserweise ausgedacht hat, sondern hat den Grund, dass nur so eindeutige Ergebnisse möglich sind.

   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.11.2012, 10:09 (Dieser Beitrag wurde zuletzt bearbeitet: 28.11.2012 10:12 von sanjo.)
Beitrag #6

sanjo Offline
LVF-Grünschnabel
*


Beiträge: 49
Registriert seit: Apr 2012

11
2012
DE



RE: Nächstgelegener Datenpunkt zu Schwellwert finden
Wollte denen da nichts unterstellen, es ist leider so, dass ich nicht garantieren kann, dass die Werte monoton steigend sind Verdacht (Die Smileys hier sind im Übrigen der Wahmsinn :-D).

Habe es mit Hilfe eines Kollegen im Übrigen etwas anders gelöst (Siehe Anhang), man subtrahiert den Schwellwert und prüft auf Nulldurchgang bzw. Vorzeichenwechsel, wobei mir dieser Kollege auch gezeigt hat, dass es hierzu ein fertiges SubVI in LV2011 gibt (siehe Bild im Anhang). Habe das jetzt aber nicht mehr ausprobiert.

Danke für die Hilfe!

Gruß
Sanjo


Angehängte Datei(en) Thumbnail(s)
   

11.0 .vi  Schwellwert_finden.vi (Größe: 8,41 KB / Downloads: 240)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Kleinste Amplitude im bestimten Frequenzband finden J.R. 5 5.274 21.07.2015 12:49
Letzter Beitrag: GerdW
  ähnlichsten Wert in Array finden Lumberjacker 7 6.538 25.09.2013 18:20
Letzter Beitrag: Trinitatis
  Muster in 1D-Array finden gnu.the.iii 10 8.306 08.09.2009 08:21
Letzter Beitrag: gottfried

Gehe zu: