问题标签 [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.
matrix - 特征包迭代行主要稀疏矩阵
我试图迭代行主要稀疏矩阵的非零元素,如下所示:
但我没有看到正确的价值观。相反,我看到 it.row() 的随机值,it.col() 的值为 1 和 it.value() 的一些随机值,如下所示:
将 RowMajor 更改为 ColumnMajor 使代码按预期工作。
我不确定行主要部分出了什么问题?有人可以让我知道我在这里想念什么吗?
提前致谢
templates - 固定大小的特征矩阵作为模板函数中的参数
我正在尝试编写一个函数,该函数使用矩阵大小上的模板来获取固定大小的矩阵。我已阅读http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html但我无法使其完美运行。我无法在函数内的固定大小矩阵上使用固定大小的矩阵块操作。(TutorialBlockOperations.html">http://eigen.tuxfamily.org/dox/group_TutorialBlockOperations.html)
我试图以两种方式做到这一点,但他们都没有工作。
这是函数定义A:
这是函数定义B:
有任何想法吗?
templates - Eigen3:在模板函数中以一种数据类型传递固定大小矩阵和动态大小矩阵
我有进一步的问题继续我之前的问题。现在我想在一种类型中传递两种特征参数:(1)固定大小的矩阵或(2)行是固定的,但 cols 是动态的。两个矩阵的行总是应该是 3。你修改的函数是:
我想创建变量,它的大小与v
函数中传递的参数相同。传递固定大小的矩阵很好,但不适用于动态(列)大小的矩阵。ret
动态尺寸矩阵的列数为 0。
输出:
是否有一致的方法来创建变量,其大小与固定大小矩阵和动态(列)大小矩阵的传递参数相同?或者不可能以一种数据类型传递它们?
提前致谢!
eigen - 如何为 Eigen::Array 调用点
我必须矩阵并希望将它们视为一维列表并进行点积。我以下,但它不工作:
最好的方法是什么?
c++ - 特征代码在发布模式下失败,但在调试模式下工作
大家好,使用 Eigen 的人,我在这里遇到了一个奇怪的问题。
我用Eigen实现了一个无味卡尔曼滤波器。
它在我的 PC 上运行良好,但同一段代码会在我的嵌入式系统Odroid XU(Armv7 架构)上产生分段错误。
经过几个小时的调试,我发现问题出在这部分:
我首先计算矩阵OS的 QR 分解(维度 n×3n),然后执行其 R 分量的秩更新(维度 n×n)。internal::llt_inplace::rankUpdate是 Eigen 库中未记录的函数。它只是对其第一个参数执行 rank-1 更新。这个函数可以在 ~/path_to_Eigen/Cholesky/LLT.h 中找到
这段代码最奇怪的是,使用-DCMAKE_BUILD_TYPE=Debug可以完美运行,而如果我使用-DCMAKE_BUILD_TYPE=Release进行编译,则此代码将失败。
我想问任何人都可以理解这一点,或者以前有没有人遇到过类似的问题。请帮忙,非常感谢。
c++ - 在 Cmake 中包含子目录中的文件时遇到问题
我对 cmake 很陌生,因此无法真正理解将我的疑问与一些现有问题联系起来是否合适。以防万一,可以随意将其合并到适当的问题中。
我在我的系统上安装了 Eigen 库。包含文件位于 /usr/local/include/eigen3 中。上述目录的结构如下:
在为我使用 Eigen 编写的项目编写 CMakeLists.txt 时,我按照此处的答案执行了以下步骤:
- 在我的 PROJECT_SOURCE_DIR 中创建了一个名为“cmake”的文件夹并将 FindEigen3.cmake 文件复制到其中(该文件存在于 /usr/local/eigen3/cmake 文件夹中。)
- 如论坛中所述,对我的 CMakeLists.txt 进行了适当的更改。
问题是在我的一个源文件中,我有如下一行:
当我尝试运行由 CMake 生成的 makefile 时,我收到无法找到 Eigen/Dense 的错误。我不明白这一点,因为 Eigen/Dense 只是在 FindEigen3.cmake 找到的 EIGEN3_INCLUDE_DIR 中为了规避这个问题,我必须在我的 CMakeLists.txt 中修改以下行
至
然后我可以简单地编写#include"Dense"
它并且它可以工作。这种行为的原因是什么,有没有办法绕过它,因为我有很多源文件,我必须在其中更改这些行?此外,对这种行为的澄清也将有助于任何未来的图书馆。
matrix - 如何从 Eigen::Affine3f 转换为 Eigen::Matrix4f
我有两个问题。
Eigen::Affine3f 和 Eigen::Matrix4f 中表示的刚性变换是否相同?
我们如何从 Eigen::Affine3f 转换为 Eigen::Matrix4f ,反之亦然?
谢谢你的帮助!
c++ - Eigen:从 C++ 数组高效实现矩阵
是否可以实现一个接收 C 样式指针作为模板参数并以某种方式解析为静态特征矩阵但使用提供的内存的类?假设声明看起来像:
我确实知道地图,但我在下面提供的示例代码证明,与静态特征矩阵相比,它们要慢 20%。
这些将是前提:
- 我需要提供我自己的 C 指针。这样我就可以有效地重用 C 代码而不会产生副本。
- 生成的矩阵对于 Eigen 来说应该是静态的,以便 Eigen 可以像在编译时使用静态数组一样进行优化。看看我上面的例子,在编译时我会同时提供矩阵大小(静态)和 C 指针。
- CMatrix应该回退到Eigen::Matrix。当没有提供 C 数组的附加模板参数时,我会得到正常的特征矩阵。
- 我不打算做一个完整的 Eigen 扩展。我的意思是我不关心为其他用户提供简洁扩展的所有类型的检查。我只想要这个问题最有效的解决方案
是否可以通过添加新的构造函数来实现解决方案?像这样说:
在下面找到我的代码,用于对 Map 与 Matrix 效率进行基准测试。它是自包含的,您可以编译:
这是代码:
c++ - CMake:Eigen3 包含第三个项目所需的目录
我已经实现了一个使用 Eigen3 的库。以下行是该库的 CMake 的一部分:
并且找到了 Eigen3,我的库编译没有任何问题。
当我在其他项目中使用我的库时会出现复杂情况。这个项目与 Eigen 无关,它没有在那里使用。但是,如果我在这个项目中也没有包含 Eigen 包含目录,那么它的编译就会失败。
我的库被编译为动态库,我猜它缺少一些 Eigen 的东西,这就是为什么项目也需要 Eigen 包含目录的原因。关于如何解决这个问题的任何想法?
谢谢你。
PS:我在 Ubuntu 13.04 中并使用 QtCreator 作为 IDE。
c++ - C++程序中的语法错误,无法弄清楚
我正在使用 C++ 中的 eigen 库尝试一个程序,但在语法部分犯了一些错误。这是我的代码。有人可以评论我哪里出错了吗?
还有什么问题是在注释行中声明矩阵 A ?