问题描述
要在 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);});
}