开发者

SVD algorithm implementation

Does anyone know good scalable implementation of SVD on C# f开发者_开发知识库or very big matrix?


ILNumerics.net seems to have SVD among other things.

Feature list:

Frameworks

.NET 1.1, .NET 2.0, available soon: mono 1.2.3

Languages

all CLI conform: C# (recommended), managed 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

* 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 (f.e. Add(a,b)) * support for special numeric states (NaN, +/-Inf)

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).

It is not managed code, but using P/Invoke we had no issues.

There are version for 32bit and 64bit Windows (also a couple of UNIX variants). 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.

It is not free either, if that is an issue.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜