使用 Scala Breeze 向矩阵的每一列添加一个向量

Add a vector to every column of a matrix, using Scala Breeze

我有一个 (L x N) 阶矩阵 M,我想将长度为 L 的相同向量 v 添加到矩阵的每一列。有没有办法使用 Scala Breeze 做到这一点?

我试过了:

val H = DenseMatrix.zeros(L,N)
  for (j <- 0 to L) {
  H (::,j) = M(::,j) + v
}

但这并不真正符合 Scala 的不变性,因为 H 已经定义,因此重新分配给 val 错误。任何建议表示赞赏!

要将向量添加到矩阵的所有列,您不需要遍历列;您可以使用列广播功能,例如:

H(::,*) + v             // assume v is breeze dense vector

应该可以。


import breeze.linalg._

val L = 3
val N = 2
val v = DenseVector(1.0,2.0,3.0)
val H = DenseMatrix.zeros[Double](L, N)

val result = H(::,*) + v

//result: breeze.linalg.DenseMatrix[Double] = 1.0  1.0  
//                                            2.0  2.0  
//                                            3.0  3.0