Forum: Mikrocontroller und Digitale Elektronik Nächsten Punkt aus Matrix finden


von Kathrin (Gast)


Lesenswert?

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)

von holger (Gast)


Lesenswert?

>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;)

von Kat (Gast)


Lesenswert?

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.

von Daniel A. (daniel-a)


Lesenswert?

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
Noch kein Account? Hier anmelden.