Преобразование матриц в броненосце из разреженных в плотные

0

Я использую Armadillo C++ линейной алгебры библиотеки, и я пытаюсь выяснить, как преобразовать sp_mat разреженную матрицу объекта к стандартной mat плотной матрицей.

Глядя на внутренний код doc, sp_mat и mat не имеют общего родительского класса, что заставляет меня полагать, что нет способа бросить sp_mat в качестве mat. Кстати, conv_to<mat>::from(sp_mat x) не работает.

Возможно, есть сложный способ сделать это, используя один из продвинутых конструкторов mat? Например, каким-то образом создайте матрицу нулей и передайте местоположения и значения ненулевых элементов в sp_mat.

Кто-нибудь знает об эффективном методе для этого? Заранее спасибо.

Теги:
linear-algebra
sparse-matrix
armadillo

1 ответ

4
Лучший ответ

Отливка отлично работает:

sp_mat X(2,2);

mat Y(X);

Y.print("Y:");
  • 0
    Ух ты. Я не могу поверить, что я пропустил это. Большое спасибо! Возможно, я что-то упустил, но я не видел sp_mat в качестве входных данных для конструктора mat в api doc. arma.sourceforge.net/docs.html#Mat

Ещё вопросы

Сообщество Overcoder
Наверх
Меню