LabVIEWForum.de
Wert an naheliegensten Wert aus Array anpassen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Wert an naheliegensten Wert aus Array anpassen (/Thread-Wert-an-naheliegensten-Wert-aus-Array-anpassen)

Seiten: 1 2


RE: Wert an naheliegensten Wert aus Array anpassen - TSC - 25.07.2016 07:25

Hier mal zwei Lösungen, die eben genau das machen, was ich will. Teilweise mit eurem Input verbaut (vielen Dank dafür). Falls noch irgendwer ne Optimierung findet, gerne!

[attachment=56346]
[attachment=56347]

Gibts ne gute Methode zum Vergleich, der beiden Wege? Geschwindigkeit, Speicherauslastung?


RE: Wert an naheliegensten Wert aus Array anpassen - Lucki - 25.07.2016 07:32

(25.07.2016 06:33 )TSC schrieb:  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.
Und? Erfüllt der gepostete Code die Anforderungen? Ist es zu kompliziert? Wenn ja, wer hat einen besseren Vorschlag?
Gruß Ludwig

Edit: zum letzten Posting. Warum nicht einfach so?
[attachment=56351]
[attachment=56350]


RE: Wert an naheliegensten Wert aus Array anpassen - GerdW - 25.07.2016 08:00

Hallo TSC,

dreh doch dein sortiertes Array einfach mal um:
[attachment=56349]
Jetzt wird der minimale Abstand gesucht und automatisch das erste zutreffende Element indiziert - was durch das Umdrehen eben der größere Wert ist…


RE: Wert an naheliegensten Wert aus Array anpassen - TSC - 25.07.2016 08:19

(25.07.2016 07:32 )Lucki schrieb:  
(25.07.2016 06:33 )TSC schrieb:  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.
Und? Erfüllt der gepostete Code die Anforderungen? Ist es zu kompliziert? Wenn ja, wer hat einen besseren Vorschlag?
Gruß Ludwig

Also wenn ich deinen Code richtig verstanden habe, rundet er auf ganzzahlige Werte (immer zum Integer mit der kleinsten Differenz, aufrunden in der Mitte). Aber ich möchte ja aus einem Array das nächste Element haben und nicht die nächste ganze Zahl. Da kann auch mal ein Sprung von 10000 zwischen zwei Werten liegen.
In Kombination mit dem Schwellwert_VI kann ich damit natürlich wunderbar den Index runden! Damit habe ich dann 3 Lösungen, die machen was ich will.

[attachment=56352]

InputArray: {1;2;4;8}
get(0)=1;
get(1)=1;
get(1,49)=1;
get(1,5)=2;
get(2)=2;
get(3)=4;
get(4)=4;
get(6)=8;
get(8)=8;
usw.

Nun suche ich einen VI-Vergleicher was Speicherauslastung, CPU-Belastung und Geschwindigkeit angeht um die optimale Lösung zu bestimmen. Aber wie so oft ist das wohl nicht so einfach, weils vom Imput abhängig ist.


RE: Wert an naheliegensten Wert aus Array anpassen - Lucki - 25.07.2016 09:20

(25.07.2016 08:19 )TSC schrieb:  Also wenn ich deinen Code richtig verstanden habe, rundet er auf ganzzahlige Werte (immer zum Integer mit der kleinsten Differenz, aufrunden in der Mitte). Aber ich möchte ja aus einem Array das nächste Element haben und nicht die nächste ganze Zahl. Da kann auch mal ein Sprung von 10000 zwischen zwei Werten liegen.
Ist schon klar, aber ich wollte doch gar nicht ein verbessertes Hauptprogramm liefern. Für dieses fehlte Dir eine Rundungsfunktion auf den nächsten ganzahligen Index - zum Einbau in Dein Programm. Ich hielt es für selbstverständlich, dass man das so versteht, und nicht als missglücktes alternatives Hauptprogramm. War leider ein Irrtum.

Zitat:Nun suche ich einen VI-Vergleicher was Speicherauslastung, CPU-Belastung und Geschwindigkeit angeht um die optimale Lösung zu bestimmen. Aber wie so oft ist das wohl nicht so einfach, weils vom Imput abhängig ist.
Bei den heutigen PC-Leistungen interessiert das meist niemanden. Es sei denn, es handelst sich um sehr sehr große Arrays. Um welche Größenordnung handelt es sich denn hier?


RE: Wert an naheliegensten Wert aus Array anpassen - TSC - 25.07.2016 09:44

(25.07.2016 09:20 )Lucki schrieb:  Ist schon klar, aber ich wollte doch gar nicht ein verbessertes Hauptprogramm liefern. Für dieses fehlte Dir eine Rundungsfunktion auf den nächsten ganzahligen Index - zum Einbau in Dein Programm. Ich hatte geglaubt, das verstehst Du auch so, und nicht als missglücktes alternatives Hauptprogramm.
Zitat:Nun suche ich einen VI-Vergleicher was Speicherauslastung, CPU-Belastung und Geschwindigkeit angeht um die optimale Lösung zu bestimmen. Aber wie so oft ist das wohl nicht so einfach, weils vom Imput abhängig ist.
Bei den heutigen PC-Leistungen interessiert das meist niemanden. Es sei denn, es handelst sich um sehr sehr große Arrays. Um welche Größenordnung handelt es sich denn hier?

Hatte die Anhänge bei dir erst übersehen (Forum am Handy ist doof). Und nun ist deine Runden-Funktion im Solution3 eingebaut.

Das ganze soll später mal in einem Hardware-in-the-Loop-Prüfstand in Echtzeit dynamische Konfigurationen aus einer Datenbank bereitstellen (das klingt beim Tippen ja schon widersprüchlich!? Autsch!). An meiner Schnittstelle liegt aber eben genau dieses Array schon an. Die Werte selbst liegen alle zwischen 0,0000000 und 0,9999999. Und werden vorher durch eine Simulation gefiltert. Je nach Filter, bekomme ich dann eben ein Array mit 2 Werten oder mit 9999999 Werten oder was am realistischsten ist, irgendwas dazwischen!


RE: Wert an naheliegensten Wert aus Array anpassen - Lucki - 25.07.2016 16:48

Die 10^7 fache Ausführung des Programms in #14 dauert bei mir ca. 500ms. An der Ausführungszeit dieses Codes würde Dein Projekt bestimmt nicht scheitern.


RE: Wert an naheliegensten Wert aus Array anpassen - TSC - 26.07.2016 06:59

Ja, ich mache mir bei der Funktion eigentlich auch keine Gedanken, hast ja recht! Trotzdem fände ich einen VI-Vergleich oder eine ordentliche Analyse interessant. Aber das ist wohl ein anderes Thema. Wink

Bis hierhin auf jeden Fall vielen Dank an alle beteiligten!