Golang : Create matrix with Gonum Matrix package example
Here is an example of how to create and display matrix properly in Golang with Gonum package. Nothing special in this tutorial, will write another tutorial on how to find the matrix determinants and performing matrix calculations later on.
Here you go!
package main
import (
"fmt"
"github.com/gonum/matrix/mat64"
)
func main() {
m := mat64.NewDense(3, 5, nil)
// fill in m with some elements
for i := 0; i < 3; i++ {
m.Set(i, i, 99)
}
// wrong way to print matrix
fmt.Println("m : ", m)
// proper way
// refer to https://godoc.org/github.com/gonum/matrix/mat64#Excerpt
fmt.Printf("m :\n%v\n\n", mat64.Formatted(m, mat64.Prefix(" "), mat64.Excerpt(2)))
// print all m elements
fmt.Printf("m :\n%v\n\n", mat64.Formatted(m, mat64.Prefix(""), mat64.Excerpt(0)))
data := []float64{1, 2, 3}
m2 := mat64.NewDense(3, 1, data)
// print all m2 elements
fmt.Printf("m2 :\n%v\n\n", mat64.Formatted(m2, mat64.Prefix(""), mat64.Excerpt(0)))
// to build this matrix
// ⎡1 2 3⎤
// ⎢4 5 6⎥
// ⎣7 8 9⎦
// use SetRow or SetCol
m3 := mat64.NewDense(3, 3, nil)
m3.SetRow(0, data)
data2 := []float64{4, 5, 6}
m3.SetRow(1, data2)
data3 := []float64{7, 8, 9}
m3.SetRow(2, data3)
// print all m3 elements
fmt.Printf("m3 :\n%v\n\n", mat64.Formatted(m3, mat64.Prefix(""), mat64.Excerpt(0)))
// get transpose with m3.T()
fmt.Printf("m3 transpose :\n%v\n\n", mat64.Formatted(m3.T(), mat64.Prefix(""), mat64.Excerpt(0)))
}
Output:
m : &{{3 5 5 [99 0 0 0 0 0 99 0 0 0 0 0 99 0 0]} 3 5}
m :
Dims(3, 5)
⎡99 0 ... ... 0 0⎤
⎢ 0 99 0 0⎥
⎣ 0 0 ... ... 0 0⎦
m :
⎡99 0 0 0 0⎤
⎢ 0 99 0 0 0⎥
⎣ 0 0 99 0 0⎦
m2 :
⎡1⎤
⎢2⎥
⎣3⎦
m3 :
⎡1 2 3⎤
⎢4 5 6⎥
⎣7 8 9⎦
m3 transpose :
⎡1 4 7⎤
⎢2 5 8⎥
⎣3 6 9⎦
References:
https://godoc.org/github.com/gonum/matrix/mat64#Dense.SetRow
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+13.8k Golang : reCAPTCHA example
+10.5k Golang : Convert file unix timestamp to UTC time example
+16.5k CodeIgniter/PHP : Create directory if does not exist example
+6.9k Golang : Output or print out JSON stream/encoded data
+14.8k Golang : Convert(cast) int to float example
+16.2k Golang : Get sub string example
+21.8k Golang : How to read float value from standard input ?
+14.1k Golang : Get dimension(width and height) of image file
+11.7k Golang : Format numbers to nearest thousands such as kilos millions billions and trillions
+7.1k Golang : Find the shortest line of text example
+5.4k Swift : Convert string array to array example
+9.5k Golang : Generate random Chinese, Japanese, Korean and other runes