ILNumerics 是一個.NET的數值運算資料庫。它簡化了各種數學演算法的使用,優化到了C和FORTRAN的速度。現在它提供了一個支援“任何CPU”的NuGet包。它的獨立版本ILView,已經宣佈支持REPL的3D視覺化工具,可以運行在.NET/Windows和 Mono/Linux環境裡。並可支援演算法(creation of algorithms)、可視化科學計算和各種專業的應用程式。
ILNumerics還具備超強繪圖功能,如果希望在程式中加入類似Matlab繪圖功能的話,那麼ILNumerics會是不錯的選擇!
- Excellent performance: catch up with native C libraries
- Built in visualization: dynamic 3D scene graphs and scientific plotting
- Intelligent n-dimensional generic arrays
- Large collection of elementary functions, LAPACK, FFT
- Toolboxes for machine learning and statistics
- Extensible: write custom functions and modules
- Straightforward syntax: simple transition from MATLAB or Octave
- Compatibility: compile once - deploy everywhere
- Availability: .NET is preinstalled on all Windows® and most Linux Systems
Core Features
The combination of convenient syntax and high performance is provided by ILNumerics' generic Array Classes. ILNumerics features a large collection of computational functions that serve as the base of higher level algorithms.
Array Classes
ILNumerics is based on efficient generic array classes - capable of serving as scalar, vector, matrix or n-dimensional arrays, especially supporting real and complex elements in single and double precision and integer elements, where applicable. Arrays exist as dense arrays, logical arrays and cells.
The API has been designed with the most convenient syntax in mind. Language features are tightly oriented towards popular mathematical scripting languages. Efficient subarray creation, array modifications and overloaded operators allow for an intuitive syntax - without any performance sacrifice.
Built In Functions
For numerical arrays ILNumerics provides a large collection of computational functions covering a wide range of numeric algebra. Included are trigonometric functions, all important matrix decompositions, equation solver, eigenvalues, efficient sorting and integral transformations. They serve as the fundamental base of higher level algorithms in ILNumerics.
Algebraic Functions
All important trigonometric functions are included in the collection of built in functions: cos, sin, tan, the inverse trigonometric functions asin, acos, atan2 and its hyperbolic counterparts sinh, cosh, and tanh. A large collection of common array manipulation functions is provided, which includes abs, all, and, any, cart2pol, ceil, cell, conj, diff,empty, exp, eye, find, fix, fliplr, flipud, floor, ge, gt, horzcat, imag, ccomplex, ind2sub, isempty, isequal, isequalwithequalnans, isfinite, isinf, isnan, isneginf, isnull, isnullorempty, isposinf, le, load, log, log10, logspace, lt, max, maxall, mean, meshgrid, min, minall, mod, multiply, neq, ones, or, pol2cart, pow, prod, r, rand, randn, randperm, real, real2complex, real2fcomplex, repmat, reshape, round, set, sign, sort, sqrt, sub2ind, subtract, sum, sumall, trace, vec, vertcat, xor, and zeros.
Linear Algebra
Processor specific BLAS libraries highly speed up all matrix computations. ILNumerics relies on Intels® performance optimized Math Kernel Library (MKL) as reliable LAPACK implementation. Custom implementations can get incorporated. Out of the box, all standard matrix decompositions (SVD, QR, LU, PINV, CHOL, ...), linear equation solvers, generalized eigenvalues and all common miscellaneous matrix operations like determinants and rank retrieval are provided.
Fourier Transforms
State of the art FFT routines enable the full spectrum of fourier transforms for single and double precision arrays: real and complex transforms, forward and backward transforms and transformations in one, two or n-dimensions. FFTs rely on the MKL internally. Prepared interfaces exist for FFTW and for AMDs ACML.
Sorting
Based on the quick sort algorithm, sorting is possible for numerical arrays along arbitrary dimensions, with optional index retrieval. ILNumerics sorting easily beats the speed of the .NET implementation (Array.Sort) by factors.
Performance
While the .NET runtime does an excellent job cleaning up small objects, large numerical arrays cause a serious hit on the GC if created frequently. ILNumerics collects memory in a pool for subsequent requests. The memory footprint of the application decreases drastically.
Execution Speed
ILNumerics mostly runs several times faster than other popular mathematical frameworks. The speed is comparable to native C libraries. This is achieved by saving time in GC, increased memory locality of the data, profound loop optimizations and parallelism.
Monitoring
A number of ILNumerics performance counters is exposed to the Windows Performance Monitor. They give detailed insight into the runtime behaviour, helping to localize possible areas of concern and to gather runtime statistics. The whole spectrum of sophisticated commercial profiling tools is available as well.
Visualizations
Graphics are already inherently built into ILNumerics. All output is based on a dynamic 3D scene graph implementation. It allows the creation of complex interactive visualisations and the enhancement and re-configuration of existing scenes. ILNumerics scenes can be hosted inside a Windows.Forms.Control to add interactivity or used for offscreen rendering without any visual controls. The export into vector and pixel graphics is supported.
Large scenes profit from a transparent memory management based on automatic buffer sharing and reuse. Buffer based rendering provides the fastest user experience on recent graphics cards supporting OpenGL 3.1. For older hardware a GDI+ based software renderer ensures compatibility.
- Full featured dynamic 3D scene graph
- Creation of extensible custom plots
- Support for light and transparency
- Support for clipping and picking
- Export to vector and pixel formats
- Advanced labeling options
- Advanced programmable mouse interaction
- MVC pattern, reusable scenes
- Multithreading ready
- Clean OO design
Plot controls
ILNumerics comes with a number of scientific plots: 1D, 2D and 3D line and scatter plots, 3D surfaces and contour plots. The full spectrum of configurable helpers exist: markers, legends, colorbars, labels. The core of the plotting section is a plot cube implementation. It brings convenient labeling and hosting of arbitrary plots in 3 dimensions. Consistent logarithmic axis scaling is supported as well as clipping and tiling and the enhancement of plots with custom scene graph components.
In ILNumerics, several Toolboxes for Machine Learning and Statistical Functions are included.
Machine Learning
A number of machine learning algorithms is provided. Every algorithm is optimized for both: memory consumption and execution speed. The range of algorithms spreads from supervised to unsupervised algorithms and each provides a convenient variable parameter list.
- Expectation Maximization (em) - estimate centers and covariance of n multivariate normal distributions according to the samples
- k Nearest Neighbors (knn) - find the k nearest neighbors for every input sample, handles several distance metrics
- Ordinary Least Squares Regression (ridge_regression) - creates a model of the sample data which can be used as (biased) predictor
- Kernel Ridge Regression (krr) - kernelized version of ridge regression, creates and applies the model with a number of different kernels
- Principal Component Analysis (pca) - finds orthogonal directions used to reduce the dimensionality of the data
- k Means Clustering (kmeansclust) - splits the data into a given number of clusters
Statistical Functions
The following common functions for statistical operations are included:
- cov - covariance matrix
- mean
- median
- mvnpdf - probability density function of a multivariate normal distribution
- mvnrnd - choose samples from a multivariate normal distribution
- rand - choose uniformly distributed samples
- randn - choose normally distributed samples
- randperm - permute integers randomly
- std - standard deviation
- var - variance
- select - select n-th smallest element
- nansum - sum ignoring nan values
- nanmean - mean ignoring nan values
ILNumerics Array Visualizer 工具
ILNumerics Array Visualizer is a graphical watch window for Visual Studio®. It helps to debug large and big data in technical applications. Its visual representation of arbitrary data helps in protoyping your algorithms, to find bugs quickly, and to keep the overview of your data.
ILNumerics Visualization Engine 工具
The data Visualization Engine of ILNumerics adds sophisticated 2D and 3D visualizations to your .NET applications in C# and Visual Basic. Create production ready plots and graphs from your data with our plotting templates or custom design your graphs according to your needs. We offer a wide range of plotting options including 2D and 3D data visualizations with high and low level objects available. Our advanced interactive plots allow you to use graphs as GUIs that seamlessly integrate with the .NET framework.
ILNumerics Computing Engine 工具
Focus on the math - we do the rest! The ILNumerics Computing Engine has been developed for scientists and engineers. We spent a lot of effort to make implementation of your mathematical algorithms as simple and efficient as possible while retaining flexibility and performance.
- Transform your Matlab or Octave algorithms in no time and benefit from a substantial speed-up
- Comprehensive selection of optimized toolboxes for interpolation, statistics, optimization.
- Exploit multi-core hardware with our built-in parallel functions.
- Code once and run your executable on any type of hardware
- No IT expert knowledge needed
The ILNumerics Computing Engine sits on top of the .NET framework and can be used with any .NET language as a common part of your application. We recommend C# due to its unique short syntax. Resulting modules are pure .NET assemblies. No special integration is necessary. They can be run on any machine supporting .NET or mono (support is provided for .NET (Windows) only).
ILNumerics Computing Engine algorithms target "AnyCPU": once built they run on 32 and 64 bit platforms without recompilation. Native packages (MKL, HDF5, etc.) are maintained and provided where applicable.
System Requirements
ILNumerics Ultimate VS requires at least .NET Framework 4.6.1 or .NET Core 2.1 (recommended: .NET Core 3.1 LTS / .NET 5 or newer). All operating systems are supported where .NET runs on. On Windows, x64, we provide platform optimized binaries. Visual Studio Extension (optional): Visual Studio 2017 or later is supported. We recommend building in Visual Studio - but this is not required. Building on command line (msbuild) works fine. Currently, building your projects requires the Windows platform.