Eine 3D-Linie an 3D-Punktdaten in Java anpassen?

8

Ich habe ziemlich viel Zeit damit verbracht, nach einer einfachen Methode zu suchen - im Idealfall gibt es dort irgendwo eine magische Bibliothek, die meine 3D-Datenpunkte aufnimmt und 2 Punkte auf der besten Fit-Linie zurückgibt entweder orthogonale Regression oder kleinste Quadrate verwenden und auch den Fehler der angepassten Linie zurückgeben. Gibt es so etwas und wenn ja, wo?

    
zaczap 28.02.2010, 19:09
quelle

3 Antworten

10

Das ist einfach genug, aber um es selbst zu schreiben, benötigen Sie einen Eigenwertlöser oder eine Singulärwertzerlegung. Erstellen Sie die nx3-Matrix A Ihrer (x-xbar, y-ybar, z-zbar) -Daten als Spalten. Speichern Sie diese Spalte für später, ich werde es V0 = [xbar, ybar, zbar] nennen.

Berechnen Sie nun die Eigenwerte und Eigenvektoren von A '* A, d. h. die 3x3-Matrix, die aus der A-Transponierten multipliziert mit A gebildet wird.

Wenn diese Daten auf einer Linie in R ^ 3 liegen, dann wird einer dieser Eigenwerte wesentlich größer sein als die anderen beiden Eigenwerte. Wenn dies nicht zutrifft, wird die orthogonale Regressionslinie nicht gut geschätzt.

Nimm den Eigenvektor, der dem größten Eigenwert von A '* A zugeordnet ist. Dann, wenn V der entsprechende Eigenvektor ist, wird die orthogonale Regressionslinie als

definiert

V (t) = V0 + t * V

Jeder Punkt auf dieser Linie kann durch einen Wert des Parameters t angegeben werden.

Alternativ berechnen Sie die Singulärwertzerlegung von A und nehmen Sie den rechten Singularvektor, der dem größten Singularwert von A entspricht.

Wenn Sie in beiden Fällen die Fehler für die Datenpunkte berechnen möchten, wäre dies einfach der orthogonale Abstand zu der betreffenden Linie.

    
user85109 28.02.2010, 23:23
quelle
1

Google für "java lineare kleinste Quadrate Regressionsbibliothek" und Sie sollten ein paar Optionen finden. Einer ist Drej . Ich habe das selbst nicht benutzt.

BEARBEITEN - Ich bin nicht sicher, dass dies die Frage beantwortet - ich weiß nicht, ob 3D-Daten unterstützt werden.

    
Steve314 28.02.2010 19:32
quelle
1

Es ist einfach genug, es zu tun, wenn Sie den Trick kennen: Ссылка

Mehr Dimensionen bedeutet mehr Koeffizienten, aber sie sind einfach genug, um hinzuzufügen. Die Ideen sind alle gleich.

    
duffymo 28.02.2010 19:44
quelle

Tags und Links