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?
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
definiertV (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.
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.
Tags und Links java math 3d data-fitting