本文主要經過示例代碼,講述原生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類提供了許多經常使用的數學函數。接下來會詳細介紹,敬請關注。指針