This module implements some functions for matrix.
Matrix implements functions with Rowing and Looping.
go get -u github.com/snowypainter/Matrix
mat := matrix.NewMatrix(2, 3) // 2 rows, 3 columns
mat.Reset([][]float64{{1, 2}, {3, 4}, {5, 6}})
/* same above
m.SetRow(0, []float64{1, 2})
m.SetRow(1, []float64{3, 4})
m.SetRow(2, []float64{5, 6})
*/
/*
WARN : variables are not a car!
*/
m := matrix.NewMatrix(3, 3)
m.Reset([][]float64{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}})
m2 := matrix.NewMatrix(3, 3)
m2.Reset([][]float64{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}})
m3, err := m.Plus(m2)
fmt.Println("m + m2 = ", m3)
m4, err := m.Minus(m2)
fmt.Println("m - m2 = ", m4)
Plus & Minus use same core function.
add function which is private for developers and in /matrix/calculate.go.
So it pass only +, - function internally. like :
func(a float64, b float64) float64 {
return a + b // or a - b for Minus
}
m5, err := m.Multiply(m2)
fmt.Println("m * m2 = ", m5)
It does multiplying calculates as you know.
m6 := m.ScalarMultiply(5)
fmt.Println("|m| * |5| = ", m6)
Mutiply scalar value to matrix. no matter what matrix size is it.
fmt.Println("m.Transpose() = ", m.Transpose())
Run main.go after cloning
go run main.go ./matrix
m + m2 = [
[2 4 6]
[8 10 12]
[14 16 18]
]
m - m2 = [
[0 0 0]
[0 0 0]
[0 0 0]
]
m * m2 = [
[30 36 42]
[66 81 96]
[102 126 150]
]
|m| * |5| = [
[5 10 15]
[20 25 30]
[35 40 45]
]
m.Transpose() = [
[1 4 7]
[2 5 8]
[3 6 9]
]