2012-05-31 4 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로 변환하고, 그리스트의 subList를 얻은 다음 다시 배열로 변환하는 것입니다. 그런데

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

, 이것은 그가 참조하는 라이브러리입니다 : 당신은 기존의 코드를 찾을 수없는 경우 http://math.nist.gov/javanumerics/jama/doc/

+0

좋아,하지만 여기서 시간 계산의 문제는 ... 그래서 thios는 왜 첫 번째 k 값만 사용하려고합니다 tom compute.no all – lukyja

+0

라이브러리는 모든 고유 값의 전체 배열을 반환합니다. 그것에 대해 할 수있는 일은 없습니다. 어레이를 반복하여 배열을 작게 만들면 하위 배열에서 계산을 수행 할 수 있습니다. 서브 어레이를 얻으려면 전체 어레이를 한 번만 통과해야하며, 이는 빠를 것입니다. 그리고 오타를 정리하십시오. – smcg

0

, 난 당신이 thesis 아니면이 paper을 참조해야합니다 같아요.