我正在尝试使用 Eigen 对矩阵和对数/exp 进行一些计算,但我发现我的表达式有点笨拙(也可能更慢?)。有没有更好的方法来编写这样的计算?
MatrixXd m = MatrixXd::Random(3,3);
m = m * (m.array().log()).matrix();
也就是说,不必先转换为数组,然后再转换回矩阵?
最佳答案
如果你混合使用数组和矩阵运算,你无法真正避免它们,除了一些具有直接作用于矩阵的 cwise
函数的函数(例如,cwiseSqrt()
, cwiseAbs()
).
但是,.array()
和 .matrix()
在优化编译时(在任何合理的编译器上)都不会对运行时产生影响。
如果您认为它更具可读性,您可以使用 unaryExpr()
.
关于c++ - 制作矩阵的更好方法 - 在 Eigen 中记录操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48845200/