繁体   English   中英

特征库,将矩阵的列乘以方矩阵

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

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