[英]Eigen library, multiply columns of matrix by square matrix
我想通过运算符N变换矩阵M的每一列。Eigen允许用预乘法来表示:
M.colwise() *= N;
但是乘法M_j * N
在数学上是不确定的。
有什么方法可以避免编写循环吗?
如果要将M
的每一列从左边乘以N
,只需执行常规的矩阵-矩阵乘法:
M = N * M;
这会将N*M
评估为一个临时变量,然后将其移至M
如果您经常这样做,并且想为此重新使用分配的内存,请在之前的某个位置声明一个临时矩阵M_temp
并编写
M_temp.noalias() = N * M;
M.swap(M_temp); // M_temp has the old memory of M; Swapping is O(1)
如果您担心过多的内存消耗,可以编写类似
for(long i=0; i<M.cols()-3; i+=4)
M.middleCols<4>(i) = N * M.middleCols<4>(i);
M.rightCols(M.cols()%4) = N * M.rightCols(M.cols()%4);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.