참고 : 저는 이미이 질문을 던졌지 만 많은 설명없이 "너무 광범위하기 때문에 닫혔습니다. 나는이 질문이 어떻게 더 구체적 일 수 있는지를 볼 수 없다. (특정 사용법을위한 특정 라이브러리의 특정 클래스를 다룬다.) 그래서 나는 그것이 "사회자의 실수"와 같은 것으로 생각하고 다시 물어 본다. ..기존의 3 표준 압축 행/열 배열을 통해 Eigen :: SparseMatrix를 래핑하는 방법
저는 희소 행렬에 Eigen을 사용하여 희소 행렬/행렬 곱셈을 수행하고 싶습니다. 이 행렬은 표준 3 행 압축 행/열 strorage에서 작업중인 코드에 이미 정의되어 있습니다.
그런 다음 Eigen :: SparseMatrix 클래스를 이러한 배열의 래퍼로 사용하고 싶습니다. 메모리에서 행렬을 복제하지 않으려면 내부 적으로 Eigen이 이러한 3 배열 스토리지를 사용한다고 가정합니다. 다음과 같은 것을하고 싶습니다.
Eigen::SparseMatrix smin0(n,m);
Eigen::SparseMatrix smin1(m,l);
Eigen::SparseMatrix smout(n,l);
smin0.set_innerPtr(myInnerPtr0);
smin0.set_outerPtr(myOuterPtr0);
smin0.set_valuePtr(myValuePtr0);
smin1.set_innerPtr(myInnerPtr1);
smin1.set_outerPtr(myOuterPtr1);
smin1.set_valuePtr(myValuePtr1);
smout=smin0*smin1;
int *myOutInnerPtr=smout.innerIndexPtr();
int *myOutOuterPtr=smout.outerIndexPtr();
double *myOutValuePtr=smout.valuePtr();
가능하면 어떻게 할 수 있습니까?
많은 감사
이미 설명서를 살펴본 결과 스파 스 매트릭스에 사용 된 형식이 3 대신 4 개의 배열을 사용하여 약간 다른 것으로 나타났습니다. 또한 작은 자습서에 3 배열을 4로 설정하는 것이 가장 간단한 방법은 스파 스 매트릭스에 값을 일괄 적으로 삽입하는 것입니다. – didierc
당신은'Eigen :: MappedSparseMatrix'를 찾고 있습니다 : http://eigen.tuxfamily.org/dox/classEigen_1_1MappedSparseMatrix.html – ggael
네, 내가 찾고있는 것보다 더 좋아 보인다. 해당 클래스의 보호 된 멤버를 "설정"하는 방법이 제공 되었습니까? 아니면 클래스를 파생시켜야합니까? – janou195