如何在 gonum 中将矩阵与向量相乘?
How do I multiply a matrix with a vector in gonum?
我想将 mat.Dense
矩阵与 mat.VecDense
向量相乘,但显然 mat.Dense
和 mat.VecDens
都没有实现 Matrix 接口或定义相乘方法带有向量的矩阵。我该怎么做?
解决了。
mat.NewVecDense(...)
returns 实现方法 func MulVec(a mat.Matrix, b mat.Vector)
的 *mat.VecDense
这是一个验证功能的测试
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)
}
我想将 mat.Dense
矩阵与 mat.VecDense
向量相乘,但显然 mat.Dense
和 mat.VecDens
都没有实现 Matrix 接口或定义相乘方法带有向量的矩阵。我该怎么做?
解决了。
mat.NewVecDense(...)
returns 实现方法 func MulVec(a mat.Matrix, b mat.Vector)
*mat.VecDense
这是一个验证功能的测试
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)
}