Skip to content
This repository was archived by the owner on May 31, 2020. It is now read-only.

Commit 540cf59

Browse files
committed
Add godoc documentation
Signed-off-by: Lehner Florian <[email protected]>
1 parent 7ff35ff commit 540cf59

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

doc.go

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/*
2+
3+
Package matf extracts the content from MAT-files and make it available in
4+
golang. In golang, then you can use your favorite Machine Learning environment,
5+
to further use of the extracted data.
6+
7+
For example, you can use the data in gonum:
8+
package main
9+
import (
10+
"fmt"
11+
"io"
12+
"log"
13+
"os"
14+
"reflect"
15+
16+
"github.com/florianl/matf"
17+
"gonum.org/v1/gonum/mat"
18+
)
19+
func main() {
20+
modelfile, err := matf.Open(os.Args[1])
21+
if err != nil {
22+
log.Fatal(err)
23+
return
24+
}
25+
defer matf.Close(modelfile)
26+
element, err := matf.ReadDataElement(modelfile)
27+
if err != nil && err != io.EOF {
28+
log.Fatal(err)
29+
return
30+
}
31+
r, c, _, err := element.Dimensions()
32+
data := []float64{}
33+
slice := reflect.ValueOf(element.Content.(matf.NumPrt).RealPart)
34+
for i := 0; i < slice.Len(); i++ {
35+
value := reflect.ValueOf(slice.Index(i).Interface()).Float()
36+
data = append(data, value)
37+
}
38+
dense := mat.NewDense(r, c, data)
39+
fmt.Printf("dense = %v\n", mat.Formatted(dense, mat.Prefix(" ")))
40+
}
41+
42+
Or use it in gorgonia:
43+
44+
package main
45+
import (
46+
"io"
47+
"log"
48+
"os"
49+
"reflect"
50+
51+
"github.com/florianl/matf"
52+
"gorgonia.org/gorgonia"
53+
"gorgonia.org/tensor"
54+
)
55+
func main() {
56+
modelfile, err := matf.Open(os.Args[1])
57+
if err != nil {
58+
log.Fatal(err)
59+
return
60+
}
61+
defer matf.Close(modelfile)
62+
element, err := matf.ReadDataElement(modelfile)
63+
if err != nil && err != io.EOF {
64+
log.Fatal(err)
65+
return
66+
}
67+
r, c, _, err := element.Dimensions()
68+
data := []float64{}
69+
slice := reflect.ValueOf(element.Content.(matf.NumPrt).RealPart)
70+
for i := 0; i < slice.Len(); i++ {
71+
value := reflect.ValueOf(slice.Index(i).Interface()).Float()
72+
data = append(data, value)
73+
}
74+
t := tensor.New(tensor.WithShape(r,c), tensor.WithBacking(data))
75+
g := gorgonia.NewGraph()
76+
w := gorgonia.NewMatrix(g, gorgonia.Float64, gorgonia.WithShape(r,c), gorgonia.WithValue(t))
77+
gorgonia.Must(gorgonia.Sigmoid(w))
78+
m := gorgonia.NewTapeMachine(g)
79+
if err := m.RunAll(); err != nil {
80+
log.Fatal(err)
81+
return
82+
}
83+
m.Reset()
84+
}
85+
*/
86+
package matf

0 commit comments

Comments
 (0)