HOME_zh - vorcyc/Vorcyc.Mathematics GitHub Wiki
Vorcyc.Mathematics
A high performance math library.
0.10.24
:ledger:完整导航
Vorcyc® Mathematics 是一套主要面向.NET的数学库,旨在充分利用.NET的最新特性并提供高性能和准确度的数学函数和运算。它是用C#编写的,可以在任何.NET应用程序中使用。
主要意义有:
- 充分利用.NET最新特性以获得最佳性能。如:
- 使用SIMD加速的CPU串行计算、并行计算、泛型数学。
- 使用 Span<T> 替代 数组作为参数;使用Memory<T> 作为字段。
- 使用托管指针和内存池以提高性能。
- 补充.NET内建常用数学函数的不足。
- 提供额外的数学算法和运算。
面向.NET版本:.NET 10.0及以上。
This package targets a minimum of .NET 10.
特性
- SIMD加速的CPU串行计算
- 并行计算(
ComputingContext) - 泛型数学
GPU / CUDA 策略:主包 不包含 GPU 加速,已移除 ILGPU 与实验性 CudaFFT;默认仅在 CPU 上计算(ComputingContext)。原因、替代方案与未来扩展原则见专门说明。
:blue_book:GPU 策略说明
依赖项
- System.Numerics.Tensors: 版本 10.0.9
核心模块:本模块提供了基本的数学运算、常用函数和扩展方法,涵盖数组操作、进制转换、位运算、组合数学、常量定义、数值映射、可固定数组、随机数生成、三角运算和多种数学函数。
:blue_book:手册
计算上下文(ComputingContext):轻量级 CPU 执行策略(标量 / SIMD / 并行 / 自动),支持 context 参数与 ComputingScope;已接入 FFT、统计、矩阵/向量、曲线拟合、批 DL、MFCC 并行、Mel 音频前端及 Trainer.Fit* 训练入口。含数值等价性测试(见手册「验证与测试」)。
:blue_book:手册
深度学习模块:0.9 提供可微分训练栈:BatchTensor(NHWC)、BatchSequential / Sequential 模型容器、20+ 批处理层(卷积、Depthwise、LayerNorm、Dropout、残差/SE 等)、Trainer.FitBatchSequential / FitCnnMlp、IBatchLoss、Adam/SGD 优化器,以及 ModelSerializer v3(架构元数据 + 权重)。遗留静态 Layers 类仍保留。
:blue_book:手册
线性代数模块: :blue_book:手册
另含 SVM、KNN 回归、聚类(DBSCAN、GMM、KMeans 等)、降维(PCA 样本外 Transform 自 0.10.18、t-SNE、LDA)、盲源分离(ICA / FastICA)、Isolation Forest 异常检测与 JSON 快照(0.10.11)、GPR 预测标准差/方差(0.10.10)、曲线拟合 SIMD 大 N StackOverflow 修复(0.10.16)、经典拟合 CancellationToken(0.10.17)、扩展模型 JSON 持久化与多种距离度量。可运行示例见 Examples/MachineLearning_example/。
:blue_book:手册
信号处理模块:该模块提供了丰富的信号处理功能,涵盖了音效处理、特征提取、滤波(0.10.18 起 IirFilter<T> / FirFilter<T> / ZiFilter<T> / FDA 留在 T;0.10.20 起空 zpk ZpToTf([]) → [1])、傅里叶变换(0.10.18 起 Fft<T> / RealFft<T>)、卷积(0.10.19 起 Convolver<T> / Operation.Convolve<T>)、常用操作、信号定义与操作、变换操作(0.10.18 起模态分解样本缓冲留在 T)和窗函数等多个方面。0.9 起以 Signal / SignalSegment 作为时域信号主 API(float 采样率、零拷贝切片、ReadOnlySpan 热路径);DiscreteSignal 保留但已标记过时。详见 信号定义和相关操作。
:blue_book:手册
数值模块:本模块提供了多个与数值计算相关的类型。这些类型包括整数、浮点数、复数、有理数、分数等。这些类型提供了高精度的数值计算功能,并且可以与其他数值类型进行转换。
:blue_book:手册
统计模块:用于对数值数据进行统计分析,支持多种数据结构和数值类型。它包括查找极值、计算总和、平均值、方差,以及识别最大值和最小值及其索引的方法。该类在可能的情况下利用硬件加速以优化性能。
:blue_book:手册
微积分模块:提供了全面的计算工具,包括极限计算、积分计算、导数计算、泰勒级数展开、傅里叶级数展开、龙格-库塔法求解微分方程和牛顿-拉夫逊法求解非线性方程。
:blue_book:手册
扩展库
FFTW 扩展(独立 NuGet 包:Vorcyc.Mathematics.Extensions.FFTW,0.10.24;FFTW API 无变更):基于 FFTW 本地库的 .NET 封装,提供高性能的离散傅里叶变换。支持单精度与双精度的 1D / 2D / 3D / N-D 复数到复数 (C2C)、实数到复数 (R2C)、复数到实数 (C2R) 以及实数到实数 (R2R) 变换。还包括基于 FFT 的希尔伯特变换、包络计算以及将实验性信号类型转换到频域的扩展方法。
:blue_book:手册
示例
Examples/ 目录提供独立可运行工程,演示主库在真实任务中的用法(不随 NuGet 发布)。当前包含:Audio_example(NAudio 读/写 WAV、MFCC 分析、训练与推理);Core_example(矩阵乘、Span 统计、VectorSpan、ComputingContext 作用域);MachineLearning_example(分类/回归流水线);Colorization_example(图像上色,Emgu.CV);SignalProcessing_example(Signal、FFT、MFCC、滤波与音效);DeepLearning_example(训练、序列化、曲线拟合);Calculus_example(积分、ODE、求根、级数)。
:blue_book:手册