2015-07-07 4 views
0

Я решаю проблему с жидкостью, в которой образуется очень большая разреженная матрица. В контексте Armadillo Sparse Matrix у меня есть фиксированная матрица umat locations для хранения индексов и переменная vec values для каждого местоположения. Я создал Редкую Матрицу с Армадилло как sp_mat A(locations, values) до начала итерации. В каждой итерации мне нужно решить для разных values, locations остается таким же, и я хочу обновить значения в A.Как обновить значения разреженной матрицы в Armadillo

Есть ли способ, которым я могу обновить values в A, заменив старые batch insertion или любые аналогичные методы, предусмотренные в Armadillo? Если нет, то каков наилучший метод в контексте скорости, чтобы сделать это?

Доступ к элементам, A(i,j), возможен, но из-за большого размера он замедляет процесс. Пакетная вставка кажется более быстрой и управляемой.

Спасибо МНОГО!

ответ

0

Используя C++ 11/C++ 14, вы можете использовать batch insertion constructors в сочетании с std::move(). Например:

sp_mat X; 

X = std::move(sp_mat(locations, values)); 

Чтобы включить режим C++ 11 в GCC или звоном, компилировать с опцией -std=c++11.

Смежные вопросы