29

我正在为 .NET/C# 寻找一个好的(经过充分测试、功能齐全且最好具有良好界面的)矩阵库。我在这里的主要要求只是它应该是免费的(在这种情况下我并不特别关心它是否是开源的)并且最好支持稀疏矩阵运算。强制性要求是所有基本操作(例如乘法、转置、求逆)以及寻找特征值和特征向量。用于发现特征值的数值而非分析方法的实现,特别是Lanczos 算法对于稀疏矩阵,将是非常可取的,因为我将要处理的矩阵非常大(长度为 10,000 以上)并且是正方形的,而且还相当稀疏。话虽如此,我可能会要求很多,所以任何关于一个相当完整的矩阵库的建议都会很棒。

现在我知道 Python 有一个或两个用于此类任务的有用库(即NumPy / SciPy),但不幸的是,该领域似乎缺乏 .NET。

经过一番搜索,我找到了以下 .NET 库,我可能会使用它们:

但是,由于我没有使用任何这些库或其他库的任何经验(并且在任何情况下都没有足够的时间来正确检查它们),如果有人可以在这里讨论他们对各种库的建议,我将不胜感激,他们的优点/缺点,特别是关于我的用途的适用性,以及他们对它们的一般经验。

求助于 MatLab 始终是一种选择,但不是首选,因为如果我可以将矩阵数学直接与我的程序集成会更方便。

4

9 回答 9

10

编辑:

上次我评估它时它并不完全在那里,但有相当多的活动,所以您还应该考虑(免费和开源)Math.NET Numerics

现在看来,他们似乎已经完成了他们的新版本,并添加了稀疏矩阵支持,以及其他好东西。


如果您想要更强大的支持,不幸的是,您确实需要使用 .NET atm 的商业包。

有两个功能非常丰富的包,它们都很好地支持矩阵。 Extreme Numerics效果很好,并且有一些非常好的功能。我还听说过有关IMSL Visual Numerics数学库的好消息。

于 2009-05-08T15:41:45.523 回答
3

试试ILNumerics:我们有一个 rel。作为开源项目的悠久历史,最近改为商业许可证以获得更好和可靠的支持。我有偏见,但这里有一个简短的功能列表:

  • 更好的内存管理,因此...
  • 更快的算法
  • 使用 MKL 进行线性代数
  • n-dim 数组类,语法类似于 Matlab
  • 3D 绘图控件
  • 支持 32/64 位
  • 支持单声道
  • 完整的功能列表
于 2012-02-28T22:45:07.760 回答
2

我过去有我们的 Mapack,发现它非常好。

虽然,我认为它没有稀疏矩阵,但它确实支持所有基本的线性代数函数。

于 2009-05-08T15:37:48.637 回答
2

另一种选择:用于 .NET 的 IMSL。CenterSpace 有NMath库——没有用过这些。

于 2009-05-08T15:42:37.423 回答
1

我在大学的一个神经网络项目中使用了 Mapack(.Net 端口而不是 COM 版本)。我无法完全记住图书馆的细节,但它完成了我需要的一切,而且使用起来也不是特别繁琐。

于 2009-05-08T15:38:40.787 回答
1

Meta.Numerics(托管在codeplex上)是一个免费包,它将计算非对称矩阵的特征值和特征向量,但它目前不专门处理稀疏矩阵。

于 2009-05-09T22:55:13.177 回答
1

你考虑过 math.net 铱星吗?

http://iridium.mathdotnet.com/

于 2009-11-05T15:13:08.973 回答
0

现已失效的托管 DirectX 库具有一些矩阵支持。

此后它已被封装到 Microsoft XNA 中,它可能不适合您,但MDX 维基百科文章推荐了一种名为SlimDX的东西,它可能没问题。

于 2009-05-08T15:34:06.510 回答
0

关于 .NET 和 Python,您可以使用 IronPython。但是,您还需要Ironclad以使 SciPy 和 NumPy 与 IronPython 一起工作。

于 2009-07-25T15:25:55.867 回答