[英]In Eigen c++, how to multiply each row of NxM matrix by a vector of Nx1 scalars?
例如,我有:
Matrix<double,5,2,RowMajor> points;
Matrix<double,5,1> scalars;
我想要的相当于:
for(int i=0;i<5;++i){
points.row(i)*=scalars(i);
}
有没有oneliner可以做到这一点?
我已经尝试过逐行和数组,但无法正确处理。
单线如下:
points.array().colwise() *= scalars.array();
因为数组操作始终是组件式的。
我认为.colwise().cwiseProduct(scalars)
也应该可以工作,但显然不行。
您想通过 cols 逐个元素地执行乘法运算,这种操作由Array
支持。
单线版:
std::for_each(points.colwise().begin(),points.colwise().end(),
[&](auto&& col){ col.array() *= scalars.array().col(0); });
双线版本:
points.array().col(0) *= scalars.array().col(0);
points.array().col(1) *= scalars.array().col(0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.