Eigen:返回类型 1-a.array()
Eigen: return type of 1-a.array()
假设"a"的类型是Vector3d,我想知道1-a.array((的类型是什么。我有这个疑问,因为a.cwiseProduct(b)
有效,但(1-a.array()).cwiseProduct(b)
导致编译错误。像(1-a.array()).cwiseProduct(b)
一样编写代码的正确方法是什么?
int main()
{
VectorXd a(3),b(3);
a << 1,2,3;
b << 2,3,4;
// cout << (1-a.array()).cwiseProduct(b) << endl; //failed
a = 1-a.array();
cout << a.cwiseProduct(b) << endl; //works
return 0;
}
表达式
可以在不使用 .array()
的情况下重写,方法是将 1
替换为 1 的向量:
(Vector3d::Ones() - a).cwiseProduct(b)
这个版本可以说是更干净一些,因为操作比.array()
的版本更容易识别,因为括号包含两个向量之间的简单差异。
另一个等效的变体包括使用.asDiagonal()
而不是.cwiseProduct()
(Vector3d::Ones() - a).asDiagonal() * b
cwiseProduct
仅适用于矩阵表达式,不适用于数组(元素明智(表达式(其中"cwise"是多余的(。简单的选项是将(1-a.array())
表达式强制转换为矩阵表达式(1-a.array()).matrix().cwiseProduct(b)
(在编译时,因此免费(;或者更好的是,如果你想做元素明智的事情,只需使用(1-a.array()) * b.array()
的所有数组对象(同样,编译时转换是免费的(。
相关文章:
- C++11 中不同类型的对象的 std::array 的替代方案
- constexpr begin of a std::array
- C++如果必须在编译时确定大小,std::array 有什么意义?
- OpenGL VBO Indexing ( How to compute Index Array)
- 标准::unordered_map 中的 std::array 的值初始化
- "Warning: Comma within array index expression"但逗号分隔函数参数
- 确保编译时的特定 std::array 位置
- std::array的长度有大小限制吗?
- 将 std::array 移动到另一个 std::array
- 首先按给定顺序打印所有数字,然后使用 Array 打印所有字符和其他符号
- 为什么 std::shared_ptr 被认为是"heavy"和"expensive",但 std::array "same perfprmance as plain (c-style) arrays
- 将 **float array 从 C++ Dll 传递给 python
- std::bind on statd::array 的运算符 []
- 检查输入 std::array 指针数据是否等于某个常量数组
- 我可以安全地复制矢量<array>吗?
- 解析问题 - 预期的非限定 ID - #include <array> 编译错误
- 如何读/写或遍历 std::array 中的特定元素范围?
- 通过 host() 从 af::array 检索数据会导致错误的数据
- 是否可以使用 std::array 作为 POD 结构的数据容器?
- 如何在C++中传递一个大小未知的 std::array?