Преобразование матриц в Armadillo из разреженных в плотные (spmat в mat)

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

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

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

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


person GPSmaster    schedule 11.11.2014    source источник


Ответы (1)


Кастинг работает отлично:

sp_mat X(2,2);

mat Y(X);

Y.print("Y:");
person mtall    schedule 11.11.2014
comment
Ух ты. Не могу поверить, что я пропустил это. Большое спасибо! Может быть, я что-то упускаю, но я не видел sp_mat в качестве входных данных для конструктора мата в документе API. arma.sourceforge.net/docs.html#Mat - person GPSmaster; 12.11.2014