NMath应用教程:如何通过代码访问底层数据和应用函数

 本文主要通过示例代码,讲述原生C#数学函数库NMath,如何编写代码以访问底层数据和应用函数。

访问底层数据

  针对需要原生和遗留代码接口的应用程序,NMath向量和矩阵的类可用作一个指针来获取底层数据。这些类拥有一个叫DataBlock的属性,这个属性可以返回<Type>DataBlock对象。<Type>DataBlock包括一个数组和一个偏移量,让你可以通过其获取底层数据,例如:

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是一个函数:

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类提供了许多常用的数学函数。接下来会详细介绍,敬请关注。

转载于:https://my.oschina.net/u/2003526/blog/379191

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值