c++ - 重用 Eigen 表达式模板

标签 c++ math eigen

假设我有 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/

相关文章:

c++ - 为什么模板只能在头文件中实现?

c++ - 未找到符号 C++ 打印 vector 到控制台

php - Shunting Yard 需要在 PHP 中实现,解释和解析字符串执行数学比较并返回 bool 结果

c++ - Eigen - 检查矩阵是否为正(半)定

c++ - Eigen:评估 A*S*A_transpose 并将结果存储在对称矩阵中的最佳方法

c++ - Eigen:接受固定大小和类型的通用矩阵表达式的函数签名

c++ - 子类化并使用基类初始化器

c++ - 安装快板 C++

Python:旋转矩阵到角度

java - java算术计算结果的数据类型