interpolation in C
-
Hallo Bin hier auf die Seite gestoßen und wollte das in eine berechnung integrieren
Hier die Seite: http://paulbourke.net/miscellaneous/interpolation/double LinearInterpolate(
double y1,double y2,
double mu)
{
return(y1*(1-mu)+y2*mu);
}ich raffe aber nicht was das mu sein soll
vorallem bei der cubic interpolation... kann mir wer helfen.
Hatte mir ne eigene lineare interpüolationsfunktion geschrieben, aber irgendwie funktiuoniert die nicht.
int yb=0; int B = 2025; int dre[0]=2000; int dre[1]=2100; int vd [0]=-12; int vd [1]=-51; lin_interpol (int rpm_var1, int rpm_var2) { if ((t_var > dre[rpm_var1]) && (t_var < dre[rpm_var2])) { int x0 = dre[rpm_var1]; int y0 = vd[rpm_var1]; int x1 = dre[rpm_var2]; int y1 = vd[rpm_var2]; int yb; int B = n_mot; yb = y0-((B-x0)/(x1-x0))*(y0-y1) // Lineare Interpolation } printf ("yb= %d\n", yb);
Allrdings kommt als ergebnis immer:
yb= -12 // Also mein y0 Wert....
bin glaub ich zu blöd
-
Auf die Schnelle erstmal zu deinem 1. Problem.
Was mu ist steht doch neben der Grafik.
0<=mu<=1wenn mu 0 ist, bekommst du den Wert von y1.
wenn mu 1 ist, bekommst du den Wert von y2.
wenn mu 0.5 ist, bekommst du den Wert in der Mitte von y1 und y2.
-
ja, aber wenn mein
y1 = 123
y2 = 258 istund ich will den wert für 199 haben??? was ist dann mein mu???
das raffe ich nicht...ich ich hab ja im Normalfall x und y .. muss ich dann die berechnung für beide machen
naja aber das 2. ist eher mein größeres Problem. warum der mir immer -12 raus haut
dank dir aber dennoch
-
Der Code dort oben ist nichtmal compilierbar (entweder Anweisungen, die frei im Raum stehen, oder eine lokale Funktionsdefinition). Außerdem fehlt dort der entscheidende Punkt: Wo genau rufst du diese Funktion überhaupt auf?
PS: Und die Verwendung von globalen Variablen ist im Allgemeinen nicht besonders hilfreich bei der Diagnose von Problemen.
-
Hallo neop12,
da du bei deinem Code int anstatt double benutzt führt die Division (B-x0)/(x1-x0) immer zu 0 falls B < x1 ist.
Also entweder alles auf Fließkomamzahlen umstellen oder aber die Formel tauschenyb = y0-((B-x0)*(y0-y1)/(x1-x0));
-
neop13 schrieb:
ja, aber wenn mein
y1 = 123
y2 = 258 istund ich will den wert für 199 haben??? was ist dann mein mu???
das raffe ich nicht...Zu deinen y1 und y2 gehören doch auch x1 und x2.
Das mu gehört zu den x-Wertenmu = (xn - x1)/(x2-x1); für x1<=xn<=x2
Nur berechnet die Formel keine Funktion/kein Feld sondern nur für 2 Werte y1 und y2.
-
ahhh super danke schön
dölmer hab ich sogar noch dran gedacht