C++ 什么是R语言的快速自由矩阵/线性代数库?

C++ 什么是R语言的快速自由矩阵/线性代数库?,c++,math,C++,Math,我一直在处理数学密集型代码,需要一个好的矩阵库。我可以使用二维数组,但是一个完整的矩阵库(包括乘法、加法等)会更方便。我显然已经在谷歌上搜索过了,但这给了我太多的选择。我希望一些有经验的程序员的意见能帮助缩小范围 强>什么是一些好的免费矩阵/线性代数库C++? < /p> < p>你可以尝试 功能性 UBLAS为稠密、单位和稀疏向量、密集、恒等、三角形、带状、对称、厄米和稀疏矩阵提供模板C++类。可以通过范围、切片、适配器类和间接数组将视图构造为向量和矩阵。该库涵盖了向量和矩阵的常用基本线性代

我一直在处理数学密集型代码,需要一个好的矩阵库。我可以使用二维数组,但是一个完整的矩阵库(包括乘法、加法等)会更方便。我显然已经在谷歌上搜索过了,但这给了我太多的选择。我希望一些有经验的程序员的意见能帮助缩小范围

<>强>什么是一些好的免费矩阵/线性代数库C++?<强> < /p> < p>你可以尝试

功能性

UBLAS为稠密、单位和稀疏向量、密集、恒等、三角形、带状、对称、厄米和稀疏矩阵提供模板C++类。可以通过范围、切片、适配器类和间接数组将视图构造为向量和矩阵。该库涵盖了向量和矩阵的常用基本线性代数运算:不同范数的约化、向量和矩阵的加减、与标量的乘法、向量的内积和外积、矩阵向量和矩阵积以及三角解算器。容器、视图和表达式模板化操作之间的粘合剂主要是符合STL的迭代器接口

是一个非常快速的矩阵操作和线性代数库,在可用时使用硬件加速。

过去我使用过。我不能说它的速度能力——一位朋友向我推荐它,因为它与MATLAB函数和符号有一些相似之处。我没有尝试任何非常密集的东西,但在我使用它的时候,它达到了我的目的。我也听到了关于uBlas的好消息,这里也推荐了它。

还有一个,它有一个易于使用的语法,类似于Matlab。也有一个非常相似的语法,但已知比它要快得多。(犰狳使用模板元编程,而它不使用模板元编程)。Armadillo和IT++都提供特征分解、奇异值分解、矩阵求逆等功能。相比之下,使用模板元编程来提高速度,但无法进行矩阵求逆等功能

根据不同领域的不同功能集,速度差处于折衷状态,例如,IT++有许多信号处理功能,而几乎只关注线性代数

这就引出了一个相关的问题:图书馆的速度只是其整体有用性或价值的一个因素。例如,您可能有一个非常快速的库,但是学习它的API/语法需要相当长的时间,或者语法很难使用。另一个问题是库中已经存在的功能数量——例如,您可能需要编写自己的函数。您还需要考虑库的目的是为了简化MATLAB代码到C++的转换,或者您已经熟悉MATLAB语法。
鉴于以上几点,您最终可能会花费比运行代码更多的时间进行编码和调试,这最终会破坏快速库的用途。换句话说,原始执行速度只是一个因素,不应该依赖它作为总体决定因素。开发时间也是一个非常重要的因素(例如“产品开发时间”),不仅从成本的角度来看,而且因为花在编码上的时间更少,您就可以自由地做其他事情。

硬件加速?它使用gpu?怎么做?它不使用GPU。从主网页“对SSE 2/3/4、ARM NEON和AltiVec指令集执行显式矢量化,并优雅地回退到非矢量化代码。”