2016-03-08 94 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您的返回值的類型是什麼,這可能是因爲你還沒有申請一個隱含的參數(如我在第二支架呈) 。