如何在 Eigen 中声明稀疏矩阵向量

How do I declare a vector of sparse matrix in Eigen

要在 Eigen 中声明稠密矩阵向量,我使用以下格式

std::vector<Eigen::MatrixXd> AMAT(idx, Eigen::MatrixXd::Zero(1000,1000));

其中 idx 是矢量大小。是否有等效的声明来定义稀疏矩阵?我目前将稀疏矩阵声明为

Eigen::SparseMatrix<double>  BMAT(1000,1000);

对我来说,定义此类矩阵的向量而不是为每个索引声明单独的稀疏矩阵会更有效。感谢任何帮助。

鉴于您希望向量中的矩阵具有不同的大小,您可能不应该为 std::vector 使用该初始化构造函数。

而是逐个元素地构建向量:

#include <Eigen/Sparse>
#include <vector>
#include <algorithm>

int main() {
    auto sizes = { 100, 200, 300 };

    std::vector<Eigen::SparseMatrix<double>> BMATvec;
    BMATvec.reserve(sizes.size());

    std::transform(cbegin(sizes), cend(sizes), back_inserter(BMATvec),
        [](auto size) { return Eigen::SparseMatrix<double>(size,size);});
}