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

时间:2017-09-03 16:45:43

标签: scala matrix 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错误。任何建议表示赞赏!

1 个答案:

答案 0 :(得分:2)

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

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