Monday 15 March 2010

How to round DenseVector in Scala breeze? -



How to round DenseVector in Scala breeze? -

in below code how can round values of densevector 1 decimal place.

densevector value should :

densevector(0.4, 0.4, 0.2)

instead of :

densevector(0.36000000003540067, 0.35999999990731946, 0.18000000005727962)

i have tried using round method, not supported :

var nv : densevector[double] = ((m * v).round) value round not fellow member of breeze.linalg.densevector[double]

entire code multiplying matrix vector :

val m = densematrix((0.5, 0.5, 0.0) , (0.5 , 0.0 , 1.0) , (0.0 , 0.5 , 0.0)) //> m : breeze.linalg.densematrix[double] = 0.5 0.5 0.0 //| 0.5 0.0 1.0 //| 0.0 0.5 0.0 var v = densevector(0.3 , 0.3 , 0.3) //> v : breeze.linalg.densevector[double] = densevector(0.3, 0.3, 0.3) (i <- 1 100) { var nv : densevector[double] = (m * v) v = nv if(i > 90){ println(nv) } } //> oct 06, 2014 9:55:00 pm com.github.fommil.netlib.blas <clinit> //| warning: failed load implementation from: com.github.fommil.netlib.native //| systemblas //| oct 06, 2014 9:55:00 pm com.github.fommil.netlib.blas <clinit> //| warning: failed load implementation from: com.github.fommil.netlib.native //| refblas //| densevector(0.3599999998439336, 0.36000000040858693, 0.17999999974747932) //| densevector(0.36000000012626027, 0.3599999996694461, 0.18000000020429346) //| densevector(0.3599999998978532, 0.3600000002674236, 0.17999999983472306) //| densevector(0.36000000008263844, 0.35999999978364966, 0.1800000001337118) //| densevector(0.359999999933144, 0.36000000017503103, 0.17999999989182483) //| densevector(0.3600000000540875, 0.3599999998583968, 0.18000000008751552) //| densevector(0.35999999995624216, 0.36000000011455924, 0.1799999999291984) //| densevector(0.36000000003540067, 0.35999999990731946, 0.18000000005727962) //| densevector(0.35999999997136006, 0.3600 //| output exceeds cutoff limit. }

most "transformations" tend live in breeze.numerics._ standalone functions. 1 of them rint, rounds nearest integer.

so:

scala> import breeze.linalg._ import breeze.linalg._ scala> densevector(0.36000000003540067, 0.35999999990731946, 0.18000000005727962) res1: breeze.linalg.densevector[double] = densevector(0.36000000003540067, 0.35999999990731946, 0.18000000005727962) scala> breeze.numerics.rint(res1 * 10.0)/10.0 res2: breeze.linalg.densevector[double] = densevector(0.4, 0.4, 0.2)

scala scala-breeze

No comments:

Post a Comment