2016-03-08 93 views
0

我的代码是如下:如何在Breeze中实现DenseMatrix [BigDecimal]的乘法?

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 
     ^

我问如何实现对DenseMatrix [BigDecimal的]乘法或加法在微风。我已阅读https://github.com/scalanlp/breeze/wiki/Universal-Functions#enabling-ufuncs-for-your-collection-typehttp://dlwh.org/tag/breeze/试图解决它。然而,作为Breeze和scala的新手,我完成这些代码真的很难。希望有人会帮我一个忙!

回答

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

这将work.Any矩阵的操作可以像this.If您的返回值的类型是什么,这可能是因为你还没有申请一个隐含的参数(如我在第二支架呈) 。