.net NET的矩阵库

.net NET的矩阵库,.net,math,matrix,sparse-matrix,.net,Math,Matrix,Sparse Matrix,我正在为.NET/C#寻找一个好的(经过良好测试、功能齐全、理想的界面)矩阵库。我在这里的主要要求只是它应该是免费的(我并不特别关心它是否是开源的),最好是支持操作。强制性要求是所有基本操作(例如乘法、换位、求逆)以及查找特征值和特征向量。由于我将要处理的矩阵非常大(长度为10000以上),并且是正方形,而且也相当稀疏,因此最好采用数值而不是/以及分析方法来发现特征值,尤其是稀疏矩阵。说到这里,我可能会要求更多,所以任何关于一个合理完整的矩阵库的建议都是非常好的 现在我知道Python有一个或两

我正在为.NET/C#寻找一个好的(经过良好测试、功能齐全、理想的界面)矩阵库。我在这里的主要要求只是它应该是免费的(我并不特别关心它是否是开源的),最好是支持操作。强制性要求是所有基本操作(例如乘法、换位、求逆)以及查找特征值和特征向量。由于我将要处理的矩阵非常大(长度为10000以上),并且是正方形,而且也相当稀疏,因此最好采用数值而不是/以及分析方法来发现特征值,尤其是稀疏矩阵。说到这里,我可能会要求更多,所以任何关于一个合理完整的矩阵库的建议都是非常好的

现在我知道Python有一个或两个用于此类任务的有用库(即/),但不幸的是.NET在这方面似乎缺乏

搜索一下.NET的以下库,我可能会用到这些库:

  • 卢茨-罗德氏
  • (代码项目)
  • (代码项目)
但是,由于我没有任何使用这些图书馆或其他图书馆的经验(而且在任何情况下都没有足够的时间正确检查每个图书馆),我非常感谢在座的任何人能够讨论他们关于各个图书馆的建议,他们的优点/缺点,特别是关于适合我的使用,以及他们的一般经验


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

现在已经不存在的托管DirectX库有一些矩阵支持


这已经被包装到Microsoft XNA中,它可能不适合您,但是微软推荐了一种叫做它的东西。

我以前有过我们的Mapack,发现它非常好

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

我在大学的一个神经网络项目中使用了Mapack(.Net端口,而不是COM版本)。我记不清该库的详细信息,但它做了我所需要的一切,而且使用起来并不特别繁重。

编辑:

上次我对它的评价不太高,但是有相当多的活动,所以你也应该考虑(免费和开源)。 现在看来,他们似乎已经完成了他们的新版本,并添加了稀疏矩阵支持,以及其他好东西


如果您想要更强大的支持,不幸的是,您确实需要进入.NETATM的商业软件包


有两个功能非常丰富的包,它们都很好地支持矩阵。非常好用,并且有一些非常好的特性。我也听说了关于数学库的好消息。

另一种选择:。CenterSpace有库,但没有使用这些库。

(托管于)是一个免费软件包,将计算非对称矩阵的特征值和特征向量,但它目前没有专门处理稀疏矩阵。

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

您考虑过math.net iridium吗

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

  • 更好的内存管理,因此
  • 更快的算法
  • 将MKL用于线性代数
  • n-dim数组类,语法类似于Matlab
  • 三维打印控件
  • 支持32/64位
  • 支持单声道

不幸的是,它们不是我真正的选择,因为它们只支持4x4矩阵大小!恐怕我需要的东西可以处理1000行/列的矩阵,理想情况下可以有效地处理稀疏的矩阵(例如,当涉及乘法时)。这两种都是商业化的。很遗憾,因为它们看起来像是相当不错的图书馆…@Noldorin:不久前我在.NET空间做了一次相当彻底的搜索。所有好的、健壮的矩阵lib都相当商业化(至少在2008年初是这样)。@Reed:是的,这一点都不会让我感到惊讶。。。无论如何,我相信你的话。我想知道使用Mapack库并在其上实现Lanczos算法是否可以完成这项工作。@Noldorin:事实上,我认为dnAnalytics在.NET世界中比Mapack更好-请参阅我的编辑以获取链接。是的,我开始怀疑你是对的。作为一名大学生,商业套餐恐怕不是一个真正的选择。不过,还是要谢谢你的建议。@Noldorin:我会写信给极端数字学院的Jeremy,问他是否可以给你一份研究许可证,因为你是一名学生,而且它没有商业用途。这是一家小公司,老板看起来相当友好,反应也很快。(他在支持、售前等方面做得很好)没关系@诺尔多林:我只是记得,而且还加上了。这可能是最好的非商业化选择。@Reed:在dnAnalytics中找到它真是太好了。:)我同意,它看起来很容易比Mapack好,特别是考虑到对稀疏矩阵的支持。我现在很想这么做,要么在上面实现Lanczos算法,要么最坏的情况下将矩阵导出到Matlab,让它为我实现。如果这些都不起作用,我肯定可以尝试用极限数字与杰里米取得联系。@里德:谢谢你不断的建议和评论。答案是你的。:)是的,似乎没有支持稀疏矩阵的。不过,还是要感谢你的建议。大家的共识似乎是(至少j