采用 args 本征稀疏矩阵的 C++ 函数
C++ function that takes args Eigen sparse matrices
Eigen 库 provides/suggests 在函数中传递密集矩阵的多种方法,因此它适用于共享相同基数的不同类型,并避免复制(即 Ref<>、模板表达式)。
但是,我在本征文档或网上都没有找到任何与稀疏矩阵等价的东西。
我基本上有以下问题:
我如何编写一个具有通用接口的函数,以便可以使用可能不同的模板参数的 SparseMatrix 或 MappedSparseMatrix 对象调用它,而无需复制?
我已经尝试使用派生参数的 SparseMatrixBase 模板表达式,但我无法使其工作。
一个简单的示例代码将不胜感激。
简单地写一个模板函数取任何SparseMatrixBase<Derived>
,例如:
template<typename Derived>
void foo(const SparseMatrixBase<Derived> &a_mat) {
const Derived &mat(a_mat.derived());
SparseMatrix<typename Derived::Scalar> tr_mat = mat.transpose();
}
Eigen 库 provides/suggests 在函数中传递密集矩阵的多种方法,因此它适用于共享相同基数的不同类型,并避免复制(即 Ref<>、模板表达式)。
但是,我在本征文档或网上都没有找到任何与稀疏矩阵等价的东西。
我基本上有以下问题: 我如何编写一个具有通用接口的函数,以便可以使用可能不同的模板参数的 SparseMatrix 或 MappedSparseMatrix 对象调用它,而无需复制?
我已经尝试使用派生参数的 SparseMatrixBase 模板表达式,但我无法使其工作。
一个简单的示例代码将不胜感激。
简单地写一个模板函数取任何SparseMatrixBase<Derived>
,例如:
template<typename Derived>
void foo(const SparseMatrixBase<Derived> &a_mat) {
const Derived &mat(a_mat.derived());
SparseMatrix<typename Derived::Scalar> tr_mat = mat.transpose();
}