SVD算法实现

发布于 2024-08-27 05:37:54 字数 39 浏览 3 评论 0原文

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

Does anyone know good scalable implementation of SVD on C# for very big matrix?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤独岁月 2024-09-03 05:37:54

ILNumerics.net 似乎还有 SVD 等功能。

功能列表:

框架

.NET 1.1、.NET 2.0、
即将推出:mono 1.2.3

语言

所有 CLI 均符合:C#(推荐),
托管 C++、Visual Basic ...

数组对象

* 完整的 OO 类设计
* 通用类型容器类
* 任意数组维度的单个对象:标量、向量、矩阵、n维数组
* 完全支持灵活的数组修改:子数组/创建、串联、维度移除、序列化
* 自动引用管理:仅在确实需要时才复制内存
* 支持单元格和逻辑数组

数字

* 支持所有数字类型作为数组元素: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,英特尔:MKL,通用:netlib
* 自动检测

代数函数

<前><代码>* 绝对值
*阿科斯
* 添加
* 全部
* 任何
*阿辛
* (更多的...)

线性代数

* 矩阵乘法、-逆、-伪逆
* 线性方程求解器
* 分解:LU、QR、SVD、Cholesky
* 特征值、特征向量

傅里叶变换

<前><代码>* 1,2,3...n 维
* 向前变换向后
* 支持的库:Intel MKL、AMD ACML、FFTW3
* 100% 倍频程/Matlab/Scilab 兼容接口

排序

* 字符串排序(字典排序、桶排序)
* 数值数据排序(快速排序)
* 任意用户定义类型的通用排序
  通过可定义的键映射器(桶排序)

错误处理

* 类型异常

算法基类

* 同步/异步
* 可轻松扩展用户定义的派生算法
* 完全兼容Windows.Forms.Control的多线程事件

支持

可视化

* 绘图面板,派生自 Windows.Forms.Control
* 绘图对话框
* 1D、2D、3D 数据图
* 基于OpenGL。 (DirectX:已弃用)
* 高度可配置的图表/图形属性
* 自动用户交互:旋转、缩放、自动轴缩放

其他

* Visual Studio 2005(R) AddIn:扩展监视工具窗口
* 从 Matlab(R) *.mat 文件导入/导出
* 语法与 Matlab(R) 高度兼容(函数命名、参数)
* 确定扩展机器特性、数值常数
* 内存池:自动回收大对象

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
放我走吧 2024-09-03 05:37:54

我们在“大”矩阵 (4000x4000) 上非常成功地使用了 NAG 库

它不是托管代码,但使用 P/Invoke 我们没有遇到任何问题。

有适用于 32 位和 64 位 Windows 的版本(还有一些 UNIX 变体)。还有特殊的 MKL(Intel 数学核心库)和 AMCL(AMD 数学核心库)版本,它们应该可以更好地在 x64 系统上使用多个处理器。

如果这是一个问题的话,它也不是免费的。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文