2012-05-31 144 views
0

我剛剛將我的代碼從MATLAB移植到Java,我需要對矩陣進行特徵分解,具體而言,我只需要第一個k值而不是完全分解。參與特徵值Java(JAMA)

但是,在JAMA中,特徵分解類計算完全特徵分解。我試圖修改它,但它會引發一些錯誤。還有另外一個類似的庫嗎?

在MATLAB中,有問題的功能是eigs(k,A)

+0

我找到了這個,但從未使用它! http://code.google.com/p/matrix-toolkits-java/ –

+0

你需要一個帶輪班的迭代方法。 – duffymo

回答

0

所以它只是返回所有特徵值的數組。你只想返回一個只有數組的前k個值的數組。在Java中有很多方法可以做到這一點。一種是將數組轉換爲ArrayList,獲取該列表的子列表,然後轉換回數組。

double[] mySubArray = new double[k]; 
for (int i=0; i < k; i++) { 
     subArray[i] = myFullArray[i]; 
    } 

順便說一句,這是他所指的圖書館:http://math.nist.gov/javanumerics/jama/doc/

+0

好的,但這裏si計算時間的問題,...所以thios是爲什麼,我只想使用第一個k值tom compute.no全部 – lukyja

+0

庫正在返回所有特徵值的完整數組。對此你無能爲力。你將不得不遍歷整個數組以獲得更小的數組,然後你可以在子數組上進行計算。你只需要通過整個陣列來獲得子陣列,這將是快速的。並請清理你的錯別字。 – smcg

0

在你找不到任何現有代碼的情況下,我想你應該參考這個thesis或也許這paper