我有一个(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错误。任何建议表示赞赏!
答案 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