斯卡拉微风笛卡尔的矢量产品

时间:2017-01-18 08:34:01

标签: scala matrix scala-breeze

我们说我有两个相同维度的向量:

scala> val v = DenseVector(3.0, 4.0)
v: breeze.linalg.DenseVector[Double] = DenseVector(3.0, 4.0)

scala> val w = DenseVector(5.0, 6.0)
w: breeze.linalg.DenseVector[Double] = DenseVector(5.0, 6.0)

如何从中计算一个包含所有产品的矩阵(类似db中的笛卡尔积):

scala> val x = DenseMatrix(
     | (v(0) * w(0), v(0) * w(1)),
     | (v(1) * w(0), v(1) * w(1))
     | )
x: breeze.linalg.DenseMatrix[Double] =
15.0  18.0
20.0  24.0

我觉得你应该可以用广播来做,但我无法弄清楚如何做。 谢谢。

1 个答案:

答案 0 :(得分:3)

这只是两个载体的外在产物:

scala> import breeze.linalg._
import breeze.linalg._

scala> val v = DenseVector(3.0, 4.0)
v: breeze.linalg.DenseVector[Double] = DenseVector(3.0, 4.0)

scala>  val w = DenseVector(5.0, 6.0)
w: breeze.linalg.DenseVector[Double] = DenseVector(5.0, 6.0)

scala> v * w.t
res0: breeze.linalg.DenseMatrix[Double] =
15.0  18.0
20.0  24.0