C ++ / Eigen:获取为MatrixBase编写的模板的矩阵参数类型

时间:2018-04-10 20:49:12

标签: c++ templates types eigen

我想创建一个模板,它将一个特征矩阵作为输入,并在其主体中包含Cholesky分解(Eigen中的LLT;参见doc)。

template <typename Derived>
double function_with_llt(const MatrixBase<Derived>& m) {
    LLT<m_type> llt_of_input(m); //how do I get m's type?
return 0;
}

问题是我需要矩阵m的类型来声明LLT。用m_type替换MatrixBase<Derived>不起作用。我可以使用Eigen的动态矩阵类之一(例如MatrixXd)用于LLT,但我更喜欢在以后的计算中使用具有固定维度的分解矩阵。是否有一些typedef或其他技巧可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

我会将矩阵类型作为模板参数:

template <typename MatrixType>
double function_with_llt(const MatrixType& m) {
    LLT<MatrixType> llt_of_input(m);
    return 0;
}