Добавьте вектор в каждый столбец матрицы, используя Scala Breeze

У меня есть матрица M ранга (L x N), и я хочу добавить один и тот же вектор v длины L в каждый столбец матрицы. Есть ли способ сделать это, пожалуйста, используя Scala Breeze?

Я старался:

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

но это не совсем соответствует неизменности Scala, поскольку H уже определено и, следовательно, дает переназначение для ошибки val. Любые предложения приветствуются!

1 ответ

Решение

Чтобы добавить вектор во все столбцы матрицы, вам не нужно перебирать столбцы; Вы можете использовать функцию трансляции столбцов, например:

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  
Другие вопросы по тегам