问题 基于小型c的矢量和矩阵库的建议[关闭]


我需要一个轻量级的库,用于2D和3d矢量以及3x3和4x4矩阵。在基本C. 所以我不会再次发明轮子。

有什么建议么?


6369
2017-10-13 20:50


起源

也可以看看: 纯C中是否有易于使用的矢量/矩阵/四元数学库? (关闭) - David C. Rankin


答案:


Meschach 是一个只有c的矢量/矩阵库,明显小于例如LAPACK(根据FAQ,至少:)


8
2017-10-13 21:19



如果您不想重新发明轮子并且想要轻量级,那么这比接受的答案要好。 - Windows programmer
Meschach为+1。它比闪电战略快。 - Dilawar


很多人告诉你使用各种各样的 BLAS 库,但是对于你来说这可能会非常慢,因为你正在研究小矩阵。它们中的大多数都经过优化,可将矩阵块化为固定大小(大约50个元素 - 取决于缓存大小),并使用优化算法对块进行操作,然后使用简单算法对剩余块进行操作。在小矩阵上,这使得它甚至比调用简单算法更慢。

FWIW,当我需要在fortran(2x2和4x4方阵矩阵)中执行此操作时,我只是硬编码完全展开的版本并且它运行良好 (大约是内置MATMUL在gfortran上的速度的20倍,但部分原因可能是由于MATMUL没有到位且我的版本是)。我找不到一个好的图书馆来为我做这件事。

在C ++中它会没问题,因为你可以使用它 BLITZ 可惜...


3
2017-10-13 21:15





假设您正在为x86编码,您可能会考虑使用英特尔 综合性能基元 (IPP)和 数学核心库 (MKL)。这些提供了超级快速的库(可能比其他任何人都能编写的更快,因为它们针对非公共微体系结构细节进行了优化),用于许多常见操作,包括向量和矩阵。


1
2017-10-13 20:54



他们也是每人500美元:C - cjcurrie


试试CIMG(cimg.sourceforge.net)。它以图像处理为重点,但是是免费的,非常轻量级(整个库由单个.h文件组成!),并且具有所有标准的矢量/矩阵运算。

它是C ++,所以如果你做直C,它将无法工作,但值得一看。


1
2017-10-13 21:05





也许你应该尝试DirectX数学库(只是Windows ...)。矢量,矩阵,操作,你需要的只是那里。你只能使用它,而不是整个DX。你可以使用版本9或10.它很快:)

#include <D3DX9Math.h>

1
2017-10-23 08:35





有很多选择 Mathtools.net面向对象的数字 还列出了一些可能适合您的软件包。因为我不确定你到底在做什么(你需要很多优化的线性代数吗?或者简单的操作是否足够?),很难更具体。

一般来说, 矩阵模板库 很好的想法。如果你需要一些严肃的线性代数咕噜声,你应该看看 BLAS 和 LAPACK


0
2017-10-13 21:03





你可能还想看一下 Armadillo C ++库


-1
2017-10-09 05:39



为什么在特别要求c库时你会推荐一个c ++库? - xaxxon