As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I'm looking for a good (well-tested, fully-featured, and ideally with a nice interface) matrix library for .NET/C#. My main requirements here are only that it should be free (I don't particularly care whether it's open-source in this case) and preferably support sparse matrix operations. The obligatory requirements are all the basic operations (e.g. multiplication, transposition, inversion) as well as finding eigenvalues & eigenvectors. Implementation of a numerical rather than/as well as analytical methods for discovery of eigenvalues, particularly the Lanczos algorithm for sparse matrices, would be highly preferable since the matrices I'm going to be dealing with are very large (lengths of 10,000 upwards) as well as square, and also reasonably sparse. Saying that, I could be asking for a bit much there, so any suggestions for a reasonably complete matrix library would be great.
Now I'm aware that Python has one or two useful libraries for such tasks (namely NumPy / SciPy ), but .NET unfortunately seems to be lacking in the area.
A bit of searching turned up the following libraries for .NET, which I could potentially used:
- Lutz Roeder's Mapack
- DotNetMatrix (CodeProject)
- C# Matrix Library (CodeProject)
However, since I have had no experience whatsoever using any of these libraries or others (and not exactly enough time to check each of them out properly in any case), I would very much appreciate if anyone here could discuss their recommendations regarding the various libraries, their pros/cons particularly with regards to suitability for my uses, and their general experiences with them.
Resorting to MatLab is always an option, but not a preferred one, as it would be much more convenient if I could integrate the matrix math directly with my program.
9条答案
按热度按时间lo8azlld1#
编辑:
上次我对它进行评估时,它还不太存在,但已经有了相当多的活动,所以你也应该考虑一下(免费和开源)Math.NET Numerics。
现在看来,他们似乎已经完成了他们的新版本,并增加了稀疏矩阵支持,以及其他不错的东西。
如果您希望获得更强大的支持,那么不幸的是,您确实需要进入. NETatm的商业包。
有两个功能非常丰富的包,它们都很好地支持矩阵。Extreme Numerics工作得很好,并且有一些非常好的功能。我还听说了关于IMSL Visual Numerics数学库的一些非常好的事情。
ssgvzors2#
尝试ILNumerics:我们有一个长期的开源项目历史,最近为了更好和可靠的支持而改为商业许可证。我有偏见,但这里有一个简短的功能列表:
c6ubokkw3#
我有我们的Mapack在过去,发现它是非常好的。
虽然,我不认为它有稀疏矩阵,但它确实支持所有基本的线性代数函数。
llycmphe4#
另一种选择:IMSL for .NET。CenterSpace具有NMath库--尚未使用这些库。
zdwk9cvp5#
我在大学的一个神经网络项目中使用了Mapack(.Net端口,而不是COM版本),我记不清这个库的细节了,但它做了我需要它做的一切,而且使用起来并不特别麻烦。
fdbelqdn6#
您是否考虑过math.net铱?
http://iridium.mathdotnet.com/
cunj1qz17#
Meta.Numerics(托管在codeplex上)是一个免费的软件包,它可以计算非对称矩阵的特征值和特征向量,但目前它还没有专门处理稀疏矩阵。
mepcadol8#
关于.NET和Python,你可以使用IronPython,但是,你还需要Ironclad来使SciPy和NumPy与IronPython一起工作。
wswtfjt79#
现在已经不存在的托管DirectX库有一些矩阵支持。
这已经被打包到Microsoft XNA中,这可能不太适合您,但是MDX Wikipedia article推荐了一种称为SlimDX的东西,即might be okay。