Werte interpolieren

Neue Frage »

.tyr Auf diesen Beitrag antworten »
Werte interpolieren
Hallo zusammen,

Ich habe zwei Folgen von Werten. Die eine Folge enthält 3 Werte, die andere 10. Z.B.




Ich möchte nun für die Werte aus aus den Werten aus eine Wertefolge mit entsprechend 10 Werten interpolieren.

Kann mir jemand auf die Sprünge helfen, wie man das macht?

VG Tyr
Steffen Bühler Auf diesen Beitrag antworten »
RE: Werte interpolieren
Das heißt, der Wertebereich von b soll statt 0..265,936 jetzt 3,321..4,241 sein? Oder was meinst Du?

Viele Grüße
Steffen
.tyr Auf diesen Beitrag antworten »

Hallo und vielen Dank für die Antwort!

Nein, ich muss mich korrigieren. Reihe ist natürlich unbekannt, nur die Anzahl der Werte ist bekannt.

Ich habe ein kleines Beispiel vorliegen, mit etwas größeren Zahlenfolgen. Folge enthält 17 Werte, Folge enthält 49 Werte. Die Werte der Folge sind bekannt und lauten wie folgt:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
2.8667
5.6000
8.3333
11.7500
15.8500
19.9500
24.0500
28.1500
32.2500
36.3500
40.4500
44.5500
48.6500
52.7500
56.1667
58.9000
61.6333


Nun werden die 49 Werte aus aus den 17 Werten aus linear interpoliert.
Reihe lautet dabei:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
0.00000
0.00325
0.01951
0.03577
0.05203
0.06829
0.08455
0.10081
0.11707
0.13335
0.14959
0.16585
0.18211
0.19837
0.21465
0.23089
0.24715
0.26341
0.29595
0.32846
0.36098
0.39350
0.42602
0.45855
0.49106
0.52358
0.55610
0.58862
0.62115
0.65366
0.68618
0.71870
0.75122
0.78376
0.81626
0.84878
0.88130
0.89756
0.91382
0.93008
0.93821
0.94636
0.95447
0.96260
0.97073
0.97886
0.98699
0.99512
1.00000


Mir ist nicht ganz klar, welchen Algorithmus man anwenden muss, um auf die Werte in zu kommen.

Würde mich über einen Ratschlag freuen.
.tyr Auf diesen Beitrag antworten »

Ergänzung: Der Wertebereich von muss zwischen 0 und 1 liegen.
Steffen Bühler Auf diesen Beitrag antworten »

Immer noch nicht klar. Du schreibst:

Zitat:
Original von .tyr
Reihe ist natürlich unbekannt, nur die Anzahl der Werte ist bekannt.


Dann kommt aber:

Zitat:
Original von .tyr

Reihe lautet dabei:
...


Dann sind die Werte von b also doch bekannt? Oder hast Du nur irgendeine Black Box, die Dir b liefert, und Du willst wissen, wie die funktioniert?
.tyr Auf diesen Beitrag antworten »

Ganz genau! ist unbekannt, lediglich die Anzahl der Werte ist bekannt und es handelt es sich um eine Black Box, deren Algorithmus ich nachvollziehen möchte. Das einzige was ich weiß ist, dass die Reihenfolge aus linear interpoliert wird.
 
 
Steffen Bühler Auf diesen Beitrag antworten »

Das Interpolieren wäre schnell erklärt, nur bin ich immer noch nicht sicher, ob die Black Box wirklich linear interpoliert oder ganz was anderes macht. Wenn ich die Grafiken nämlich so anschaue, gleichen sich die Kurven nicht besonders:


[attach]40527[/attach]
.tyr Auf diesen Beitrag antworten »

Was erzähle ich da eigentlich... verwirrt Nein, also ist nur der Index der Tabelle (dazu später mehr). Aber ich erläutere es am besten man anhand eines kurzen Beispiels.

Man kann sich einen Balken vorstellen, an dem, in gleichmäßigen Abständen, Kräfte gemessen werden. Wir messen also an 17 Stellen eine Kraft. Das ist jetzt unsere Reihe .
Anschließend unterteilt man diesen Balken aber in 49 statt 17 gleichmßige Punkte und interpoliert die 17 gemessenen Werte auf 49 Werte.

Das habe ich vor. Kann man das mit der linearen Interpolation bewerkstelligen?
.tyr Auf diesen Beitrag antworten »

Ergänzend zum letzten Beitrag: Die Reihe enthält lediglich den Index der neuen Tabelle mit den von mir gewünschten Ergebnissen. Und da dieser immer zwischen 0 und 1 liegen muss, unterteilt man die Indizes entsprechend auf 49 Werte. Aber das ist eher nebensächlich.
Steffen Bühler Auf diesen Beitrag antworten »

Zitat:
Original von .tyr
Kann man das mit der linearen Interpolation bewerkstelligen?


Ja, das kann man. Machen wir ein einfaches Beispiel:

Du misst erst mal an drei Punkten, die gleichmäßig aufgeteilt sind. Das ergibt z.B.

code:
1:
2:
3:
o----o----o
X    Y    Z


Und nun soll das auf vier Punkte aufgeteilt werden:

code:
1:
2:
3:
o--o--o--o
A  B  C  D


Die Endpunkte sind klar: A=X und D=Z.

Für B muss nun ein Teil von X und ein Teil von Y hergenommen werden, und zwar im umgekehrten Verhältnis der Entfernungen. Wenn wir den Balken auf Eins normieren, liegt B ja bei 1/3, X bei 0 und Y bei 1/2. Also ist die Entfernung XB=1/3 und YB=1/6. Wenn also z.B. bei X 6N gemessen wurden und bei Y 3N, ergäbe sich bei B .

Kannst Du das verallgemeinern?
.tyr Auf diesen Beitrag antworten »

Nach längerem Ausprobieren bin ich nun zu einem Ergebnis gekommen und konnte den Algorithmus in Java implementieren. Ich poste ihn hier mal nicht, da es kein mathematischer Rechenweg ist.

Vielen Dank für die Hilfe! Freude
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »