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 }