定期乘法对不同形状的本质矩阵

Regular Multiplication of different shaped Eigen Matrices

本文关键字:      更新时间:2023-10-16

我有一个nx3 eigen矩阵。我有一个NX1 Egein Marix。我正在尝试将NX3中每一行的系数乘法通过NX1中的相应比例,以便我可以缩放一堆3D向量。

我确定我忽略了一些明显的东西,但我无法正常工作。

#include <Eigen/Dense>
MatrixXf m(4, 3);
m << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12;
MatrixXf dots(4, 1)
dots << 2,2,2,2;

我想使结果矩阵像nx3一样:

2,4,6
8,10,12,
14,16,18,
20,22,24

您可以使用广播:

m = m.colwise().cwiseProduct(dots);

或观察到您要做的就是应用非均匀缩放:

m = dots.asDiagonal() * m;

两种表达式将生成类似的代码。

好吧,所以我有一些工作。我可能做错了什么,但这对我有用,所以我想我会分享。我一周前写了我的第一行C ,所以我认为我应该得到一些恩典。鼓励任何有更好解决方案的人发布。

// scalar/coefficient multiplication (not matrix) on Nx3 x N. For multiplying dot products by vectors
void N3xNcoefIP(MatrixXf &A, MatrixXf &B) {
    A.array() *= B.replicate(1, A.size()).array();
}
相关文章:
  • 没有找到相关文章