Die Frage ist jetzt welche von beiden Lösung die richtige Lösung liefert, denn die beiden Makros liefern verschiedene Ergebnisse. Ich kann es nicht wirklich mathematisch begründen, aber die Tabelle bzw. die Abstufungen in Sulprobils Lösung sehen für mich realistischer aus.
Deine Lösung ist optisch natürlich erste Sahne. @snb
@Sulprobil Wie kann ich denn die Ausgangstabelle um weitere Werte erweitern und neu interpolieren lassen - habe nun einiges versucht, bekomme aber keine korrekte Vorgangsweise zusammen.
22.09.2022, 15:50 (Dieser Beitrag wurde zuletzt bearbeitet: 22.09.2022, 15:51 von snb.)
Die Abstände sind nicht gleich 30, 35 (+5) 45 (+10), 55 (+10) Darum fängt meine Tabelle an bei 25. Schau mal AA702:(Spalte Name: 15) / Zeile Name 95: dort sollte 3071 stehen.
22.09.2022, 22:15 (Dieser Beitrag wurde zuletzt bearbeitet: 22.09.2022, 22:37 von odgrg.)
(22.09.2022, 15:50)snb schrieb: Die Abstände sind nicht gleich 30, 35 (+5) 45 (+10), 55 (+10) Darum fängt meine Tabelle an bei 25. Schau mal AA702:(Spalte Name: 15) / Zeile Name 95: dort sollte 3071 stehen.
Die Messwerte stimmen überein mit den Positionen, das passt. D.h. dein Makro kann quasi keine verschieden großen Abstände, oder?
Das Problem ist einfach, dass ich da nichts umgestalten kann. Die Eckdaten aus meiner Tabelle sind empirisch gemessene Werte anhand derer ich eben interpolieren muss bei genau diesen x- und y-Achsen.
(20.09.2022, 10:40)Sulprobil schrieb: Hallo,
anbei mein Lösungsvorschlag (ohne jede Gewähr, aber ich verwende einen aktuellen Virenscanner):
Viele Grüße, Bernd
Ich versuche und versuche es - aber ich fühl mich schön langsam zu blöd zur Bedienung deines Makros. @Sulprobil: Anbei findest du einen Screenshot. Meine Mappe mit meinen weiteren Ausführungen kann ich leider nicht hineinsetzen, da empfindliche Daten darin enthalten sind.
In den roten Rechtecken siehst du die Werte, die ich neu hinzugefügt habe. Dann habe ich zuerst für x mit "WAHR" extrapoliert und dann für y mit "WAHR" extrapoliert. Dabei kamen dann diese komischen Werte in den Tabellen heraus und ich verstehe absolut nicht warum.
Anbei eine Version, die den Aufruf meiner Funktion vereinfachen sollte (wie immer ohne Gewähr, aber ich verwende einen aktuellen Virenscanner). Die erste lineare Interpolation muss in x-Richtung (horizontal) erfolgen, die zweite in y-Richtung (vertikal). Schau' Dir bitte genau die verwendeten Formeln an. In Deiner Excel Version solltest Du die Formeln normal eingeben können (ohne Matrixformel Abschluss). Als Test für eine korrekte bilineare Interpolation könntest Du eingeben:
PHP-Code:
Interpolate Start Increment End Method Extrapolate? x 0 1 10 Linear FALSCH y 0 1 10 Linear FALSCH
26.09.2022, 11:52 (Dieser Beitrag wurde zuletzt bearbeitet: 26.09.2022, 11:58 von snb.)
Für mich sieht das ziemlich merkwürdig aus: eine Tabelle mit X-Achse mit Abstände van 2,5 Punkte und Y_Achse mit Abstände von 10 Punkten, und dann nur eine Ausnahme : 30 statt 25. Mache es dir gemütlich: Wenn Zelle M6 30/40 Wert 3717 hat und Zelle M7 (35/40) Wert 4186, bedeutet das, dass du nur ändern muß:
M6: 3717 wird 3248 M6= M6- (M7-M6) A6: wird 25 statt 30
27.09.2022, 14:36 (Dieser Beitrag wurde zuletzt bearbeitet: 27.09.2022, 14:37 von Sulprobil.)
(26.09.2022, 11:52)snb schrieb: Für mich sieht das ziemlich merkwürdig aus: eine Tabelle mit X-Achse mit Abstände van 2,5 Punkte und Y_Achse mit Abstände von 10 Punkten, und dann nur eine Ausnahme : 30 statt 25. Mache es dir gemütlich: ...
Mache es bitte lieber einmal richtig. Falls neue Ablesewerte zwischen diesen von Dir berechneten Werten eingegeben würden, müssten alle "gemütlichen" Werte neu berechnet werden. Der Witz einer (korrekten!) bilinearen Interpolation besteht gerade darin, daß auch nicht-equidistante Ausgangswerte existieren können. Die Formeln dafür sind recht simpel. Schon drei Punkte, die nicht auf einer Geraden liegen, spannen eine Ebene auf.
07.02.2023, 15:28 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2023, 15:52 von odgrg.)
(27.09.2022, 14:36)Sulprobil schrieb: Mache es bitte lieber einmal richtig. Falls neue Ablesewerte zwischen diesen von Dir berechneten Werten eingegeben würden, müssten alle "gemütlichen" Werte neu berechnet werden. Der Witz einer (korrekten!) bilinearen Interpolation besteht gerade darin, daß auch nicht-equidistante Ausgangswerte existieren können. Die Formeln dafür sind recht simpel. Schon drei Punkte, die nicht auf einer Geraden liegen, spannen eine Ebene auf.
Hallo Sulprobil,
ich möchte die Tabelle nun für ein weiteres Produkt verwenden und muss diese daher nun gemäß des folgenden Bildes erweitern.
Ich habe alles für mich logische versucht, aber es haut mit den Erweiterungen in x- und y-Richtung leider nicht hin.
Ich habe die Input-Tabelle in x- und y-Richtung angepasst und erweitert. Oben in Start- und Endwerte angepasst und die x- und y-Achse auch in der intermediate- und output-table angepasst. Dann habe ich meine neuen Werte als in die Input-Tabelle kopiert. Es wird zwar interpoliert, aber in x-Richtung nur bis 37,5 und in y-Richtung nur bis 80 - ich kann mir nicht erklären warum.