Bonjour a tous!
Je m'interesse a la question du best fit d'un nuage de points (x,y) par une ellipse, en utilisant Matlab. Voici le bout de code concerné:
AA et BB etant les matrices des points evidemment (une colonne= les coordonnées x ou y d'un nuage), je cherche donc a resoudre le probleme X.A=Y avec X la matrice(l,5) [x² xy y² x y] calculée a partir de tous mes points, ou l=longueur de mes matrices AA ou BB (meme longueur)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 %determination de l'equation de l'ellipse moyenne %equation sous la forme ax²+2bxy+cy²+2dx+2fy+g=0 %on fixe g=-1 for i=1:longueur X(i,:)=[AA(i,1)*AA(i,1) AA(i,1)*BB(i,1) BB(i,1)*BB(i,1) AA(i,1) BB(i,1)]; end Y = ones(size(AA)); int=(inv((X'*X))); C=int*X'; r=C*Y;
A est ma matrice d'inconnues (a, b, c, d, f) et Y la matrice (l,1) [1]. (on pose g=-1 pour pouvoir resoudre)
Probleme: les resultats obtenus ne sont pas du tout coherent avec l'aspect du nuage (je tombe sur des ellipses avec grand axe>>>petit axe, au point qu'elles ressemblent a une ligne seule) et pourtant mes nuages sont relativement "propres".
Voyez vous une erreur possible dans le calcul ou comment procederiez vous?
2) AU lieu de faire un best fit, est il possible de determiner la plus petite ellipse qui contienne tous les points du nuage?? (ellipse dont l'angle est bien sur non nul cad dont les axes ne sont pas paralleles aux axes du repere)
Cordialement,
walks
Partager