具有块对角线结构的本征矩阵

问题描述 投票:0回答:1

这是有关c ++ Eigen库的查询。

[在计算中,我经常遇到块对角线形式的矩阵。下面是一个简单的结构示例。

Matrix6f M = Matrix6f::Zero(); //< M has a special structure
M.block<3, 3,>(0, 0) = Matrix3f::Random();
M.block<3, 3,>(3, 3) = Matrix3f::Random();

Matrix6f out = M * Matrix6f::Random(); //< Want to optimize this operation

现在,假设我有一个密集的6x6矩阵I,需要评估乘积M*I,有什么方法可以避免必须对M中所有零执行冗余的乘法/加法运算? 。没有明确写出乘法就是。

Eigen具有这种简洁的功能,如果我执行auto u = v + w,我将得到一个没有实际评估的运算符。这似乎也适用于auto z = Matrix6f::Zero(),并且如果我曾经做过Matrix6f out = z + Matrix6f::Random(),我可以想象在特殊的Zero矩阵上写一个运算符,这样我就可以有效地返回随机矩阵的元素而不必尝试加零对此。

上面列出的特定示例是否有可能这样?

c++ eigen eigen3
1个回答
0
投票

[如果对零矩阵使用新类,则可以重载*运算符

© www.soinside.com 2019 - 2024. All rights reserved.