' Evaluate the transposed matrix
' A transposed matrix is the array you get when you "rotate" a bi-dimensional
' array
'
' Example
' Dim arr(,) As Double = {{0.0, 0.1, 0.2}, {1.0, 1.1, 1.2}}
' Dim i, j As Integer
' ' print the original matrix
' Debug.WriteLine("Original matrix")
' For i = 0 To arr.GetUpperBound(0)
' For j = 0 To arr.GetUpperBound(1)
' Debug.Write(arr(i, j) & " - ")
' Next
' Debug.WriteLine("")
' Next
' ' transpose the matrix and print it
' Dim arr2(,) As Double = TransposeMatrix(arr)
' Debug.WriteLine("Transposed matrix")
' For i = 0 To arr2.GetUpperBound(0)
' For j = 0 To arr2.GetUpperBound(1)
' Debug.Write(arr2(i, j) & " - ")
' Next
' Debug.WriteLine("")
' Next
Function TransposeMatrix(ByVal arr(,) As Double) As Double(,)
Dim startRow As Integer, startCol As Integer
Dim endRow As Integer, endCol As Integer
Dim row As Integer, col As Integer
' get size of original matrix
startRow = arr.GetLowerBound(0)
endRow = arr.GetUpperBound(0)
startCol = arr.GetLowerBound(1)
endCol = arr.GetUpperBound(1)
' prepare the result matrix
Dim res(endCol, endRow) As Double
' transpose the matrix
For row = startRow To endRow
For col = startCol To endCol
res(col, row) = arr.GetValue(row, col)
Next
Next
' return the transposed result
Return res
End Function