我有點雲,我需要最適合的線。我正在使用JAMA,但我不知道爲什麼,有些東西不起作用。可能是我不知道它是如何工作的。我有一個Nx3矩陣(這是JAMA svd支持的),我從Svd獲得正確的Matrix V。我需要的向量是對應於最大奇異值的右奇異向量(行或列)。這個矢量應該代表主要方向。Java猶太人與JAMA或其他
每個矢量應該有Y作爲最大正值,X可以是兩個正或負和z被認爲是負的。但有時候我得到的矢量有一個負的y值,或者它指向錯誤的方向。
我的點雲是相當普通的都postioned幾乎沿y軸(帶z小負)。所以主要方向應該很容易找到。但它仍然無法正常工作。
在這種情況下,我得到的行向量(我試過coloumn矢量太)權矩陣V.我已經從「點集」中減去質心。
public static Matrix bestDirection(Matrix pointSet){
Matrix bestFittingLine = new Matrix(3,1);
SingularValueDecomposition svd = pointSet.svd();
bestFittingLine.set(0, 0, svd.getV().get(0, 0));
bestFittingLine.set(1, 0, svd.getV().get(0, 1));
bestFittingLine.set(2, 0, svd.getV().get(0, 2));
return bestFittingLine;
}
我想也許我沒有考慮一些東西。 Idk也許我應該使用另一種技術或其他庫。
你爲什麼不做簡單的線性迴歸?最小二乘擬合應該很好地做到這一點。 – duffymo
@duffymo因爲我不知道該怎麼做,以及它如何在3D中工作,其中z與x和y無關。我會喜歡它的一些幫助。 – G4bri3l
我得到了一份可以解釋它的scribd文檔,但我現在無法發送給您。谷歌「線性迴歸多變量」;你會得到這樣的東西:http://www.stat.yale.edu/Courses/1997-98/101/linmult.htm。 SVD是偉大的,但它不會是我的第一選擇。 – duffymo