我需要一个用于块矩阵代数的库,其中块矩阵是一个稀疏矩阵,仅存储对密集矩阵(块)的引用(指针或包装器/接口)。块的大小(行和列)是可变的。我想在这些块矩阵上定义一个代数,最好使用惰性求值。本质上,我需要这样的东西:
Eigen::SparseMatrix<Eigen::MatrixXd> bm1;
或者
Eigen::SparseMatrix<std::shared_ptr<Eigen::MatrixXd>> bm2;
我目前的方法是使用:
Eigen::SparseMatrix<Eigen::MatrixXd*> bm3;
但我想有一个类来处理块的生命周期。Eigen::MatrixXd*
另外,我对后台的隐式转换不太满意long
——我想这就是发生的事情。
根据Eigen 自定义描述,不清楚这是否可行:Eigen::SparseMatrixBase 不喜欢任何非标量类型。
问题:我是否应该将 Eigen 视为解决问题的一种方法?如果是,我该如何解决非标量矩阵元素类型的问题?
非常感谢任何评论!