本文主要经过示例代码,讲述原生C#数学函数库NMath,如何编写代码以访问底层数据和应用函数。html
针对须要原生和遗留代码接口的应用程序,NMath向量和矩阵的类可用做一个指针来获取底层数据。这些类拥有一个叫DataBlock的属性,这个属性能够返回<Type>DataBlock对象。<Type>DataBlock包括一个数组和一个偏移量,让你能够经过其获取底层数据,例如:数组
?app
1
2
3
4
5
6
7
8
|
DoubleVector v =
new
DoubleVector( 12, 0, 1 );
DoubleDataBlock dataBlock = v.DataBlock;
unsafe
{
double
*ptr = &(dataBlock.Data[dataBlock.Offset]);
// Do with *ptr something here
}
|
NMath提供了方便的方法把一元和二元函数应用到向量或矩阵对象的元素中。经过Apply()返回一个新的对象,其内容是给定函数应用于矩阵或向量元素的结果。Transform()可以修改矩阵或向量对象中应用的函数元素。根据这个原理,咱们能够来看如下例子。假设MyFunc是一个函数:函数
?spa
1
2
3
4
5
6
7
8
9
|
// Construct a delegate for MyFunc
Func<
double
,
double
> MyFuncDelegate =
new
Func<
double
,
double
>( MyFunc );
// Construct a new vector whose values are the result of applying
// MyFunc to the values in vector v. v remains unchanged.
DoubleVector w = v.Apply( MyFuncDelegate );
// Transform the contents of v.
v.Transform( MyFuncDelegate );
v == w;
// true!
|
NMath在NMathFunctions类提供了许多经常使用的数学函数。接下来会详细介绍,敬请关注。指针