用于.NET的矩阵库

时间:2009-05-08 15:22:20

标签: .net math matrix sparse-matrix

我正在为.NET / C#寻找一个好的(经过良好测试,功能齐全,界面友好的)矩阵库。我在这里的主要要求只是它应该是免费的(我不特别在意它是否是这种情况下的开源)并且最好支持sparse matrix操作。强制性要求是所有基本操作(例如乘法,换位,反演)以及寻找特征值和...特征向量。用于发现特征值的数值而非/以及分析方法的实现,特别是稀疏矩阵的Lanczos algorithm,将是非常优选的,因为我将要处理的矩阵非常大(长度为10,000)向上)以及方形,也相当稀疏。这么说,我可能会在那里要求一点,所以对合理完整的矩阵库的任何建议都会很棒。

现在我知道Python有一两个有用的库用于这样的任务(即NumPy / SciPy),但遗憾的是,该区域似乎缺乏.NET。

稍微搜索了以下.NET的库,我可以使用它:

但是,由于我没有使用任何这些图书馆或其他人的经验(并且没有足够的时间在任何情况下正确地检查每个图书馆),我非常感谢这里是否有人可以讨论他们的建议各种图书馆,它们的优点/缺点,特别是关于我的用途的适用性,以及它们的一般经验。

使用MatLab总是一个选项,但不是首选,因为如果我可以将矩阵数学直接与我的程序集成,那将会更方便。

9 个答案:

答案 0 :(得分:8)

编辑:

上次我评估它时并不完全,但是有很多活动,所以你也应该考虑(免费和开源)Math.NET Numerics

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


如果您需要更强大的支持,遗憾的是您真的需要进入.NET atm的商业软件包。

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

答案 1 :(得分:3)

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

  • 更好的记忆管理,因此......
  • 更快的算法
  • 使用MKL进行线性代数
  • n-dim数组类,语法类似于Matlab
  • 3D绘图控件
  • 支持32/64位
  • 支持单声道
  • Full feature list

答案 2 :(得分:2)

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

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

答案 3 :(得分:2)

另一种选择:IMSL for .NET。 CenterSpace有NMath个库 - 没有使用过它们。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

你考虑过math.net iridium吗?

http://iridium.mathdotnet.com/

答案 7 :(得分:0)

现已解散的Managed DirectX库有一些矩阵支持。

此后已被包装到Microsoft XNA中,这可能不适合您,但MDX Wikipedia article建议使用SlimDX might be okay

答案 8 :(得分:0)

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