微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何申报征稀疏矩阵向量

如何解决如何申报征稀疏矩阵向量

要在 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);});
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。