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 

Wert an naheliegensten Wert aus Array anpassen



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!

22.07.2016, 12:39
Beitrag #1

TSC Offline
LVF-Team
LVF-Team

Beiträge: 1.882
Registriert seit: Sep 2008

LV 2018 SP1
2008
EN

52379
Deutschland
Wert an naheliegensten Wert aus Array anpassen
Hallo zusammen,

ich glaube es liegt am Wetter, aber mir fallen nur unsagbar blöde Algoryhtmen ein. Hier die Problemstellung:

Ich habe ein double-Array mit erlaubten Werten, zum Beispiel {0,5;1;2;4} und einen double-Eingang der einen beliebigen Wert annehmen darf. Nun möchte ich aus dem Array den Wert ermitteln, dessen Differenz zum Einganswert am kleinsten ist.

Anbei ein kleiner VI-Abschnitt zur Verdeutlichung! Vielleicht habt ihr effizientere Ideen als ich!

   

Für Ideen und Anregungen bin ich dankbar.

"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 12:46
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Wert an naheliegensten Wert aus Array anpassen
Hallo TSC,

1. Differenz aus neuem Wert und deinem Array bilden
2. ArrayMinMax auf diese Differenz anwenden: Min-Index lesen
3. Mit dem Min-Index das Element aus deinem Array indizieren…

Ist schon recht feucht-warm heute… Big Grin

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 13:02 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2016 13:05 von TSC.)
Beitrag #3

TSC Offline
LVF-Team
LVF-Team

Beiträge: 1.882
Registriert seit: Sep 2008

LV 2018 SP1
2008
EN

52379
Deutschland
RE: Wert an naheliegensten Wert aus Array anpassen
Danke für den Ansatz, hier die Umsetzung deiner Idee (wenn ich dich richtig verstanden habe Cool)

   

Aber erstens: holt mir das nicht den nächst höheren bei einem genau mittig liegendem Wert
und zweitens frage ich mich, ob es nicht effizienter geht, als alle Differenzen zu bilden und so weiter?

"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 14:02
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Wert an naheliegensten Wert aus Array anpassen
Hallo TSC,

Zitat:erstens: holt mir das nicht den nächst höheren bei einem genau mittig liegendem Wert
Es gibt genau definierte Rundungsregeln in der IEEE754-Spezifikation, die die Grundlage für alle FloatingPoint-Operationen bildet…

Zitat:zweitens frage ich mich, ob es nicht effizienter geht, als alle Differenzen zu bilden und so weiter?
Du willst wissen, welcher Wert am nächsten zu deinem Input liegt - ohne den Abstand zu berechnen???

Solange dein Array sortiert vorliegt, kannst du natürlich auch im Array suchen: Threshold1DArray ist die gesuchte Funktion…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 14:28
Beitrag #5

TSC Offline
LVF-Team
LVF-Team

Beiträge: 1.882
Registriert seit: Sep 2008

LV 2018 SP1
2008
EN

52379
Deutschland
RE: Wert an naheliegensten Wert aus Array anpassen
Zitat:Es gibt genau definierte Rundungsregeln in der IEEE754-Spezifikation, die die Grundlage für alle FloatingPoint-Operationen bildet…

Ja, und da seht doch hoffentlich drin, dass man eben bei 1,5 auf 2 aufrundet (also der nächst höhere Wert)?

Zitat:Du willst wissen, welcher Wert am nächsten zu deinem Input liegt - ohne den Abstand zu berechnen???
Solange dein Array sortiert vorliegt, kannst du natürlich auch im Array suchen: Threshold1DArray ist die gesuchte Funktion…

Haha, ja so könnte man es formullieren. Das Array liegt sortiert vor. Hier ein Versuch der Umsetzung:

   

Soweit so gut. Schaut schön aus. Aber auch hier ein Rundungsproblem: habe ich im Array die Werte 2 und 4 und mein Input ist 3. Dann bekomme ich die 2 zurück. Sad

"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 14:36 (Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2016 14:38 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Wert an naheliegensten Wert aus Array anpassen
Hallo TSC,

Zitat:da seht doch hoffentlich drin, dass man eben bei 1,5 auf 2 aufrundet
Ja.

Zitat:(also der nächst höhere Wert)?
Falsch: der nächstliegende gerade Wert. ("bankers rounding")
Einfach mal Wikipedia lesen

Zitat:hier ein Rundungsproblem: habe ich im Array die Werte 2 und 4 und mein Input ist 3. Dann bekomme ich die 2 zurück.
Welcher gerade Wert liegt deiner "3" wohl näher: 2 oder 4?
Was erwartest du hier eigentlich für ein Ergebnis, wenn die Aufgabe lautet: "Finde den nächstliegenden Wert?"

Lösung: Threshold liefert dir einen "gebrochenen Index" zurück. Den kann man prima abrunden…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 14:47
Beitrag #7

TSC Offline
LVF-Team
LVF-Team

Beiträge: 1.882
Registriert seit: Sep 2008

LV 2018 SP1
2008
EN

52379
Deutschland
RE: Wert an naheliegensten Wert aus Array anpassen
Ja danke, das hat geholfen,.. viel Input, guter Artikel. Kurz: es gibt keine Funktion die nach Norm falsch, aber dafür meinen Wünschen entsprechend, rundet!? Grml! Nagut, dann runde ich händisch!

"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2016, 21:10
Beitrag #8

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Wert an naheliegensten Wert aus Array anpassen
Wenn deine Werte sortiert sind, dann könntest du auch diese Funktion zum Suchen verwenden:
https://zone.ni.com/reference/en-XX/help..._1d_array/
Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.07.2016, 15:21 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2016 07:27 von Lucki.)
Beitrag #9

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: Wert an naheliegensten Wert aus Array anpassen
(22.07.2016 14:47 )TSC schrieb:  Kurz: es gibt keine Funktion die nach Norm falsch, aber dafür meinen Wünschen entsprechend, rundet!?
Um die Frage zu beantorten, müßte man erst mal wissen, was Dein Wünsche sind. Bisher hst Du nur verraten, dass Du 1.5 auf 2 und 2.5 gern auf drei gerundet haben möchtest. Darf man daruf schließen, dass Du immer aufgerundet haben möchtest?
Dann könnte ein kleines SubVI, welches das macht, z.B so aussehen (aber vielleicht geht es auch einfacher):
   

15.0 .vi  runden.vi (Größe: 6,85 KB / Downloads: 217)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.07.2016, 06:33 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2016 06:38 von TSC.)
Beitrag #10

TSC Offline
LVF-Team
LVF-Team

Beiträge: 1.882
Registriert seit: Sep 2008

LV 2018 SP1
2008
EN

52379
Deutschland
RE: Wert an naheliegensten Wert aus Array anpassen
(22.07.2016 21:10 )jg schrieb:  Wenn deine Werte sortiert sind, dann könntest du auch diese Funktion zum Suchen verwenden:
https://zone.ni.com/reference/en-XX/help..._1d_array/
Gruß, Jens

Hi Jens, das hatte GerdW auch schon vorgeschlagen und ist im letzten Anhang von mir verwendet. Bisher die angenehmste Lösung mit dem einzigen Problem: ich möchte nicht so runden, wie es laut IEEE korrekt wäre, sondern explizit aufrunden, wenn ich exakt zwischen zwei werten liege.


(24.07.2016 15:21 )Lucki schrieb:  Um die Frage zu beantorten, müßte man erst mal wissen, was Dein Wünsche sind. Bisher hst Du nur verraten, dass Du 1.5 auf 2 und 2.5 gern auf drei gerundet haben möchtest. Darf man daruf schließen, dass Du immer aufgerundet haben möchtest?
Dann könnte ein kleines SubVI, welches das macht, z.B so aussehen (aber vielleicht geht es auch einfacher):

Moin Lucki,

Naja ich hatte gehofft das getan zu haben (Post 1)?! zugegeben, ich habe meine Wünsche zum problematischsten Teil im Anhang versteckt (aufrunden wenn ich exakt zwischen zwei werten liege).

Aber hier nochmal konkret:
Ich möchte aus einem sortierten Array den Wert ermitteln, welcher einem Suchelement am nächsten ist. Sollte das Array zwei Werte mit gleichem Abstand enthalten, möchte ich IMMER den größeren Wert erhalten.

VG,
Torsten

"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Wert des Variant ermitteln LV-New 8 5.512 23.02.2022 09:09
Letzter Beitrag: LV-New
  Ausgelesener Wert als konstante in SubVi mikadm 12 7.356 02.09.2020 10:27
Letzter Beitrag: mikadm
  Default Wert wird nicht gespeichert ares2013 8 6.696 27.02.2020 12:51
Letzter Beitrag: jg
  Wert aus 1-D Array entfernen Stephan235 2 3.839 16.03.2018 15:53
Letzter Beitrag: Stephan235
  Mikrofonsignal in einen "dB C" Wert umrechnen gottfried 0 3.084 03.10.2017 10:22
Letzter Beitrag: gottfried
  VISA Abfrage an virtuellem COM Port liefert nur bei erster Abfrage Wert (MarCator) Ksanto 3 4.431 27.07.2017 09:40
Letzter Beitrag: Ksanto

Gehe zu: