我想创建一个模板,它将一个特征矩阵作为输入,并在其主体中包含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
或其他技巧可以解决这个问题?
答案 0 :(得分:1)
我会将矩阵类型作为模板参数:
template <typename MatrixType>
double function_with_llt(const MatrixType& m) {
LLT<MatrixType> llt_of_input(m);
return 0;
}