[英]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.