c++ - 矩阵的 Armadillo 稀疏分配

标签 c++ matlab armadillo

在 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 的文档;但是,找不到类似的东西。

一些帮助将不胜感激。

最佳答案

我想知道您查看了文档的哪一部分,因为 the official documentation包含很多关于稀疏矩阵类型的内容。例如关于批量插入:

Batch insertion constructors:

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)

编辑:啊,我现在明白你的问题了;您想预分配元素存储所需的空间;恐怕无法使用底层的稀疏矩阵存储格式...

关于c++ - 矩阵的 Armadillo 稀疏分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28297533/

相关文章:

c++ - 多线程程序只执行最后创建的线程?

c++ - 如何找到3d点和2d点的对应关系

matlab - 使用 * 时出错 内部矩阵尺寸必须一致

c++ - 什么是 Armadillo+Atlas、Armadillo+OpenBLAS、Armadillo+uBLAS、Armadillo+MKL?

c++ - 重载 New 时,New 与 Malloc

c++ - 如何制作此构造函数的深拷贝?

c++ - Armadillo 移植 imagesc 从矩阵保存图像位图

c++ - 如何将整行写入 Armadillo 矩阵?

matlab - 当 Matlab 中出现第一个负值时,将所有矢量值设置为零

c - 如何确定环绕声音频信号的 channel 映射( channel 到轨道分配)