【发布时间】:2021-12-29 13:49:38
【问题描述】:
我想评估犰狳稀疏矩阵有多大。这个问题与这个answer 有关密集矩阵有关。
考虑以下示例:
void some_function(unsigned int matrix_size) {
arma::sp_mat x(matrix_size, matrix_size);
// Steps entering some non-zero values
std::cout << sizeof(x) << std::endl;
}
不幸的是,sizeof 与密集矩阵的情况一样,不返回矩阵本身的大小,而是返回指针或其他一些小对象的大小。稀疏矩阵的大小不应简单地是非零元素的数量乘以数据类型的大小。 Armadillo 以压缩格式存储稀疏矩阵。在单元格值之上,还应该有一个矩阵或向量来存储单元格索引。而且我猜这个矩阵也有一个存储对象信息的标题。
【问题讨论】:
-
除非犰狳提供一些函数来做你想做的事,否则没有标准的 C++ 函数来获取稀疏矩阵使用的存储总量。
标签: c++ c++11 sizeof armadillo rcpparmadillo