临时矩阵乘积的特征算子(指数,指数)

时间:2015-12-06 16:10:56

标签: eigen

让我们说我只对矩阵产品的单个(i,j)元素感兴趣,所以我做(A * B)(i, j)。 Eigen会计算AB的完整产品,然后访问(i,j)元素,还是会很聪明,只计算必要的内容?如果没有,我该怎么办呢?

由于内存原因,我目前正在进行基于SVD的有损矩阵压缩,因此我希望存储SVD的U,S和V矩阵并动态计算原始矩阵的元素:{{1}我的问题。

1 个答案:

答案 0 :(得分:1)

好问题。计算矩阵乘积系数是低效的,并且在当前版本的Eigen中,因此禁止在矩阵乘积上调用算子(i,j)(在编译时)。因此,如果您访问大部分aij,最好在临时评估它。如果以非结构化方式访问其中的极少数,则可以将其包装在实现:

的函数中
return U.row(i) * S.asDiagonal() * V.row(j).transpose();

在未来的Eigen版本中,只有3.3或3.4,Eigen会自动将信息传播到表达式树的叶子中。