【问题标题】:How to implements multiplication of DenseMatrix[BigDecimal] in Breeze?如何在 Breeze 中实现 DenseMatrix[BigDecimal] 的乘法?
【发布时间】:2016-04-19 16:49:19
【问题描述】:

我的代码如下:

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的新手,完成这些代码对我来说确实有点困难。希望有人能帮我一个忙!

【问题讨论】:

    标签: scala-breeze


    【解决方案1】:
     val d = dm.*(dm.t)(DenseMatrix.op_DM_DM_Semiring[BigDecimal])
    

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

    【讨论】:

      猜你喜欢
      • 2017-05-23
      • 2014-06-05
      • 2014-02-12
      • 2016-04-18
      • 2015-05-29
      • 2018-06-18
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多