Lineare interpolation-code auf wikipedia - ich verstehe es nicht
Bin ich beim Lesen des folgenden code (aus hier)
void linear_interpolation_CPU(float2* result, float2* data,
float* x_out, int M, int N) {
float a;
for(int j = 0; j < N; j++) {
int k = floorf(x_out[j]);
a = x_out[j] - floorf(x_out[j]);
result[j].x = a*data[k+1].x + (-data[k].x*a + data[k].x);
result[j].y = a*data[k+1].y + (-data[k].y*a + data[k].y);
}
}
aber ich verstehe es nicht.
Warum ist nicht das Ergebnis[J] berechnet, indem die
Formel?
- Für jeden, der kann nicht finden den code auf dieser Seite, jemand bearbeitet es kurz nach diesem wurde geschrieben als verwirrend.
- Die Programmierung ist nicht für jedermann, manche Menschen können einfach nicht :((
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist berechnet, dass Art und Weise.
Blick auf die ersten zwei Zeilen:
Die erste Zeile definiert
x0
die Verwendung der Funktion floor. Dies ist, da der Artikel davon ausgegangen, gitterabstände eines für die sample-Punkte je Zeile:Nun könnten wir schreiben die zweite Zeile für Klarheit:
In der zweiten Zeile ist daher
x-x0
.Nun, lassen Sie uns untersuchen Sie die Gleichung:
Umschreiben diese im Hinblick auf die
y
,x
, undx0
gibt:Let ' s umbenennen
data[k+1].y
alsy1
unddata[k].y
als y0:Let ' s ordnen diese durch herausziehen
x-x0
:Und ordnen Sie wieder:
Wieder, der Gitterabstand ist wichtig:
So
x1-x0
ist immer 1. Wenn wir wieder zurück sind, bekommen wirDie nur die Gleichung, die Sie suchen.
Zugegeben, es ist lächerlich, dass der code nicht geschrieben ist, so zu machen, dass offensichtlich.