Um auf Rodys Antwort zu erweitern, hat die Kovarianzmatrix für eine durchgezogene Ellipse Eigenwerte, die durch lambda_i = r_i^2/4
gegeben sind. Dies führt zur OP-Gleichung r_i = 2*sqrt(lambda_i)
.
Bei einer (nicht fest) einer Ellipse, wie in dem Fall des OP, sind die Eigenwerte denen des festen Fall double: lambda_i = r_i^2/2
, was zu r_i = sqrt(2*lambda_i)
(die Rody der gleich 2*sqrt(lambda_i/2)
).
Ich konnte nicht direkt eine Referenz dafür finden, aber die Mathematik der Kovarianzmatrix ist identisch mit der der Trägheitsmomente. On Wikipedia können Sie den Fall des "kreisförmigen Reifens" und "festen Scheibe" sehen, die sich durch den gleichen Faktor von 2 unterscheiden.
Hier ist eine Anpassung von Rodys Test, sowohl die festen als auch die nicht-festen Fälle:
% Radius to test with
r = rand(1,2);
% Random rotation matrix
R = @(a)[+cos(a) +sin(a);
-sin(a) +cos(a)];
% Generate pionts on the ellipse
N = 1000;
t = linspace(0, 2*pi, N).';
xy = r.*[cos(t),sin(t)] * R(rand);
% Compute radii, compare to known radii
L = eig(cov(xy));
r_ = sqrt(2*L)';
err = max(abs(1 - sort(r_) ./ sort(r)))
% Generate points in the ellipse (SOLID CASE)
N = 10000;
t = 2*pi * rand(N,1);
xy = r .* sqrt(rand(N,1)) .* [cos(t),sin(t)] * R(rand);
% Compute radii, compare to known radii
L = eig(cov(xy));
r_ = 2*sqrt(L)';
err_solid = max(abs(1 - sort(r_) ./ sort(r)))
Wenn Sie diesen Code ausführen, werden Sie Fehler von 1e-3 sehen und ~ 6e-3 (für den festen Fall, dass ich viel mehr Punkte zu erzeugen, da das Gebiet mehr Punkte benötigt dicht genug abgetastet werden; je mehr Punkte, desto kleiner der Fehler.
Sollte die Matrix nicht einfach die Kovarianz aller 'xi'-s' yi'-s sein? – Shai
Ich bin mir nicht sicher! Ich erzeuge Kantenpunkte für einen Kreis mit dem Radius 100. Dann habe ich ein 'p = [xi, yi]' definiert, wobei P eine Kantenpunkte-Matrix 'n x 2' ist. Ich habe den Matlab-Befehl 'cov (P)' verwendet. Ich habe den Radius des Kreises aus der Kovarianzmatrix neu berechnet. Aber das gibt andere Werte als der ursprüngliche Radius. (es gibt 141.140) !! – Omar14
... sollte die Zahl geteilt durch 100 eine Glocke läuten :) –