如何在Gonum中将矩阵与向量相乘?

时间:2018-10-12 10:31:20

标签: go math matrix blas gonum

我想将mat.Dense矩阵与mat.VecDense向量相乘,但是显然mat.Densemat.VecDens都没有实现Matrix接口或定义一种将矩阵相乘的方法与向量。我该怎么办?

1 个答案:

答案 0 :(得分:1)

解决了。

mat.NewVecDense(...)返回一个*mat.VecDense,它实现了方法func MulVec(a mat.Matrix, b mat.Vector)

这是一项验证功能的测试

func TestMatrixVectorMul(t *testing.T) {
    a := mat.NewDense(3, 3, []float64{
        1, 2, 3, 4, 5, 6, 7, 8, 9,
    })
    b := mat.NewVecDense(3, []float64{
        1, 2, 3,
    })
    actual := make([]float64, 3)
    c := mat.NewVecDense(3, actual)

    // this was the method, I was looking for. 
    c.MulVec(a, b)
    expected := []float64{14, 32, 50}
    assert.Equal(t, expected, actual)
}