NMath是一个适用于所有.NET语言,如C#、Visual Basic、F#和.NET的数学库,它包含了.NET平台上的面向对象数字计算的基础类。我们将以连载的形式向大家介绍NMath的实用教程。本节展示在NMatht数学库中的矩阵类函数。
NMath矩阵类是在返回IEnumerator对象时,会提供的标准.NET GetEnumerator()方法。
例:
代码示例 - C#
int rows = 13,cols = 3; var A = new DoubleMatrix(rows,cols,0,.25); IEnumerator elements = A.GetEnumerator(); var data = new double [rows * cols]; i = 0; while(elements.MoveNext()){
data [i ++] =(double)elements.Current; }
代码示例 - VB
Dim Rows As Integer = 13
Dim Cols As Integer = 3
Dim A As New DoubleMatrix(Rows, Cols, 0.0, 0.25)
Dim Elements As IEnumerator = A.GetEnumerator()
Dim Data(Rows * Cols) As Double
Dim I As Integer = 0
While Elements.MoveNext()
I += 1
Data(I) = CType(Elements.Current, Double)
End While
注意:IEnumerator 上的Current属性会返回集合中的当前对象,所以必须将其强制转换为适当的类型。NMath 还提供自定义strongly-typed示例:IFloatEnumerator, IDoubleEnumerator,IFloatComplexEnumerator和IDoubleComplexEnumerator,这种形式的出现可以避免自己制作时出现的错误。
例:
代码示例 - C#
int rows = 13, cols = 3;
var A = new DoubleMatrix( rows, cols, 0, .25 );IDoubleEnumerator elements = A.GetDoubleEnumerator();
var data = new double[rows*cols];
i = 0;
while ( elements.MoveNext() )
{
data[i++] = elements.Current; // No need to cast to double
}
代码示例 - VB
Dim Rows As Integer = 13
Dim Cols As Integer = 3
Dim A As New DoubleMatrix(Rows, Cols, 0.0, 0.25)
Dim Elements As IDoubleEnumerator = A.GetDoubleEnumerator()
Dim Data(Rows * Cols) As Double
Dim I As Integer = 0
While Elements.MoveNext()
I += 1
Data(I) = Elements.Current ' No need to cast to Double
End While