douchao9899
douchao9899
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 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 doukong9982 2年前

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

    See: https://godoc.org/gonum.org/v1/gonum/mat#Dense.Dims

    点赞 评论 复制链接分享
  • duanlin1931 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.
    
    点赞 评论 复制链接分享