2013-06-05 4 views
1

병렬 콜트에서 행렬의 모든 행에 벡터를 추가하는 방법은 무엇입니까? 특히 DoubleMatrix2D의 각 행에 DoubleMatrix1D를 추가하고 싶습니다. 이 작업은 간단해야하지만 Javadoc에서는 명확하지 않습니다. (당연히 수작업으로 할 수 있지만, 이상한 기능은 내장되어 있지 않을 것입니다.)병렬 콜트에서 행렬 및 벡터 추가

// new matrix where each row is the vector you want to add, i.e., aVector 
DoubleMatrix2D otherMatrix = DoubleFactory2D.sparse.make(aVector.toArray(), n); 
DoubleDoubleFunction plus = new DoubleDoubleFunction() { 
    public double apply(double a, double b) { return a+b; } 
}; 
aMatrix.assign(otherMatrix, plus);  

:

+0

내가 당신이 조금 더 많이 지정해야한다고 생각 : 예를 들어 현재 어떤 종류의 객체를 사용하고 있는지. – fpe

+0

@fpe : 사용중인 특정 유형으로 업데이트되었습니다. –

답변

2

그래서하는 N × M 개의 매트릭스 (예를 들어, aMatrix)의 i 번째 행에 m 차원 벡터 (예를 들어, aVector)를 추가하려면 다음을 수행해야합니다 API는 assign 방법에 대해이 말한다 : 나는 DoubleFactory2D#make() 방법 나 자신을 테스트하지 않았습니다

assign(DoubleMatrix2D y, DoubleDoubleFunction function) 
    Assigns the result of a function to each cell; x[row,col] = function(x[row,col],y[row,col]). 

. aVector이 행 대신 열로 통합 된 행렬을 otherMatrix에 작성한 경우 assign() 단계를 사용하기 전에 DoubleAlgebra#transpose()을 사용하여 전치를 가져옵니다.

편집 만 특정 (예를 들어, i 번째) 행 변경하려는 경우, 현재 위치에서 행을 추가하는 더 간단한 방법이있다

:

aMatrix.viewRow(i).assign(aVector);