如何将两个 Eigen::Vector3f 除以相应的元素
How can I divide two Eigen::Vector3f by the corresponding elements
我需要将两个向量除以对应的元素。我怎样才能做到这一点?我找不到任何好的资源。像
Eigen::Vector3f v1 = { 10.0f, 10.0f, 10.0f };
Eigen::Vector3f v2 = { 5.0f, 2.0f, 2.0f };
Eigen::Vector3f v3 = v1 / v2;
预期结果:
{ 2.0f, 5.0f, 5.0f }
对于除法,它说“没有运算符 /
匹配操作数”。
虽然内置矩阵(表达式)类型通过重载运算符(例如矩阵向量乘法)支持常见的线性代数运算,但 Eigen 为组件运算提供了不同的类型;它们被称为“数组”并包含 Eigen::Array<...>
实例化以及数组表达式。您始终可以通过 .array()
和 .matrix()
成员函数将矩阵包装到数组表达式中,反之亦然 - 它们不复制任何内容,而是重新打包底层数据,以便可以进行与数组相关的操作用于矩阵或数组的矩阵相关操作。在你的情况下,这将是
const Eigen::Vector3f v1 = { 10.0f, 10.0f, 10.0f };
const Eigen::Vector3f v2 = { 5.0f, 2.0f, 2.0f };
const Eigen::Vector3f v3 = v1.array() / v2.array();
如果完全不需要矩阵接口,也可以直接使用Eigen::Array<...>
:
const Eigen::Array3f a1 = { 10.0f, 10.0f, 10.0f };
const Eigen::Array3f a2 = { 5.0f, 2.0f, 2.0f };
const Eigen::Array3f a3 = a1 / a2;
我需要将两个向量除以对应的元素。我怎样才能做到这一点?我找不到任何好的资源。像
Eigen::Vector3f v1 = { 10.0f, 10.0f, 10.0f };
Eigen::Vector3f v2 = { 5.0f, 2.0f, 2.0f };
Eigen::Vector3f v3 = v1 / v2;
预期结果:
{ 2.0f, 5.0f, 5.0f }
对于除法,它说“没有运算符 /
匹配操作数”。
虽然内置矩阵(表达式)类型通过重载运算符(例如矩阵向量乘法)支持常见的线性代数运算,但 Eigen 为组件运算提供了不同的类型;它们被称为“数组”并包含 Eigen::Array<...>
实例化以及数组表达式。您始终可以通过 .array()
和 .matrix()
成员函数将矩阵包装到数组表达式中,反之亦然 - 它们不复制任何内容,而是重新打包底层数据,以便可以进行与数组相关的操作用于矩阵或数组的矩阵相关操作。在你的情况下,这将是
const Eigen::Vector3f v1 = { 10.0f, 10.0f, 10.0f };
const Eigen::Vector3f v2 = { 5.0f, 2.0f, 2.0f };
const Eigen::Vector3f v3 = v1.array() / v2.array();
如果完全不需要矩阵接口,也可以直接使用Eigen::Array<...>
:
const Eigen::Array3f a1 = { 10.0f, 10.0f, 10.0f };
const Eigen::Array3f a2 = { 5.0f, 2.0f, 2.0f };
const Eigen::Array3f a3 = a1 / a2;