- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在寻找一个好的(最好是积极维护的)C++ 矩阵库。因此它应该被模板化,因为我想使用一个复杂的有理数作为数字类型。我处理的矩阵主要是稀疏和酉矩阵。
能否请您推荐图书馆并简单解释一下为什么要使用它们,因为我知道如何找到它们,但我无法真正决定什么适合我,因为我缺少使用它们的经验。
编辑:
我正在处理的主要操作是矩阵乘法、标量与 vector 的乘法 和kronecker 乘积。矩阵的大小是指数级的,我希望至少能够处理最多 1024x1024 个条目的矩阵。
最佳答案
很多人在做“严肃”的矩阵工作,依靠BLAS , 添加 LAPACK/ATLAS (正规矩阵)或 UMFPACK (稀疏矩阵)用于更高级的数学。原因是此代码经过充分测试、稳定、可靠且速度相当快。此外,您可以直接从针对您的架构调整的供应商(例如 Intel MKL)购买它们,但也可以免费获得它们。 uBLAS在 Manuel's answer 中提到可能是标准的 C++ BLAS 实现。如果你以后需要像 LAPACK 这样的东西,有 bindings这样做。
但是,这些标准库(BLAS/LAPACK/ATLAS 或 uBLAS + bindings + LAPACK/ATLAS)都没有满足您的模板化和易于使用的条件(除非 uBLAS 是您永远需要的)。事实上,我必须承认,当我使用 BLAS/LAPACK 实现时,我倾向于直接调用 C/Fortran 接口(interface),因为我通常看不到 uBLAS + 绑定(bind)组合的额外优势。
如果我需要一个简单易用的通用 C++ 矩阵库,我倾向于使用 Eigen (我以前用过 NewMat)。优点:
缺点(海事组织):
编辑:即将推出的 Eigen 3.1 允许某些函数使用 Intel MKL(或任何其他 BLAS/LAPACK 实现)。
关于c++ - 用于稀疏酉矩阵的最佳 C++ 矩阵库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2222549/
我是一名优秀的程序员,十分优秀!