我目前正在尝试调整 Eigen API 以支持以下功能:
matrix.similarity(similarityTransformationMatrix);
它只是执行以下操作:
similarityTransformationMatrix * matrix * similarityTransformationMatrix.transpose();
我之前的实现只允许为两者取方阵:
inline MatrixBase< Derived > similarity( const MatrixBase< Derived >& m) const {
MatrixBase< Derived > t = m;
t.transposeInPlace();
return m*(*this)*t;
}
相反,我需要能够在(正方形,但检查 cols = rows not required)矩阵和不同维度的similarityTransformation 上调用它。我的问题是返回矩阵不是其中任何一个的类型,但它可以派生:
Matrix< double, similarityTransformation.rows(), similarityTransformation.rows()>
你能给我指点如何实现这个吗?我没有尝试将它实现为 Eigen::Matrix 但如果可能的话我宁愿坚持使用 MatrixBase,但 MatrixBase 不想接受表单返回类型的多个参数
MatrixBase< OtherDerived::Scalar, OtherDerived::RowsAtCompileTime, OtherDerived::RowsAtCompileTime>