特征和懒惰评价
Eigen and lazy evaluation
我在程序中使用Eigen3来处理与矩阵相关的所有内容。我知道Eigen使用惰性评估来优化所有计算。我想知道这样的操作是否在有限的不必要计算的意义上得到了优化:
D = (A*B*C)(0,0);
其中A、B、C是矩阵,D是标量。在英语中,我只需要矩阵乘积的一个元素。
谢谢。
对于所有系数运算,答案都是肯定的。然而,矩阵产品是特殊的,因为出于效率的原因,它们默认在临时范围内进行评估。您可以使用lazyProduct
:强制执行矩阵乘积的延迟求值
double ABij = A.lazyProduct(B)(i,j);
对于像A*B*C
这样的"三重"产品,情况更为棘手,因为嵌套产品无论如何都会被评估(以避免在一般情况下进行多次重新评估),因此您必须自己限制它,例如:
A.lazyProduct(B*C.col(j))(i);
相关文章:
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 有没有一种方法可以通过"typedef"为重新定义的基本类型定义特征和强制转换运算符
- 特征命名访问向量段
- 将特征矩阵的向量设置为0
- 特征:模板函数中矩阵的平面图
- basic_string的前导/尾部不区分空格的特征
- 特征 3 类的模板专用化
- 特征 c++:复矩阵的面积双曲正切(atanh)
- C++ 中的特征向量计算
- 根据C++标准的定义实现"is_similar"类型特征
- C++类型特征,以查看是否可以<uint32_t>对类型"K"的任何变量调用"static_cast(k)"
- 有没有办法找到特征矩阵系数的中值?
- 如何将高维数据映射到特征类型?
- 将平面阵列重塑为复杂的特征类型
- 特征 LLT 模块给出不正确的结果?
- 特征模板化函数和维度
- 特征稀疏向量:求最大系数
- 特征和懒惰评价
- 特征张量类中沿各维约简的评价