ПРИМЕЧАНИЕ. Я уже задавал этот вопрос, но он был закрыт из-за «слишком широкого» без особых объяснений. Я не понимаю, как этот вопрос может быть более конкретным (он касается определенного класса конкретной библиотеки для конкретного использования...), поэтому я предполагаю, что это было что-то вроде «ошибки модератора», и задаю его снова. ..
Я хотел бы выполнить умножение разреженной матрицы/матрицы, используя Eigen на разреженных матрицах. Эти матрицы уже определены в коде, над которым я работаю, в стандартном сжатом хранилище строк/столбцов с тремя массивами.
Затем я хотел бы использовать класс Eigen::SparseMatrix в качестве оболочки для этих массивов (при условии, что внутри Eigen используется такое хранилище с тремя массивами), чтобы избежать дублирования матриц в памяти. Я хотел бы сделать что-то вроде следующего:
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();
Возможно ли это и если да, то как?
Огромное спасибо
Eigen::MappedSparseMatrix
: eigen.tuxfamily.org/dox/classEigenEigen::MappedSparseMatrix
1MappedSparseMatrix.html - person ggael   schedule 06.11.2014