4

非常に大きな行列に対するC#でのSVDのスケーラブルな実装を知っている人はいますか?

4

2 に答える 2

1

ILNumerics.netには特に SVD があるようです。

機能リスト:

フレームワーク

.NET 1.1、.NET 2.0、まもなく利用可能: mono 1.2.3

言語

すべての CLI 準拠: C# (推奨)、マネージ C++、Visual Basic ...

配列オブジェクト

* 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

数値

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

int64、uint16、uint32、uint64、char、byte、bool * 演算子のオーバーロード (A + B、...) * 静的演算子関数 (fe Add(a,b)) * 特殊な数値状態のサポート (NaN、+/- Inf)

プロセッサ固有の最適化

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

代数関数

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

線形代数

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

フーリエ変換

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

並べ替え

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

エラー処理

* typed exceptions

アルゴリズム基本クラス

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

サポート

可視化

* 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

その他

* 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
于 2010-03-31T15:55:07.633 に答える
0

「大きな」行列 (4000x4000) でNAG ライブラリをうまく使用しました。

これはマネージ コードではありませんが、P/Invoke を使用しても問題はありませんでした。

32 ビットおよび 64 ビットの Windows 用のバージョンがあります (UNIX のバリエーションもいくつかあります)。また、x64 システムで複数のプロセッサをより適切に使用するための特別な MKL (Intel Math Kernel Library) および AMCL (AMD Math Core Library) バージョンもあります。

それが問題である場合、それも無料ではありません。

于 2010-04-01T17:26:14.723 に答える