2015-02-05 1 views
0

Eigen에서 스파 스 매트릭스의 행과 열을 모두 반복 할 수 있습니까?Eigen에서 스파 스 매트릭스의 행과 열을 모두 반복 할 수 있습니까?

R = SUM (H, 1)

R2 = SUM (H 2)

:

I는 I 그것에 이러한 MATLAB 명령을 수행 할 로우 주요 희소 행렬을했습니다

여기서 H는 희소 행렬 (0,1)이고 r과 r2는 정수 벡터입니다. 나는 행과 열의 반복을 모두 할 수 있어야한다고 생각한다. 모든 제안을 주시면 감사하겠습니다.

미리 감사드립니다.

+0

당신은'H (P는 == 1, 2)'무엇을 의미합니까? Du, p == 1 또는 p == 2를 의미합니까? – kkuilla

+0

@kkuilla, 실례합니다. 실수였습니다. 나는 그것을 편집했다. sum (H, 2)를 쓸 때 인덱스에 각 행의 합을 포함하는 벡터를 반환하고, sum | (H, 1)에 대해 각 열의 합을 반환합니다. – abdolahS

+0

죄송하지만 이해가 안됩니다 ... 질문은 무엇입니까? 당신은 전체 행렬의 합계를 취하고 그 대가로 단일 값을 얻고 싶다고 말하고 있습니까? – kkuilla

답변

1

당신은 매우 유용 eigen/matlab 변환 참조 살펴해야 할 수 있습니다 : http://eigen.tuxfamily.org/dox/AsciiQuickReference.txt

귀하의 경우는로 변환 : 당신으로

r = H.colwise().sum() // sum(H, 1) 
r2 = H.rowwise().sum() // sum(H, 2) 

편집

을 스파 스 매트릭스는 이러한 기능을 지원하지 않는다고 지적했습니다. 아마 다시 구현해야합니다. 내가 sum(H, 1) 당신의 예에서

https://forum.kde.org/viewtopic.php?f=74&t=122971에서 insparation을 얻을하는 것이 좋습니다, 그것은 같이 쓸 수있다 :

r = H * VectorXd::Ones(H.cols()) 
+0

sparseMatrix 클래스에는 colwise() 또는 rowwise() 멤버가 없습니다. – abdolahS

+0

"VectorXd :: Ones"라고 쓰면 VectorXd가 Ones가 아닙니다. – abdolahS

+0

http://eigen.tuxfamily.org/dox/classEigen_1_1DenseBase.html#ad148f93a6a00e32ef00903c5393337ef에 이어 Eigne :: VectorXd의 일부 여야합니다. 그들의 예를 재현 해보십시오. – homeless

관련 문제