似乎许多项目慢慢地发现需要做矩阵数学,并陷入了首先构建一些向量类,然后慢慢添加功能的陷阱,直到他们被发现构建了一个半成品的自定义线性代数库,并依赖于它。
我想避免这种情况,同时不依赖于一些切线相关的库(例如OpenCV, OpenSceneGraph)。
有哪些常用的矩阵数学/线性代数库,为什么决定使用一个而不是另一个?有没有因为某些原因而被建议不要使用的?我特别在几何/时间上下文中使用这个*(2,3,4 Dim)*,但将来可能会使用更高维度的数据。
我正在寻找关于以下任何方面的差异:API、速度、内存使用、广度/完整性、狭窄性/特异性、可扩展性和/或成熟度/稳定性。
更新
我最终使用了我非常满意的Eigen3。
如果你正在寻找英特尔处理器上的高性能矩阵/线性代数/优化,我会看看英特尔的MKL库。
MKL为快速运行时性能进行了精心优化——大部分基于非常成熟的BLAS/LAPACK fortran标准。它的性能随可用内核的数量而变化。具有可用内核的免提可伸缩性是计算的未来,对于不支持多核处理器的新项目,我不会使用任何数学库。
简单地说,它包括:
基本向量-向量,向量-矩阵,
矩阵-矩阵运算
矩阵分解(LU分解,厄米化,稀疏化)
最小二乘拟合和特征值问题
稀疏线性系统求解器
非线性最小二乘求解器(信赖域)
加上信号处理程序,如FFT和卷积
非常快速的随机数发生器(梅森扭曲)
更多的……参见:link text
一个缺点是MKL API可能非常复杂,具体取决于所需的例程。您还可以看看他们的IPP(集成性能原语)库,该库面向高性能图像处理操作,但仍然相当广泛。
保罗
CenterSpace软件公司。NET数学库,centerspace.net