我的代码如下:
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-type和http://dlwh.org/tag/breeze/试图解决此问题。但是,作为Breeze和scala的新手,我完成这些代码确实有点困难。希望有人帮我一个忙!
答案 0 :(得分:0)
val d = dm.*(dm.t)(DenseMatrix.op_DM_DM_Semiring[BigDecimal])
这将有效。矩阵的任何操作都可以这样做。如果你的返回值的类型什么都没有,可能是你没有应用隐式参数(正如我在第二个括号中所示)。