如何在Breeze中实现DenseMatrix [BigDecimal]的乘法?

时间:2016-03-08 11:17:00

标签: scala-breeze

我的代码如下:

val bigArrs = Array(BigDecimal(1),BigDecimal(2))
val dm = new DenseMatrix[BigDecimal](2,1,bigArrs)
val cal = dm*dm.t

当我编译它时,我收到以下编译错误:

Error:(11, 15) diverging implicit expansion for type breeze.linalg.operators.OpMulMatrix.
Impl2[breeze.linalg.DenseMatrix[BigDecimal],breeze.linalg.DenseMatrix[BigDecimal],That]
starting with method canMulM_M_def in trait DenseMatrixOpsLowPrio
val cal = dm*dm.t
          ^
Error:(11, 15) not enough arguments for method *: (implicit op: breeze.linalg.operators.OpMulMatrix.Impl2
[breeze.linalg.DenseMatrix[BigDecimal],breeze.linalg.DenseMatrix[BigDecimal],That])That.
Unspecified value parameter op.
val cal = dm*dm.t
          ^

我问如何在Breeze中的DenseMatrix [BigDecimal]上实现乘法或加法。我已阅读https://github.com/scalanlp/breeze/wiki/Universal-Functions#enabling-ufuncs-for-your-collection-typehttp://dlwh.org/tag/breeze/试图解决此问题。但是,作为Breeze和scala的新手,我完成这些代码确实有点困难。希望有人帮我一个忙!

1 个答案:

答案 0 :(得分:0)

 val d = dm.*(dm.t)(DenseMatrix.op_DM_DM_Semiring[BigDecimal])

这将有效。矩阵的任何操作都可以这样做。如果你的返回值的类型什么都没有,可能是你没有应用隐式参数(正如我在第二个括号中所示)。

相关问题