Броненосец разреженное распределение матрицы

В Matlab я выделяю место для разреженной матрицы следующим образом:

%Notice "Const_Block_Upper" is a dense matrix
%Number of nonzero element
nz = size(Const_Block_Upper,1)*size(Const_Block_Upper,2)*No_of_Voxels;
SizeR = No_of_Voxels*size(Const_Block_Upper,1)
SizeC = No_of_Voxels*size(Const_Block_Upper,2);

%Allocates space for sparse matrix of size (SizeR, SizeC) with atmost nz non-zeros
A = spalloc(SizeR, SizeC, nz);

Мне интересно, могу ли я сделать что-то подобное в C++ lib Armadillo. Я посмотрел документацию Armadillo; однако не смог найти что-то похожее.

Некоторая помощь будет оценена по достоинству.


person Garima Singh    schedule 03.02.2015    source источник


Ответы (1)


Интересно, какую часть документации вы просматривали, потому что официальная документация содержит много информации о типы разреженных матриц. Например о пакетной вставке:

Конструкторы пакетной вставки:

form 1: sp_mat(locations, values, sort_locations = true)
form 2: sp_mat(locations, values, n_rows, n_cols, sort_locations = true, check_for_zeros = true)
form 3: sp_mat(add_values, locations, values, n_rows, n_cols, sort_locations = true, check_for_zeros = true)
form 4: sp_mat(rowind, colptr, values, n_rows, n_cols)

РЕДАКТИРОВАТЬ: Ах, теперь я понимаю ваш вопрос; вы хотите заранее выделить место, необходимое для хранения элементов; Боюсь, нет возможности сделать это с базовым форматом хранения разреженных матриц...

person Marcus Müller    schedule 03.02.2015
comment
Я искал способы выделить место для разреженной матрицы с максимальным количеством ненулевых элементов = nz. - person Garima Singh; 03.02.2015