2019-02-21 08:34

# 如何在go-lang中获取矩阵的维数？

Here is the piece of code:

``````package main
import (
"fmt"
"gonum.org/v1/gonum/mat"
)
func main() {
// Matrix and Vector

// Initialize a Matrix A
row1 := []float64{1,2,3}
row2 := []float64{4,5,6}
row3 := []float64{7,8,9}
row4 := []float64{10,11,12}

A := mat.NewDense(4,3,nil)
A.SetRow(0, row1)
A.SetRow(1, row2)
A.SetRow(2, row3)
A.SetRow(3, row4)

fmt.Printf("A :
%v

", mat.Formatted(A, mat.Prefix(""), mat.Excerpt(0)))

// Initialize a Vector v
v := mat.NewDense(3,1, []float64{1,2,3})
fmt.Printf("v :
%v

", mat.Formatted(v, mat.Prefix(""), mat.Excerpt(0)))

//Get the dimension of the matrix A where m = rows and n = cols
row, col := len(A)
// row, col := size(A)
fmt.Println("row: ", row)
fmt.Println("col: ", col)

}
``````

Error: `invalid argument A (type *mat.Dense) for len`

When I use `size` to determine the dimensions of the matrix `A`. Then it gives me an error `undefined: size`.

How can I get dimensions of the matrix `A`?

• 点赞
• 写回答
• 关注问题
• 收藏
• 复制链接分享
• 邀请回答

#### 3条回答

• dongyan2469 2年前

package mat

``````import "gonum.org/v1/gonum/mat"
``````

func (*Dense) Dims

``````func (m *Dense) Dims() (r, c int)
``````

Dims returns the number of rows and columns in the matrix.

For example,

``````package main

import (
"fmt"

"gonum.org/v1/gonum/mat"
)

func main() {
row1 := []float64{1, 2, 3}
row2 := []float64{4, 5, 6}
row3 := []float64{7, 8, 9}
row4 := []float64{10, 11, 12}

A := mat.NewDense(4, 3, nil)
A.SetRow(0, row1)
A.SetRow(1, row2)
A.SetRow(2, row3)
A.SetRow(3, row4)

fmt.Printf("A matrix:
%v

", mat.Formatted(A, mat.Prefix(""), mat.Excerpt(0)))

//Get the dimensions of the matrix A
rows, cols := A.Dims()
fmt.Println("A: rows: ", rows)
fmt.Println("A: cols: ", cols)
}
``````

Output:

``````A matrix:
⎡ 1   2   3⎤
⎢ 4   5   6⎥
⎢ 7   8   9⎥
⎣10  11  12⎦

A: rows:  4
A: cols:  3
``````
点赞 评论 复制链接分享
• doukong9982 2年前

You can use `Dims()` method to get number of rows and cols in a matrix.

点赞 评论 复制链接分享
• duanlin1931 2年前

`len` is used for builtin types like array, slice, etc.

From the document of the package, you should use `Dims()` to access row size and column size

try `godoc gonum.org/v1/gonum/mat` and find the following sections:

``````func (m *Dense) Dims() (r, c int)
Dims returns the number of rows and columns in the matrix.
``````
点赞 评论 复制链接分享