2017-12-06 13 views
0

ich folgende Matlab-Skript verwenden möchten, ein Ellipsoid zu passen:Finden Sie die Mitte des Ellipsoid

https://de.mathworks.com/matlabcentral/fileexchange/24693-ellipsoid-fit

Aber ich will auch verstehen, die Mathematik. Ich stecke hier fest:

% find the center of the ellipsoid 
center = -A(1:3, 1:3) \ v(7:9); 

Wo 'A' ist die algebraische Form des Ellipsoids. Meine Frage ist also: Was ist die Beziehung zwischen der algebraischen Ellipsoidform und dem Ellipsoidzentrum?

+0

Ich denke, das ist mehr ein mathematisches Problem als ein Programmierproblem. – Squeezie

+0

Ja, Sie haben Recht. – Mark

+0

Ich bin nicht ganz sicher, was Sie meinen, aber algebraische Ellipsoidform bezieht sich wahrscheinlich auf die Form der Gleichung (kartesische oder sphärische Koordinaten, etc.), während Ellipsoidzentrum wahrscheinlich auf das Zentrum, auf der RHS der Gleichung für ein Ellipsoid bezieht. Dieser Link kann helfen: http://mathworld.wolfram.com/Ellipsoid.html – ProgrammingEnthusiast

Antwort

0

Die Gleichung des Ellipsoids in homogenen Koordinaten als

  ⎡v1 v4 v5 v7 ⎤ ⎡x⎤ 
      ⎢v4 v2 v6 v8 ⎥ ⎢y⎥ 
[x y z 1] * ⎢v5 v6 v3 v9 ⎥ * ⎢z⎥ = 0 
      ⎣v7 v8 v9 v10⎦ ⎣1⎦ 

die Sie auch ohne homogenen Koordinaten als

schreiben
  ⎡v1 v4 v5⎤ ⎡x⎤     ⎡v7⎤ 
[x y z] * ⎢v4 v2 v6⎥ * ⎢y⎥ + 2 * [x y z] * ⎢v8⎥ + v10 = 0 
      ⎣v5 v6 v3⎦ ⎣z⎦     ⎣v9⎦ 

Wenn der zweite Summand gleich Null ist, dies beschreibt ein Ellipsoid zentriert gegeben im Ursprung, da für jeden Punkt [x, y, z] sein Spiegelbild [-x, -y, -z] zum selben Ergebnis führt. Der zweite (d. H. Lineare) Ausdruck ist also, was das Ellipsoid aus dem Zentrum heraus verschiebt.

Wenn Sie mit einem Ellipsoid am Ursprung zentrierte beginnen und dann verschieben, um die Mitte zu [cx, cy, cz] würden Sie mit etwas von der Form am Ende

    ⎡v1 v4 v5⎤ ⎡x-cx⎤ 
[x-cx y-cy z-cz] * ⎢v4 v2 v6⎥ * ⎢y-cy⎥ = const. 
        ⎣v5 v6 v3⎦ ⎣z-cz⎦ 

oder in Vektorschreibweise (Schreiben A für die 3 × 3-Matrix in Frage)

(x-c) * A * (x-c) = x*A*x - 2*x*A*c + c*A*c = const. 

ich in Matlab wissen Sie irgendwo dort einige ' bräuchten einige der Vektoren transponieren, aber Sie bekommen die Idee. Vergleicht man die oben zu dem, was ich weiter oben schrieb, können Sie sehen, dass im Wesentlichen sollen die linearen Terme gleich sein, dh

-2*x*A*c = 2*x*v(7:9) 
    -A*c = v(7:9) 

    ⎡v1 v4 v5⎤ ⎡cx⎤ ⎡v7⎤ 
- ⎢v4 v2 v6⎥ * ⎢cy⎥ = ⎢v8⎥ 
    ⎣v5 v6 v3⎦ ⎣cz⎦ ⎣v9⎦ 

das heißt, Sie haben ein lineares Gleichungssystem hier, die Sie für c lösen können, mit der Code, den du zitiert hast. Es nimmt die obere linke 3 × 3 Matrix von der homogenen Beschreibung, und es nimmt die drei Elemente von v entsprechend dem linearen Ausdruck (den ich annehmen könnte geschrieben worden sein als A(4, 1:3) aber ich bin kein Matlab-Experte), dann verwendet es \ zu löse das lineare Gleichungssystem. Nicht sicher, ob die Operator-Priorität so ist, dass die auf die Matrix A oder auf die Lösung angewendet wird, aber da das Ergebnis in beiden Fällen gleich ist, spielt es keine Rolle.

+0

Thx für die nützliche Antwort. Ich denke, ich kann Teilen deiner Erklärung folgen. Ich verstand Formel 1.) und 2.). Formel 3.) ist ein Ellipsoid, das aus dem Zentrum verschoben ist. Aber Formel 1.) ist auch ein Ellipsoid, das aus dem Zentrum heraus verschoben ist. Was ist der Unterschied ? – Mark

+0

@Mark: 1.) und 2.) sind äquivalent, nur unterschiedliche Notation. 3.) verwendet verschiedene Variablen und eine andere Anordnung von ihnen, um die Koordinaten des Zentrums leichter ersichtlich zu machen. Indem Sie 2.) und 3.) einander gleich machen, können Sie das Formular von 1.) oder 2.) nehmen und das Zentrum wie in 3.) herausziehen. Wenn Sie also die Gleichung zur Berechnung gelöst haben, sind c, 2.) und 3.) ebenfalls gleich. – MvG

+0

Okay. Daher sind einige zusätzliche Schritte erforderlich, um 3.) von 1.) oder 2.) zu bilden. Ich habe es versucht, aber ohne Erfolg. Dann erweitere ich 4.) zu x * A * x - 2 * x * A * c + c * A * c.Aber jetzt verstehe ich den Schritt von 4.) nicht mehr bis 5.) – Mark