问题标签 [eigen3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用带有 Eigen C++ 库的模板编程时出现编译错误
我下载了 Eigen (3) 库并开始使用它。我写了一个模板函数,并在函数内部声明了一个“模板类型”的局部变量。我收到以下编译错误。
“EigenTest.cpp”如下所示。
我也尝试使用'typename Type1 tmp = matrix(0, 0);'
这也没有用!
如何解决这个问题?在普通的 C++ 模板编程中(没有 Eigen),我可以在模板函数中定义一个局部变量为 'Type1 tmp;"
c++ - 寻找初始化 Eigen3 矩阵的更好方法
我有一种情况,我从具有双元素的一个中派生出一个具有复杂元素的 Eigen3 矩阵。目前我只是遍历行和列并一一填写条目。我想知道是否有人知道以下方面的任何方法:
c++ - Eigen::Matrix 发布数据的解决方法
我想对来自另一个库的数据使用 Eigen3。ggael较早的回答指出了一种Eigen::Matrix
通过关键字采用预先存在的数据的方法new
。但是,这对我来说还不够,因为结果Matrix
似乎仍然获得了数据的所有权,这意味着它会在超出范围时释放数据。也就是说,如果data
最终被它来自的库删除,这将是一个崩溃:
我想出了两个解决方法:
这是相当不方便的,因为存在cache
. 另一个没有这个问题:
然而,这里不清楚原始数据会发生什么m
(如果有的话——所有这些都不是从 Eigen3 的文档中完全清楚的)。
我的问题是是否有一种规范的方式Eigen::Matrix
来释放其数据的所有权(自行分配或采用)。
c++ - 将 Eigen C++ 库与英特尔 MKL 结合使用
我尝试使用来自 Eigen(3) 的 Intel MKL。我写了一个基本的矩阵乘法程序,如下所示。
我使用“g++ EigenTest_IntelMKL.cpp -I../Eigen -DMKL_ILP64 -m64 -I /opt/intel/mkl/include”,我得到以下编译错误:
在 EigenTest_IntelMKL.cpp:3:0 中包含的文件中:../Eigen/src/Core/util/MKL_support.h:64:9: 错误:命名空间“std”中的“complex”未命名类型 typedef std::复杂的dcomplex;^ ../Eigen/src/Core/util/MKL_support.h:65:9:错误:命名空间“std”中的“complex”未命名类型typedef std::complex scomplex;
opencv - 为什么我不能安装 python opencv2?
我正在尝试通过这些说明在我的 Mac Air(使用 Lion)上安装 opencv2。
http://www.guidefreitas.com/installing-opencv-2-4-2-on-mac-osx-mountain-lion-with-python-support
我已经成功地制作了opencv2
但是,运行sudo make install
会产生一个奇怪的错误,指出numext
未定义的方式。
这个错误是什么意思?我觉得这与 Eigen 库有关。我尝试重新制作 Eigen 库。反过来,这又产生了另一个涉及 glew、glut 和 OpenGL 的错误。感觉就像掉进了兔子洞。
有谁知道 Eigen 库中的错误来自哪里?
c++ - 使用 Eigen 将一维数组与矩阵相乘
我想知道为什么这不适用于 Eigen:
虽然这有效:
这也有效:
对于第一个示例(clang-500.2.79),我的编译器为我提供了以下错误消息:
代码/Eigen/src/Core/ArrayWrapper.h:178:56:错误:无法使用“const Scalar *”类型的右值(又名“const double”初始化“ScalarWithConstIfNotLvalue *”(又名“double *”)类型的返回对象*')内联 ScalarWithConstIfNotLvalue* data() { return m_expression.data(); }
c++ - 为什么是“const Eigen::Matrix<>&”和“const Ref>" 显然不兼容?
这是我的示例代码:
(请注意被 包围的部分#if ENABLE_MY_COMPILE_ERROR
)
这是我得到的编译错误ENABLE_MY_COMPILE_ERROR != 0
:
因此,显然以下内容是不兼容的:
const Eigen::Ref<Eigen::MatrixXd> a
const Eigen::Matrix3d& MRef = M
我的问题是:
这是设计使然,还是 Eigen::Ref<> 的错误/缺点?
如果按照设计,那么在保持 const 正确性的同时干净地传递 Matrix 对象的好方法是什么?
例如,如果有一个带有成员函数的类:
我计划在一段代码中多次使用这个函数的返回值,我想用一个短名称创建一个对它的引用,我希望它是一个常量引用。
但是,如果我将 M 传递给接受参数的函数,我将得到上述编译错误const Ref<Matrix3d>
,例如:
仅供参考,我目前正在使用以下版本的 Eigen:
c++ - 将 Eigen3 变换的旋转转换为 AngleAxis
如何使用 Eigen 3 做到这一点?
c++ - 正确使用 Eigen::Ref<> 类
Eigen 引入了 Ref<> 类来编写以 Eigen 对象作为参数的函数,而无需使用不必要的临时变量,当不需要编写模板函数时。可以在这里阅读到这一点。
在进一步搜索互联网时,我发现了几种不同的使用 Ref<> 类的参数声明。在 Eigen 文档中,他们const Eigen::Ref<const Eigen::MatrixXf>&
在第一个示例中使用只读参数。第二个例子Eigen::Ref<Eigen::MatrixXd>
是针对读写参数介绍的,BUT这里const Eigen::Ref<const Eigen::MatrixXd>
是针对只读参数的(不做参考)。所以我的问题是:
以下声明有什么区别,我什么时候使用哪个?
const Eigen::Ref<const Eigen::MatrixXd>&
const Eigen::Ref<const Eigen::MatrixXd>
const Eigen::Ref<Eigen::MatrixXd>&
const Eigen::Ref<Eigen::MatrixXd>
Eigen::Ref<const Eigen::MatrixXd>&
Eigen::Ref<const Eigen::MatrixXd>
Eigen::Ref<Eigen::MatrixXd>&
Eigen::Ref<Eigen::MatrixXd>
为了完整起见,我列出了 const 用法和参考的所有可能组合。
arrays - Eigen3 数组的逻辑运算
我正在尝试将组件逻辑和 (&&) 应用于两个不同数组的元素。第一个映射一个已经分配的缓冲区,而第二个是从头开始创建的:
正如http://eigen.tuxfamily.org/dox/classEigen_1_1ArrayBase.html#afce9cebae4c9cbb9883e73d515b5570f中所建议的,我在两个布尔数组上应用逻辑和,在前两个数组上应用更大和更低的运算符:
编译给了我以下错误: