问题标签 [eigen]

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.

0 投票
2 回答
22226 浏览

c++ - 将矩阵写入本征文件?

我正在尝试使用 Eigen 库学习 C++。

我如何导出m到文本文件(我已经搜索了文档,但没有发现提及写作功能)?

0 投票
2 回答
655 浏览

c++ - 在 eigen 和相关询问中使用 std::nth_element

我正在一次自学 c++ 和 eigen,所以也许这是一个简单的问题。

给定 n 和 0 "<" m "<" n,以及一个 n 向量 d 的浮点数。为了使其具体:

我想要一个 m 向量 d_prim onf integers,其中包含 d 的所有条目的索引,这些条目小于或等于 d 的第 m 个最大条目。效率很重要。如果数据中有抽取,则填充 d_prim 的前 m 个小于其第 m 个最大条目的 d 条目就可以了(我真的需要不大于第 m 个最大条目的 m 个数字的索引d)。

我试过(天真地):

但它有两个问题:

  1. 它不起作用
  2. 即使它确实有效,我仍然必须传递 d 的(副本)一次才能找到那些小于 d(m) 的条目的索引。这是必要的吗?

最好的,

0 投票
1 回答
24789 浏览

c++ - 访问矩阵的列作为特征中的向量

如何从矩阵中访问单个向量?

例如:有没有一种方法可以使用类似于返回的A(i)矩阵来提取向量?Eigen::MatrixXf A(10,10)Eigen::VectorXf A(10)

0 投票
1 回答
1465 浏览

c++ - Eigen 中用户定义结构的数组

我想知道是否可以调整具有更复杂数据的数组以用作 Eigen 中的向量或矩阵。

例子:

是否可以告诉 eigen 如何访问numericValue成员并使用数据集进行计算?我在文档中找到了地图类,但没有找到所需的功能。有任何想法吗?

0 投票
4 回答
1896 浏览

c++ - c++最佳实践中的矩阵创建破坏?

假设我有一个包含许多小函数的 c++ 代码,在每个函数中,我通常需要一个矩阵 float M1(n,p),其中 n,p 在运行时已知以包含中间计算的结果(无需初始化 M1 ,只是为了声明它,因为每个函数只会覆盖 M1 的所有行)。

部分原因是每个函数都在无法修改的原始数据矩阵上工作,因此需要在“其他地方”完成许多操作(排序、去意义、球化)。

在每个函数中创建一个临时的 M1(n,p) 是更好的做法,还是在 main() 中一劳永逸地把它作为一种桶传递给每个函数,每个函数都可以将其用作废料空间?

n 和 p 通常对于 n 和 p 来说是中等大 [10^2-10^4] 和 [5-100]。

(最初发布在 codereview stackexchange 但移至此处)。

最好的,

0 投票
2 回答
819 浏览

c++ - 无法将 Eigen 对象从 main 传递到附加类中的函数

我在 main 中,并试图将 Eigen 对象传递给位于不同类中的函数。当两个函数都在同一个文件中时,我可以毫无问题地调用这个函数。请参阅我的示例代码以了解我的问题。它不链接。有什么问题,我该如何解决?

Eigen 的创建者 eigen.tuxfamily.org 讨论了如何将 eigen 对象传递给函数。不幸的是,我无法将他们的示例扩展到单个文件之外。

如何传递对象:

http://eigen.tuxfamily.org/api/TopicPassingByValue.html

如何使用表达式模板传递对象:

http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html

主文件

MatrixMathTester.h:

MatrixMathTester.cpp:

错误

0 投票
1 回答
4530 浏览

c++ - 本征的新手问题

我有几个关于本征的新手问题。

下面是一个小函数来说明它们。

  1. 我有一个向量,其大小将从一次迭代增长到下一次迭代,从 h=1 到 h=h_m 且 h_m<n (n 给定)。我找不到和等效于 .reserve() 特征对象的函数,这意味着我必须在每次迭代时调整这些对象的大小。你能建议一种避免这种情况的方法吗?

    p>

  2. b_4 行在运行时导致此错误(在上面的 b.0->b.4 多次迭代之后):

    eigen/Eigen/src/Core/Block.h:278: Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel, true>::Block(XprType&, Eigen::Block<XprType, BlockRows, BlockCols, InnerPanel, true> ::Index) [with XprType = Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001>, int BlockRows = 1, int BlockCols = -0x00000000000000001, bool InnerPanel = false, Eigen::Block<XprType, BlockRows, BlockCols, , true>::Index = long int]: 断言 `(i>=0) && ( ((BlockRows==1) && (BlockCols==XprType::ColsAtCompileTime) && i<xpr.rows()) ||( (BlockRows==XprType::RowsAtCompileTime) && (BlockCols==1) && i<xpr.cols()))' 失败。
    中止

你能帮助理解它的含义,以便我解决问题吗?

编辑:在 cbamber85 的评论之后,确实似乎错误发生在上面一行。

展望 RSubMatrix:

:(

0 投票
1 回答
446 浏览

math - 找到旋转轴

我正在使用特征库将平面旋转为与地平面平行。地平面使用法线向量 (0,0,1) 定义 目标平面是一组 3D 点和法线 旋转角度已知为平面的法线向量,并且该平面上的每个点都必须是旋转到平行于地平面

我想使用来自 http://eigen.tuxfamily.org/api/TutorialGeometry.html的 仿射变换

变换 t = AngleAxisf(a,axis);
在这种情况下,axis 是表示任意轴的矩阵,沿该轴发生旋转。如何找到这个轴?

非常感谢

0 投票
1 回答
1601 浏览

c++ - C++ eigen3 线性代数库,奇怪的性能结果

我在 C++ 中使用 eigen3 线性代数库已经有一段时间了,而且我一直在尝试利用向量化的性能优势。今天,我决定测试一下矢量化在多大程度上真正加快了我的程序。因此,我编写了以下测试程序:

--- eigentest.cpp ---

然后我在用不同的编译器选项编译它后运行这个程序:(结果不是一次性的,许多运行给出相似的结果)

这是我的相关cpu信息:

我知道当我不使用编译器选项-march=native时不会进行矢量化,因为当我不使用它时,我永远不会因为矢量化而出现分段错误或错误结果,而不是我使用它的情况(与-NDEBUG)。

这些结果让我相信,至少在我的 CPU 向量化与 eigen3 会导致执行速度变慢。我该怪谁?我的 CPU,eigen3 还是 gcc?

编辑:为了消除任何疑虑,我现在尝试-DEIGEN_DONT_ALIGN在我尝试测量无向量化情况的性能的情况下添加编译器选项,结果是相同的。此外,当我添加-DEIGEN_DONT_ALIGN-march=native,结果变得非常接近没有-march=native.

0 投票
2 回答
11306 浏览

c++ - 在 OpenCV 2.3.1 中使用 Eigen 库

我在C++中使用Eigen3 Library 和OpenCV应用程序时遇到了麻烦。我已经使用以下命令在我的 Ubuntu 上安装了 Eigen3 库:

当我使用以下命令进行编译时,我能够编译和使用示例 Eigen3 应用程序(安装了 Eigen3 库并且它可以工作)。

我想将已安装的 Eigen 库与 OpenCV 一起使用。

我用以下标志编译了 OpenCV 源代码:

我的 OpenCV 代码包括以下标头和命名空间:

但是,当我通常编译 OpenCV 应用程序时,我的编译器给了我以下错误:

我该如何解决这个问题?