eigen一维向量_使用Eigen C Library将每个矩阵列乘以每个向量元素

这就是我要做的:

Eigen::Matrix3Xf A(3, 2); // 3x2

A << 1, 2, 2, 2, 3, 5;

Eigen::Vector3f V = Eigen::Vector3f(1, 2, 3);

const Eigen::Matrix3Xf C = A.array().colwise() * V.array();

std::cout << C << std::endl;

输出示例:

1 2

4 4

9 15

说明

你很接近,诀窍是使用.array()进行广播乘法.

colwiseReturnType没有.array()方法,因此我们必须在A的数组视图上执行colwise shenanigans.

如果你想计算两个向量的元素乘积(最酷的酷猫称之为Hadamard Product),你可以做

Eigen::Vector3f a = ...;

Eigen::Vector3f b = ...;

Eigen::Vector3f elementwise_product = a.array() * b.array();

这是上述代码正在以列方式进行的操作.

编辑:

要解决行情况,你可以使用.rowwise(),你需要一个额外的transpose()来使事情适合

Eigen::Matrix A; // 3x2

A << 1, 2, 2, 2, 3, 5;

Eigen::Vector2f V = Eigen::Vector2f(2, 3);

// Expected result

Eigen::Matrix C = A.array().rowwise() * V.transpose().array();

std::cout << C << std::endl;

输出示例:

2 6

4 6

6 15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值