代码之家  ›  专栏  ›  技术社区  ›  LucieCBurgess

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

  •  0
  • LucieCBurgess  · 技术社区  · 7 年前

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

    但这并不真正符合Scala的不变性,因为H当时已经定义,因此对val错误进行了重新分配。感谢您的建议!

    1 回复  |  直到 7 年前
        1
  •  2
  •   akuiper    7 年前

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

    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