我目前正面临这个问题。
我有两个矩阵 MatrixXf
A:

0.5 0.5 0.5 0.5
0.694496 0.548501 0.680067 0.717111
0.362112 0.596561 0.292028 0.370271
0.56341 0.642395 0.467179 0.598476

和乙

0.713072
0.705231
0.772228
0.767898

我想像矩阵 x vector 一样将它们相乘以实现:

0.5*0.713072 0.5*0.713072 0.5*0.713072 0.5*0.713072
0.694496*0.705231 0.548501*0.705231 0.680067*0.705231 0.717111*0.705231
0.362112*0.772228 0.596561*0.772228 0.292028*0.772228 0.370271*0.772228
0.56341*0.767898 0.642395*0.767898 0.467179*0.767898 0.598476*0.767898

在 Eigen 中可以选择这样做吗?如何以简单的方式做到这一点?
http://mathinsight.org/matrix_vector_multiplication

最佳答案

这已经被问过很多次了,你想要一个缩放:

MatrixXf A;
VectorXf B;
MatrixXf res = B.asDiagonal() * A;

或使用广播:
res = A.array().colwise() * B.array();

关于c++ - 矩阵 vector 乘积,如 Eigen 中的乘法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48146928/

10-09 13:37