Assignment accepts a function for inplace operators i.e scala way is
a := (r,c,x) => log(x)
 On Apr 26, 2014 7:45 AM, "tuxdna" <tux...@gmail.com> wrote:

> First of all Mahout's Math-Scala DSL, is really nice. I can write
> really compact code.
>
> Here is a my problem description ( i referred to [1] ).
>
> First I import all the required classes in Scala REPL:
>
> import org.apache.mahout.math.{ Vector => MahoutVector }
> import org.apache.mahout.math.scalabindings._
> import org.apache.mahout.math.DenseMatrix
> import scala.util.Random
> import org.apache.mahout.math.Matrix
> import Math.min
> import RLikeOps._
>
> Then I create a matrix
>
> scala> val a = dense((1, 2, 3), (3, 4, 5))
> a: org.apache.mahout.math.DenseMatrix =
> {
>   0  =>    {0:1.0,1:2.0,2:3.0}
>   1  =>    {0:3.0,1:4.0,2:5.0}
> }
>
>
> Appply the function using a loop:
>
> scala> for(r <- 0 until a.numRows; c <- 0 until a(r,::).size) { a(r,c)
> = Math.log(a(r,c)) }
> warning: there were 1 deprecation warnings; re-run with -deprecation for
> details
>
> The resulting matrix
>
> scala> a
> res35: org.apache.mahout.math.DenseMatrix =
> {
>   0  =>    {1:0.6931471805599453,2:1.0986122886681098}
>   1  =>    {0:1.0986122886681098,1:1.3862943611198906,2:1.6094379124341003}
> }
>
>
> I want to apply an arbitrary function ( such as Math.log, or a
> function defined by me ), to a matrix or vector withoug using any
> loops. This is possible in Octave/Matlab as described here [2].
>
> How can I do this in Mahout using Scala DSL ?
>
> Thanks in advance.
>
> Regards,
> Saleem
>
> [1] https://mahout.apache.org/users/sparkbindings/home.html
> [2]
> http://stackoverflow.com/questions/2470844/loopless-function-calls-on-vector-matrix-members-in-matlab-octave
>

Reply via email to