简体   繁体   English

SVD算法实现

[英]SVD algorithm implementation

对于非常大的矩阵,有没有人知道C#上SVD的良好可扩展实现?

ILNumerics.net seems to have SVD among other things. ILNumerics.net似乎还有其他的SVD。

Feature list: 功能列表:

Frameworks 构架

.NET 1.1, .NET 2.0, available soon: mono 1.2.3 .NET 1.1,.NET 2.0,即将推出:mono 1.2.3

Languages 语言

all CLI conform: C# (recommended), managed C++, Visual Basic ... 所有CLI都符合:C#(推荐),托管C ++,Visual Basic ......

Array objects 数组对象

 * Full OO class design * Generic typed container classes * single object for arbitrary array dimensions: scalar, vector, matrices, n-dim arrays * full support for flexible array modification: subarray-/ creation, concatenation, dimension removal, serialization * automated reference management: copy memory only if really needed * support for cells and logical arrays 

Numerics NUMERICS

 * Supports all numeric types as array elements: double, float, complex, fcomplex, int16, int32, 

int64, uint16, uint32, uint64, char, byte, bool * operator overloads (A + B,...) * static operator functions (fe Add(a,b)) * support for special numeric states (NaN, +/-Inf) int64,uint16,uint32,uint64,char,byte,bool *运算符重载(A + B,...)*静态运算符函数(fe Add(a,b))*支持特殊数字状态(NaN,+ / - 天道酬勤)

Processor specific optimizations 特定于处理器的优化

 * BLAS, LAPACK * AMD: ACML, Intel: MKL, general: netlib * Automated detection 

Algebraic functions 代数函数

 * abs * acos * add * all * any * asin * (more...) 

Linear algebra 线性代数

 * matrix multiply, -inverse, -pseudo inverse * linear equation solver * decompositions: LU,QR,SVD,Cholesky * eigenvalues, eigenvectors 

Fourier transforms 傅里叶变换

 * 1,2,3...n dimensional * transforms forward & backwards * supported libraries: Intel MKL, AMD ACML, FFTW3 * 100% octave/Matlab/Scilab compatible interface 

Sorting 排序

 * Sorting of strings (lexicographical, bucket sort) * Sorting of numeric data (quick sort) * generic sorting of arbitrary user defined types by definable keymapper (bucket sort) 

Error handling 错误处理

 * typed exceptions 

Algorithm base classes 算法基类

 * synchronous / asynchronous * easily extendable for user defined derived algorithms * full Windows.Forms.Control compatible multiple thread eventing 

support 支持

Visualizations 可视化

 * Plot panels, derived from Windows.Forms.Control * Plot dialog forms * 1D, 2D, 3D data plots * Based on OpenGL. (DirectX: deprecated) * Highly configurable graphs/figure properties * Automatic user interaction: rotation, zoom, auto axis scaling 

Miscellaneous

 * Visual Studio 2005(R) AddIn: extends watch tool window * import from / export to Matlab(R) *.mat files * syntax vastly compatible to Matlab(R) (function naming, parameter) * determination of extended machine properties, numerical constants * Memory pool: automated recycling of large objects 

We have used the NAG library quite successfully with "big" matrixes (4000x4000). 我们已经非常成功地使用了NAG库和“大”矩阵(4000x4000)。

It is not managed code, but using P/Invoke we had no issues. 它不是托管代码,但使用P / Invoke我们没有问题。

There are version for 32bit and 64bit Windows (also a couple of UNIX variants). 有32bit和64bit Windows版本(也有几个UNIX版本)。 And there are special MKL (Intel Math Kernel Library) and AMCL (AMD Math Core Library) versions, which are supposed to better use multiple processors on x64 systems. 还有特殊的MKL(英特尔数学核心库)和AMCL(AMD数学核心库)版本,它们可以更好地在x64系统上使用多个处理器。

It is not free either, if that is an issue. 如果这是一个问题,它也不是免费的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM