如何传递特征矩阵行引用以将其视为向量?

2024-03-16

我有一个对向量引用进行操作的函数,例如

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(使用前将#替换为@)

如何传递特征矩阵行引用以将其视为向量? 的相关文章

随机推荐