繁体   English   中英

如何以有效的方法访问特征矩阵的列的最后一个元素?

[英]How to access the last element of a column of an Eigen matrix in an efficient method?

我使用的常用方法是:

Eigen::MatrixXd mat(3,3);
mat<<1,2,3,
     4,5,6,
     7,8,9;
Eigen::Index len = mat.rows();
mat(len-1,0)=10;
std::cout<<mat(len-1,0);

我想知道是否有更有效的方法来做到这一点。

好吧, mat.col(0).tail<1>()mat.bottomLeftCorner<1,1>()工作。 但是,它们分别为您提供 1 大小的向量表达式或 1x1 大小的矩阵表达式。 所以完整的表达式是

mat.col(0).tail<1>()[0] = 10;
mat.bottomLeftCorner<1,1>()(0,0) = 10;
std::cout << mat.col(0).tail<1>().value();
std::cout << mat.bottomLeftCorner<1,1>().value();

就性能而言,这些和您的方法都应该产生等效的代码。 出于性能原因,Eigen 不支持负索引来表示反向索引,例如 Numpy 所做的那样,因为这会在每个索引操作中引入条件表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM