25.07.2016, 07:25
|
TSC
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
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!
Gibts ne gute Methode zum Vergleich, der beiden Wege? Geschwindigkeit, Speicherauslastung?
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
25.07.2016, 07:32
(Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2016 08:07 von Lucki.)
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Wert an naheliegensten Wert aus Array anpassen
(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?
runden 2.vi (Größe: 8,05 KB / Downloads: 148)
|
|
|
25.07.2016, 08:00
|
GerdW
______________
Beiträge: 17.466
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Wert an naheliegensten Wert aus Array anpassen
Hallo TSC,
dreh doch dein sortiertes Array einfach mal um:
Jetzt wird der minimale Abstand gesucht und automatisch das erste zutreffende Element indiziert - was durch das Umdrehen eben der größere Wert ist…
|
|
|
25.07.2016, 08:19
|
TSC
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
(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.
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.
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
25.07.2016, 09:20
(Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2016 09:26 von Lucki.)
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Wert an naheliegensten Wert aus Array anpassen
(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?
|
|
|
25.07.2016, 09:44
|
TSC
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
(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!
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
25.07.2016, 16:48
(Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2016 16:49 von Lucki.)
|
Lucki
Tech.Exp.2.Klasse
Beiträge: 7.699
Registriert seit: Mar 2006
LV 2016-18 prof.
1995
DE
01108
Deutschland
|
RE: Wert an naheliegensten Wert aus Array anpassen
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.
|
|
|
26.07.2016, 06:59
|
TSC
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, 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.
Bis hierhin auf jeden Fall vielen Dank an alle beteiligten!
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" ( Konrad Zuse)
|
|
|
| |