golang matrix
1 package main 2 3 import ( 4 "fmt" 5 "go.matrix-go1" //比较有名的关于Matrix在golang中的方法库 6 "strings" 7 ) 8 9 func main() { 10 11 //matrix 12 s := `[1 2 3;4 5 6]` 13 //用数组字符串生成matrix 14 a, err := matrix.ParseMatlab(s) 15 16 if err != nil { 17 fmt.Println("?", err) 18 } 19 20 //修改值 21 a.Set(0, 0, 50) 22 //给定行列位置点的值 23 fmt.Println(a.Get(0, 0)) 24 //50 25 26 //列值 27 fmt.Println(a.GetColVector(0)) 28 //{50, 29 // 4} 30 31 //列值 32 fmt.Println(a.GetRowVector(0)) 33 //{50, 2, 3} 34 35 //全值 36 fmt.Println(a) 37 //{50, 2, 3, 38 // 4, 5, 6} 39 40 //数组形式 41 fmt.Println(a.Array()) 42 //[50 2 3 4 5 6] 43 44 //用行数和列数算错矩阵大小 45 fmt.Println(a.Rows() * a.Cols()) 46 //6 47 48 //带格式打印 49 fmt.Println(a.String()) 50 //{50, 2, 3, 51 // 4, 5, 6} 52 53 //用0填充生成一个i*j的矩阵 54 fmt.Println(matrix.Zeros(4, 4).String()) 55 //{0, 0, 0, 0, 56 // 0, 0, 0, 0, 57 // 0, 0, 0, 0, 58 // 0, 0, 0, 0} 59 60 //用1填充生成一个i*j的矩阵 61 fmt.Println(matrix.Ones(4, 4).String()) 62 //{1, 1, 1, 1, 63 // 1, 1, 1, 1, 64 // 1, 1, 1, 1, 65 // 1, 1, 1, 1} 66 67 //用指定数字填充生成一个i*j的矩阵 68 fmt.Println(matrix.Numbers(4, 4, 8).String()) 69 //{8, 8, 8, 8, 70 // 8, 8, 8, 8, 71 // 8, 8, 8, 8, 72 // 8, 8, 8, 8} 73 74 //生成对称矩阵 75 fmt.Println(matrix.Eye(3).String()) 76 //{1, 0, 0, 77 // 0, 1, 0, 78 // 0, 0, 1} 79 80 //生成带数字矩阵 81 fmt.Println(matrix.Normals(5, 5).String()) 82 //{-1.233758, -0.126348, -0.520995, 2.285719, 0.322805, 83 // 0.590067, 0.158808, 0.989202, -0.731283, 0.686381, 84 // 1.585404, 0.838206, 1.298841, 0.527358, 0.732442, 85 // -1.07318, 0.700121, 0.431531, 0.999626, -1.523968, 86 // -0.316537, 1.889464, 1.100729, -0.992743, 0.98971} 87 88 //生成对角线上指定元素的对称矩阵 89 d := []float64{7, 7, 8, 9, 6, 10} 90 fmt.Println(matrix.Diagonal(d).String()) 91 //{ 7, 0, 0, 0, 0, 0, 92 // 0, 7, 0, 0, 0, 0, 93 // 0, 0, 8, 0, 0, 0, 94 // 0, 0, 0, 9, 0, 0, 95 // 0, 0, 0, 0, 6, 0, 96 // 0, 0, 0, 0, 0, 10} 97 98 }