ПРИМЕЧАНИЕ. Я уже задал этот вопрос, но он был закрыт из-за «слишком широкого» без особого объяснения. Я не вижу, как этот вопрос может быть более конкретным (речь идет о конкретном классе конкретной библиотеки для конкретного использования ...), поэтому я предполагаю, что это было что-то вроде ошибки модератора и повторить ее. ..Как обернуть Eigen :: SparseMatrix поверх предпраздничных 3-стандартных массивов строк/колонок с компрессией
Я хотел бы перенести разреженное матричное/матричное умножение с использованием Eigen на разреженных матрицах. Эти матрицы уже определены в коде, над которым я работаю в стандартных 3-массивах сжатых строк/столбцов.
Затем я хотел бы использовать класс 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();
Возможно ли, и если да, то как?
Большое спасибо
Я уверен, что вы уже посмотрели документацию и увидели, что формат, используемый для разреженных матриц, несколько отличается, используя 4 массива вместо 3. Возможно, вы также отметили, что в небольшом учебнике не упоминаются методы преобразования из 3 массивов до 4. Я полагаю, что самым простым способом было бы вставить значения вставки в разреженной матрице, что позволило бы самому построить собственный внутренний формат. – didierc
Вы ищете 'Eigen :: MappedSparseMatrix': http://eigen.tuxfamily.org/dox/classEigen_1_1MappedSparseMatrix.html – ggael
Да, это выглядит как то, что я ищу. Есть ли способ «установить» защищенные члены этого класса или мне нужно вывести из него класс? – janou195