Nächsten Punkt aus Matrix finden

Gast #3645652
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)
Gast #3645675
>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;)
Gast #3645701
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.
#3645702
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.