Добавьте вектор в каждый столбец матрицы, используя 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