问题标签 [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 回答
14762 浏览

c++ - 如何使用 Eigen,线性代数的 C++ 模板库?

我有一个由矩阵组成的图像处理算法,我有自己的矩阵运算代码(乘法,逆......)。但是我使用的处理器是 ARM Cortex-A8 处理器,它具有 NEON 协处理器进行矢量化,因为矩阵运算是 SIMD 运算的理​​想情况,我要求编译器 (-mfpu=neon -mfloat-abi=softfp) 生成 NEON我的代码的说明,但编译器没有这样做,然后我还尝试为 Matrix 操作编写自己的 NEON 内在代码,但我发现这样做非常困难。

所以,我想到了利用Eigen库来保证矩阵运算的向量化。因此,我立即下载了 Eigen C++ 库并尝试按照他们的教程中给出的方式使用它,但不幸的是,当我运行他们的示例程序时出现编译错误

任何有使用 Eigen 经验的人,任何例子都会很有帮助吗?请帮助我如何去做。

帮助!

谢谢


我的 Eigen 文件夹位于:/home/ubuntu/Documents/eigen我在 Eclipse 的 C++ 项目的附加目录中设置了这个路径。然后我运行以下程序(示例)-

我得到的错误 -

为项目 Test_Eigen 构建配置调试 ****

做所有

构建文件:../main.cpp

调用:Sourcery G++ C++ 编译器

arm-none-linux-gnueabi-g++ -I/home/ubuntu/Documents/eigen -O0 -g3 -Wall -c -fmessage-length=0 -fcommon -MMD -MP -MF"main.d" -MT"main .d" -mcpu=cortex-a8 -marm -o"main.o"

“../main.cpp”

../main.cpp:6: 错误: 'int' 之前的预期构造函数、析构函数或类型转换 make: *** [main.o] 错误 1

0 投票
4 回答
6123 浏览

c++ - 如何为使用 Eigen(线性代数的 C++ 模板库)的 C++ 项目编写生成文件?

我正在使用 Eigen 库,它承诺矩阵运算的矢量化。我不知道如何使用 Eigen 中给出的文件并编写一个 makefile。使用 Eigen 的源文件包括下面列出的文件,这些甚至不是头文件(它们只是一些文本文件)-

等等。在 Eigen 的网页上,它提到,为了使用它的功能,我不必构建项目,那么如何将这些文件包含在我的 makefile 中来构建我的项目。我的示例 main.c 文件如下所示。谁能告诉我如何为这个文件编写一个makefile makefile -

帮助!

0 投票
4 回答
4426 浏览

c++ - 32 位应用程序的特征最大矩阵大小

因此,当我尝试声明大于 10000x10000 的矩阵时,我发现Eigen包崩溃。我需要声明一个这样的矩阵.. 大约 13000x13000 个元素可靠。我进行了如下测试:

我的机器(6 GB RAM)在 14008 个元素处崩溃。

我有点失望!我认为 Eigen 就像 MATLAB 或 octave 并且不应该使用更大的数组崩溃,即使它确实撞到了磁盘或其他东西..

更重要的是,当我运行这个测试并保持 TaskMan 处于打开状态时,创建这些矩阵的进程甚至不会使用那么多内存。TaskMan 报告低于 2k 的使用量。

使用 Eigen 2.0.15 稳定版

0 投票
2 回答
2370 浏览

opengl - 在 opengl 中使用 Eigen 数学库的问题

我目前正在尝试将 Eigen 数学库与 Opengl 一起使用。我有一些来自 Eigen 的 Vector3f 的 typedef,比如 Vec3,这样我就可以将它用作我的顶点的坐标。我还有一个带有坐标(vec3)、法线(vec3)和颜色(vec4)的顶点结构。当我尝试使用顶点数组时(一旦我使顶点数组正常工作,我将使用 VBO)似乎 OpenGL 将 Eigen 的 Vector3f 处理为坐标存在问题......你们中有人处理过这些问题吗?

0 投票
2 回答
3459 浏览

opencv - 如何提高特征脸算法的准确率

我在 C# 上使用 EmguCV 库(openCV 包装器)来使用 Eigenface 算法实现人脸检测和人脸识别

我发现了很多准确率的错误,例如最小距离不是训练集中的同一个人,训练集中不存在的人但与训练集中有良好距离的人匹配等。

请帮我。

谢谢你。

附加信息: - 我在训练集中每 1 人使用 1 张面部图像(直面部图像,无方向) - 现在,我在训练集中使用大约 10-20 人进行测试

0 投票
1 回答
3374 浏览

c++ - Eigen 库和 C++ 链接器的问题

我尝试将我的 c++ 应用程序与“Eigen 2.0.15”库链接起来。一些细节:

  • 我的编译器是:gcc 版本 4.0.1(Apple Inc. build 5493)
  • 我的操作系统是:mac os 10.5
  • 我用 g++ -I/opt/local/include -I/opt/local/include/eigen2 -O2 -g ... 编译代码

    Building target: LBRALL Invoking: MacOS X C++ Linker g++ -L/opt/local/lib -o "LBRALL" [... *.o -files ] -lcv -lEigen2 -lcxcore -lhighgui

错误是:

有人知道链接器为什么会失败吗?

0 投票
2 回答
1054 浏览

opencv - OpenCV CalcPca 输入数据

我正在尝试使用“eigenfaces”通过opencv实现人脸识别训练功能。我有示例数据,但找不到有关 CalcPCA 函数参数的任何信息。我所知道的是它需要数据矩阵,对平均特征面矩阵的引用,对特征向量的引用和对特征值矩阵的引用。

我的问题是,我应该如何将来自几个测试图像矩阵的数据传递到 CalcPCA 的第一个参数中,以便获得平均特征面和向量?

0 投票
5 回答
3740 浏览

c++ - 用 C++ 求解正规方程组

我想解决线性方程组:

A 是一个n x m矩阵(不是正方形),b 和 x 都是n x 1向量。在已知 A 和 b 的情况下,n 大约为 50-100,m 约为 2(换句话说,A 可能是最大值 [100x2])。

我知道解决方案x$x = \inv(A^T A) A^T b$

我找到了几种解决方法:uBLAS(Boost)、Lapack、Eigen 等,但我不知道使用这些包的“x”的 CPU 计算时间有多快。我也不知道这在数字上是否快速为什么要解决'x'

对我来说重要的是,由于我是新手,所以 CPU 计算时间会尽可能短并且有很好的文档。

在解决了正规方程后,Ax = b我想使用回归改进我的近似值,然后可能会应用卡尔曼滤波器。

我的问题是哪个 C++ 库对于我上面描述的需求更健壮和更快?

0 投票
1 回答
6681 浏览

c++ - OpenCV 中的 PCA 使用新的 C++ 接口

顺便说一句:抱歉,如果我用 OpenCV 问题淹没 SO:p

我目前正在尝试移植我的旧 C 代码以使用新的 C++ 接口,并且我已经到了重新构建我的 Eigenfaces 人脸识别器类的地步。

我正在尝试创建 PCA 空间,然后通过显示计算出的平均图像来查看它是否正常工作。还有其他步骤吗?

也许我需要首先将图像投影到 PCA 子空间?

0 投票
1 回答
1318 浏览

opencv - 如何使用 Cimg(或者可能是 openCV 或 eigen 库)计算 SVD?

谁能给我一个关于如何使用 Cimg 为 3 维数组计算 SVD 的快速指南?我只想对数组进行分解,以便将其压缩到很小以加快进一步处理。我应该在哪里输入什么值,以及如何获得输出?我一直在搜索,但仍然无法理解它是如何工作的。并没有真正完全理解 SVD 的工作原理。只知道它可以用来解压缩矩阵。

同时我发现 OpenCV 和 Eigen 库也可以完成这项工作,如果更容易的话,请告诉我他们的步骤..

(对我来说,替代 SVD 的是 PCA,我找到了它的源/库,但也不知道如何使用..)

谢谢!