假设我有 4 个常量矩阵和 1 个可变矩阵:
Eigen::MatrixXf M,N,O,P; // Fixed
Eigen::MatrixXf Q; // Value changes
我有一个我想评估的表达式:
auto myExpression = M*N*O*P*Q;
如果我要执行以下操作:
for (int i = 0; i<5; ++i) {
Q = MatrixXf::Random(SomeSize,SomeSize);
MatrixXf result = myExpression.eval();
}
这会按预期工作吗?意思是我从 Q 的新值得到了正确的结果?
最佳答案
在 Eigen 3.3 中,答案是肯定的...除非您的表达式涉及矩阵分解,例如:
auto expr = M.lu().solve(O+P)+N*Q;
在 Eigen 3.2 中,您还必须小心矩阵乘积,因为它们会立即计算。
关于c++ - 重用 Eigen 表达式模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39682901/