问题标签 [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 投票
1 回答
3059 浏览

c++ - 设置 iOS 项目以使用 eigen

我正在尝试建立一个 iOS 项目来编译一个名为 Eigen 的 C++ 库,用于线性代数数学。

我开始遵循以下问题中提到的说明:

如何在 iPhone 中编译 Eigen

但是还是有一些我想不通的事情。

  1. 用户 Stafan 说要设置正确的编译器标志 (-mfpu=neon -mfloat-abi=softfp)。我在哪里设置这些标志?我已经发现要为单个文件设置标志,例如http://meandmark.com/blog/2011/10/xcode-4-setting-compiler-flags-for-a-single-file/。但是我需要为哪些文件设置此标志?尤其是来自 Eigen 库的 c++ 文件没有出现在这里。
  2. 用户 Blukee 说他在构建设置中使用了 armv7 优化的 arch。在构建设置中,我在 Architectures 类别中看到一个绿色字段,上面写着 Standard(armv7) 是这样吗?

我刚刚创建了一个 ,,singleViewApplication'' 并想在一个名为 MathLibary 的新 Objective C 类中使用 c++ 文件。因为有些人说如果我将类命名为 MathLibary.hh 和 MathLibary.mm,则可能会混淆 Objective C 和 C++。班级看起来像

当我尝试运行应用程序时,构建失败,编译器会给出一些错误,例如:在 SVD.h 文件的第 47 行,即:

错误是“类型名称”之后的预期名称

对我来说,听起来编译器试图将 SVD.h 编译为目标 c 文件,但它是 c++。

  1. 如何更改编译器以编译用户界面的目标 c 文件和库中的 c++ 文件

我希望有人能够帮助我,非常感谢。

0 投票
1 回答
572 浏览

eigen - 将 MPFR (mpreal) 与 Eigen3 一起使用

我在 Eigen3 网站上看到 MPFR 多精度数据类型有一个“不受支持”的模块。有谁知道这有多可靠?

我的主要目标不仅是使用mpreal,而且是复杂的<mpreal>。

0 投票
0 回答
268 浏览

background - 如何加快特征背景计算?

我正在尝试优化此算法以使用移动摄像机视频进行自适应背景检测

http://www.springerlink.com/content/4j2m3885r3133202/fulltext.pdf

该算法加快了背景模型的升级(SVD 对于实时应用来说太重了)。我可以管理 3 个属性来加速算法。属性是:

  1. N第一次 SVD 计算的帧数
  2. M描述背景模型的特征向量个数(M<=N)
  3. P等待批量更新的帧数

你知道我怎样才能找出处理时间和这三个属性之间的关系吗?

你知道如何找出最优值吗?

该算法的主要部分是在批量更新期间对传入帧进行正交归一化的 QR 分解。这个功能需要很多时间。

你知道计算正交化的更快算法吗?

这里是我正在使用的 m_cT 的函数 QR(论文中的矩阵U'=[U|E] ):

在测试过程中,我注意到帧中的高频细节在相机运动过程中会产生大量误报。

你认为在 SVD 计算之前应用一个平滑滤波器可以得到更好的检测 BG/FG 吗?

谢谢您的帮助。

0 投票
4 回答
1312 浏览

c++ - 如何集成使用表达式模板的库?

我想在我的程序中使用 Eigen 矩阵库作为线性代数引擎。Eigen 使用表达式模板来实现惰性求值并简化循环和计算。

例如:

由于 Eigen 使用表达式模板,因此代码如

在上面提到的示例中,减少到长度为 10 的单个循环(不是 40,浮点数按 4 块放入寄存器中)而不创建临时。多么酷啊?

但是如果我像这样集成库:

然后像这样的表达式:

不能利用 Eigen 的实现方式。这不是最后一个。还有许多其他示例,在 Eigen 中使用了表达式模板。

简单的解决方案是不要自己定义运算符,data_公开并编写如下表达式:

这打破了封装,但它保留了 Eigen 的效率。

其他方式可能是制作我自己的运算符,但让它们返回表达式模板。但由于我是 C++ 的初学者,我不知道这是否是正确的方法。

如果这个问题本质上太笼统,我很抱歉。我是初学者,没有人问。到目前为止,我std::vector<float>到处都在使用,但现在我也需要使用矩阵。在我的整个项目中切换std::vector<float>到 Eigen 是一大步,我害怕一开始就打错电话。欢迎任何建议!

0 投票
4 回答
6750 浏览

random - 根据任意分布设置 Eigen::Matrix 的系数

Eigen::Matrix 有一个 setRandom() 方法,它将矩阵的所有系数设置为随机值。但是,在指定要使用的分布时,是否有一种内置方法可以将所有矩阵系数设置为随机值。

有没有办法实现以下目标:

0 投票
1 回答
1383 浏览

c++ - boost++::weighted_median 和 eigen::vectorXf --newbie

我想获得未排序的可变长度特征 c++ vectorXf 对象的 weighted_median。看来我可以使用 boost 的统计累加器库中的 boost weighted_median 函数来有效地做到这一点[?]。

从本质上讲,我正在尝试做一些与 这里所做的非常相似的事情。我不确定 boost 的累加器是这个任务的正确框架(如果不是,请建议!),但我还没有找到另一个现成的 O(n) 加权中位数的实现。

我现在的问题是,是否有办法用更优雅的构造替换下面的“for(int i=0;i<100;i++)”循环?

PS我已经看到了这个SO question,但目前还不清楚如何将答案转化为可操作的解决方案。

0 投票
2 回答
6453 浏览

c++ - kdevelop #包括

Kdevelop wiki说(页面底部)

*对于配置构建工具链后 KDevelop 仍未正确确定包含路径的情况,您可以手动将每个目录的包含路径添加到 .kdev_include_paths 文件中。这可以通过运行与“找不到包含文件”问题相关联的“解决问题”向导在 KDevelop 内部完成,例如通过悬停有问题的#include 行。*

现在,我已经这样做了(不再有任何有问题的、下划线的、#include 行)。但是当我尝试构建时,我得到:

用户 BЈовић 询问更多信息:

我按照 KDEvelop 指令进行了最小编译。项目->从模板新建->标准(基于简单 C make 的 c++ 应用程序)。版本控制系统为“none”,cmake 目录为:/usr/bin/cmake。然后KDEvelop下划线#include <Eigen/Dense>,我点击屏幕下端弹出的“添加自定义包含路径”,输入特征路径,删除下划线,#include <Eigen/Dense>然后构建,然后我得到/home/kaveh/projects/mqn_get/main.cpp:15:23: fatal error: Eigen/Dense: No such file or directory。我应该补充一点,这段代码在 eclipse 和 shell 中构建没有问题。

动机:我正在尝试在 kdevelop 下构建它,因为我需要使用调试器(代码没有给出预期的结果)而且 eclipse对IMO 来说太重了

0 投票
5 回答
11893 浏览

concurrency - 大矩阵求逆

我正在寻找一个大矩阵的逆矩阵,常见大小为 1000 x 1000,但有时超过 100000 x 100000(由于时间和内存,目前正在失败)。我知道正常的情绪是“不要采取相反的方式,找到其他方法来做到这一点”,但目前这是不可能的。其原因是由于使用了期望得到矩阵逆的软件。(注意:我正在研究改变这种情况的方法,但这需要很长时间)

目前我们正在使用数值复制的 LU 分解方法,我目前正在测试特征库。eigen 库似乎更稳定且速度更快,但我仍处于准确性测试阶段。我快速浏览了其他库,例如 ATLAS 和 LAPACK,但尚未对这些库进行任何实质性测试。

似乎 eigen 库不使用并发方法来计算逆(尽管对于逆的 LU 分解部分确实如此),据我所知,ATLAS 和 LAPACK 在这个限制方面是相似的。(我目前正在使用 openMP 和不使用 openMP 测试 eigen 的速度差异。)

第一个问题是谁能解释如何通过并行化优化矩阵求逆。在这里找到了一篇讲矩阵求逆并行算法的文章,但是没看懂。这篇文章似乎在谈论另一种方法?我也不确定 scaLAPACK 或 PETSc 是否有用?

第二个问题,我阅读了这篇关于使用 GPU 提高性能的文章,但我从未为 GPU 编码,因此不知道要传达什么,但底部的图表看起来相当惊人。这怎么可能,如果这是真的,我该如何开始实施这样的事情。

我还发现了这篇文章,还没有时间通读以了解它,但它似乎很有希望,因为内存是我们软件的当前问题。

有关这些文章或一般问题的任何信息都会有很大帮助。如果这个问题看起来含糊不清,我再次道歉,如有必要,我会尝试扩展更多内容。

0 投票
4 回答
2786 浏览

c++ - 如何捕获 Eigen 的 MatrixXd::resize() 函数引发的异常?

为什么我不能捕捉到这个异常?

我的(客户)代码:

引发异常的特征代码低了几级..

哪个电话

粗体线是在该行之前被击中的行:

被击中,这发生在internal::conditional_aligned_delete_auto(m_data, m_rows*m_cols);函数调用内部的某个地方。

为什么我不能从我的客户端代码中捕捉到这个异常?是因为 Eigen 库没有用 标记resize函数throws吗?如何使用 Eigen 库使此代码malloc顺利地从此类错误中恢复?

0 投票
2 回答
2141 浏览

c++ - 模板库的编译器内存消耗(boost + Eigen)

我正在编写一个使用 boost::accumulators 和 Eigen 线性代数库的模板算法。编译时,Visual Studio 编译器 (cl.exe),内存消耗峰值超过 2.5GB 的 RAM,我的 PC(Windows 7 32 位,3GB 虚拟地址空间)变得无响应(很长一段时间:~1 分钟) . 这些编译单元的二进制文件 (.obj) 为 10-20MB。

我的问题(不针对这些特定库)

  1. 这是大量使用模板的代码的正常行为吗?
  2. 有什么办法可以减少内存需求和编译时间?
  3. 如果问题没有好的解决方案,为什么设计编程语言的人不解决这个问题?了解 C++ 的人越多,他们就越可能使用模板,并生成难以编译的代码和臃肿的二进制文件。