我有一个对向量引用进行操作的函数,例如
void auto_bias(const Eigen::VectorXf& v, Eigen:Ref<Eigen::VectorXf>> out)
{
out = ...
}
在某些时候,我需要让这个函数在矩阵行上运行。现在,因为默认的内存布局是列主的,所以我不能只将行指向的数据映射到向量中。那么,我该如何将行传递到上面的函数中以便我可以对其进行操作呢?
不太漂亮的解决方案是有一个临时向量,例如
VectorXf tmpVec = matrix.row(5);
auto_bias(otherVector, tmpVec);
matrix.row(5) = tmpVec;
但有没有办法直接做到这一点?
你可以允许Ref<>
具有非默认的内部步幅(也称为增量),如下所示:
Ref<VectorXf, 0, InnerStride<>>
请参阅示例函数foo3
参考文献的文档 http://eigen.tuxfamily.org/dox-devel/classEigen_1_1Ref.html.
缺点是即使您通过了真正的考试,也可能会损失性能VectorXf
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)