重用特征表达模板

时间:2016-09-25 02:46:55

标签: 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的新值得到了正确的结果?

1 个答案:

答案 0 :(得分:1)

在Eigen 3.3中,答案是肯定的......除非你的表达涉及矩阵因子分解,如:

{{1}}

在Eigen 3.2中,您必须另外注意矩阵产品,因为这些产品会立即进行评估。