问题标签 [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.
c++ - 将矩阵写入本征文件?
我正在尝试使用 Eigen 库学习 C++。
我如何导出m
到文本文件(我已经搜索了文档,但没有发现提及写作功能)?
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)。
我试过(天真地):
但它有两个问题:
- 它不起作用
- 即使它确实有效,我仍然必须传递 d 的(副本)一次才能找到那些小于 d(m) 的条目的索引。这是必要的吗?
最好的,
c++ - 访问矩阵的列作为特征中的向量
如何从矩阵中访问单个向量?
例如:有没有一种方法可以使用类似于返回的A(i)
矩阵来提取向量?Eigen::MatrixXf A(10,10)
Eigen::VectorXf A(10)
c++ - Eigen 中用户定义结构的数组
我想知道是否可以调整具有更复杂数据的数组以用作 Eigen 中的向量或矩阵。
例子:
是否可以告诉 eigen 如何访问numericValue成员并使用数据集进行计算?我在文档中找到了地图类,但没有找到所需的功能。有任何想法吗?
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 但移至此处)。
最好的,
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:
错误
c++ - 本征的新手问题
我有几个关于本征的新手问题。
下面是一个小函数来说明它们。
我有一个向量,其大小将从一次迭代增长到下一次迭代,从 h=1 到 h=h_m 且 h_m<n (n 给定)。我找不到和等效于 .reserve() 特征对象的函数,这意味着我必须在每次迭代时调整这些对象的大小。你能建议一种避免这种情况的方法吗?
p>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:
:(
math - 找到旋转轴
我正在使用特征库将平面旋转为与地平面平行。地平面使用法线向量 (0,0,1) 定义 目标平面是一组 3D 点和法线 旋转角度已知为平面的法线向量,并且该平面上的每个点都必须是旋转到平行于地平面
我想使用来自 http://eigen.tuxfamily.org/api/TutorialGeometry.html的 仿射变换
变换 t = AngleAxisf(a,axis);
在这种情况下,axis 是表示任意轴的矩阵,沿该轴发生旋转。如何找到这个轴?
非常感谢
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
.
c++ - 在 OpenCV 2.3.1 中使用 Eigen 库
我在C++中使用Eigen3 Library 和OpenCV应用程序时遇到了麻烦。我已经使用以下命令在我的 Ubuntu 上安装了 Eigen3 库:
当我使用以下命令进行编译时,我能够编译和使用示例 Eigen3 应用程序(安装了 Eigen3 库并且它可以工作)。
我想将已安装的 Eigen 库与 OpenCV 一起使用。
我用以下标志编译了 OpenCV 源代码:
我的 OpenCV 代码包括以下标头和命名空间:
但是,当我通常编译 OpenCV 应用程序时,我的编译器给了我以下错误:
我该如何解决这个问题?