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
+4k Golang : Print instead of building pyramids
+14.5k Golang : Loop each day of the current month example
+8.6k Golang : Populate slice with sequential integers example
+17.8k Golang : How to make function callback or pass value from function as parameter?
+9.2k Golang : cannot assign type int to value (type uint8) in range error
+10.6k Linux : How to install driver for 600Mbps Dual Band Wifi USB Adapter
+9k Golang : Print how to use flag for your application example
+8.7k Golang : List available AWS regions
+25.9k PHP : Count number of JSON items/objects
+7.4k Golang : Count leading or ending zeros(any item of interest) example
+4.9k Golang : Get Hokkien(福建话)/Min-nan(閩南語) Pronounciations
+5.8k Golang : Get expvar(export variables) to work with multiplexer