Hey, ich habe ein Problem (leider) o.O Und zwar lese ich von einer SD-Karte Werte in eine Matrix. Diese Werte sind dreidimensionale Referenzwerte, einer xy-Koordinate wird dabei ein z-Wert zugeordnet. Das ganze ist dan praktisch als 3D-Kennlinie(eig ja eher Raum) zu verstehen. Jetzt bekomme ich Werte und möchte diese interpolieren. Dazu brauche ich die 4 nächsten Punkte. (Einer würde für den Anfang reichen). Kann mir jemand eine Idee geben, wie man diese(n) berechnen kann? Die Sache ist halt die, dass ich auf Wurzel gänzlich und auf Division nach Möglichkeit verzichten möchte. Ram ist zwar ausreichend vorhanden, muss aber nicht verramscht werden. Das ganze soll später auf einem STM32F4 (Hardwaremultiplizierer, 148 MHz, ausreichend Ram, ausreichend Flash) laufen. Viele Grüße und gute Nacht (muss ins Bett :P)
>Die Sache ist halt die, dass ich auf Wurzel gänzlich und auf Division >nach Möglichkeit verzichten möchte. Ram ist zwar ausreichend vorhanden, >muss aber nicht verramscht werden. Das ganze soll später auf einem >STM32F4 (Hardwaremultiplizierer, 148 MHz, ausreichend Ram, ausreichend >Flash) laufen. 10000V in den ARMen nutzen aber nichts wenn in der Birne das Licht nicht leuchtet;)
Und ich darf annehmen, dass dieser Kommentar dir ebenso wenig nutzt. Vllt gab es deine begrenzte geistige Fähigkeit nicht her, aber nach deiner Meinung hat niemand gefragt. Deine in der realen Welt fehlende Anerkennung wirst du hier auch nicht finden.
Kathrin schrieb: > Hey, > ich habe ein Problem (leider) o.O > > Und zwar lese ich von einer SD-Karte Werte in eine Matrix. Diese Werte > sind dreidimensionale Referenzwerte, einer xy-Koordinate wird dabei ein > z-Wert zugeordnet. Welche dimensionen hat die matrix genau? x,y,z mit 3x4 oder 3xN, oder sind es nur z-werte, für jede position einer Matrix von XxY? > Das ganze ist dan praktisch als 3D-Kennlinie(eig ja > eher Raum) zu verstehen. Jetzt bekomme ich Werte und möchte diese > interpolieren. Dazu brauche ich die 4 nächsten Punkte. (Einer würde für > den Anfang reichen). Was den nun, Linie, Punkt oder Raum? Was für werte? x und y, als float und dann den z wert der nächstgelegenen 4 punkte der Matrix aus z werten interpoliert? Lineare interpolation? ich gehe mal von folgender matrix und linearer interpolation aus.
1 | float zAt[n][m] = {...}; // matrix |
2 | |
3 | float x = 1.5; // werte |
4 | float y = 1.5; |
5 | |
6 | float a = x-(int)x; // kommastelle |
7 | float b = y-(int)y; |
8 | |
9 | // interpolation
|
10 | float z1= zAt[(int)x][(int)y ]*(1.0f-a)+zAt[(int)x+1][(int)y ]*a; |
11 | float z2= zAt[(int)x][(int)y+1]*(1.0f-a)+zAt[(int)x+1][(int)y+1]*a; |
12 | |
13 | float z = z1*(1.0f-b)+z2*b; // resultat |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.