Scala 向量的笛卡尔积

Scala 向量的笛卡尔积,scala,matrix,scala-breeze,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 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> 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

当使用Vector而不是DenseVector时,此解决方案似乎不起作用。知道为什么吗?
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