Imports System.IO Imports System.Threading Imports System.Globalization Imports CenterSpace.NMath.Core Namespace CenterSpace.NMath.Examples.VisualBasic A .NET example in Visual Basic showing simple general sparse matrix functionality. Module SparseMatrixExample Sub Main() Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US", False) Console.WriteLine() Dim A As DoubleComplexCsrSparseMatrix = ReadComplexMtxFile() Console.WriteLine("A is a {0}x{1} complex-valued sparse matrix with {2} nonzero entries", A.Rows, A.Cols, A.Data.NumberNonZero) Dim AHA As DoubleComplexCsrSparseMatrix = MatrixFunctions.ConjTransposeProduct(A, A) Console.WriteLine("The conjugate transpose product of A with itself has {0} nonzero entries.", AHA.Data.NumberNonZero) Dim V As DoubleComplexVector = New DoubleComplexVector(A.Cols, 1) Dim Av As DoubleComplexVector = MatrixFunctions.Product(A, V) Console.WriteLine("The product of a with a dense vector, v, has length {0}", Av.Length) Console.WriteLine() Console.WriteLine("Press Enter Key") Console.Read() End Sub Private Function ReadComplexMtxFile() As DoubleComplexCsrSparseMatrix Dim Reader As New StreamReader(New FileStream("sparseMatData.mtx", FileMode.Open)) Dim Line As String = Reader.ReadLine() Dim Delimiters(1) As Char Delimiters = New Char() {" "} Dim LineCount As Integer = 0 Dim Rows As Integer = 0 Dim Cols As Integer = 0 Dim NumberNonzero = 0 Eat comments. While (Line.Contains("%")) Line = Reader.ReadLine() End While Dim CoordValues As New Dictionary(Of IntPair, DoubleComplex) While (True) If (Line Is Nothing) Then Exit While End If If (LineCount = 0) Then First non-comment, read rows, columns, and number nonzero Dim MatrixInfo() As String = Line.Split(Delimiters, StringSplitOptions.RemoveEmptyEntries) If (MatrixInfo.Length <> 3) Then Throw New Exception("Invalid MTX file") End If Rows = Int32.Parse(MatrixInfo(0)) Cols = Int32.Parse(MatrixInfo(1)) NumberNonzero = Int32.Parse(MatrixInfo(2)) Else Line should have 4 entries, a row index, a column index, real and imaginary parts of the value. Dim RowColValue() As String = Line.Split(Delimiters, StringSplitOptions.RemoveEmptyEntries) If (RowColValue.Length <> 4) Then Throw New Exception("Invalid MTX file" + Line) End If Dim Row As Integer = Int32.Parse(RowColValue(0)) - 1 mtx files use one-based indexing. Dim Col As Integer = Int32.Parse(RowColValue(1)) - 1 Dim Re As Double = Double.Parse(RowColValue(2)) Dim Im As Double = Double.Parse(RowColValue(3)) CoordValues.Add(New IntPair(Row, Col), New DoubleComplex(Re, Im)) End If LineCount = LineCount + 1 Line = Reader.ReadLine() End While Return New DoubleComplexCsrSparseMatrix(CoordValues, Cols) End Function End Module End Namespace← All NMath Code Examples