Type mismatch error for reused DenseVector

56 views
Skip to first unread message

KiranKumar Adam

unread,
Apr 30, 2013, 10:23:34 AM4/30/13
to scala-...@googlegroups.com
package kalman

import breeze.linalg._

object test {

  val F =  DenseMatrix((1.0, 0.0, 0.5, 0.0, 0.125, 0.0),
                (0.0, 1.0, 0.0, 0.5, 0.0, 0.125),
                (0.0, 0.0, 1.0, 0.0, 0.5, 0.0),
                (0.0, 0.0, 0.0, 1.0, 0.0, 0.5),
                (0.0, 0.0, 0.0, 0.0, java.lang.Math.exp(-0.5/60.0), 0.0),
                (0.0, 0.0, 0.0, 0.0, 0.0, java.lang.Math.exp(-0.5/60.0)))
                                                  //> F  : breeze.linalg.DenseMatrix[Double] = 1.0  0.0  0.5  0.0  0.125         
                                                  //|     0.0               
                                                  //| 0.0  1.0  0.0  0.5  0.0                0.125             
                                                  //| 0.0  0.0  1.0  0.0  0.5                0.0               
                                                  //| 0.0  0.0  0.0  1.0  0.0                0.5               
                                                  //| 0.0  0.0  0.0  0.0  0.991701292638876  0.0               
                                                  //| 0.0  0.0  0.0  0.0  0.0                0.991701292638876 
 
 val x = DenseVector(1.0, 1.0, 1.0, 1.0, 1.0, 1.0)//> x  : breeze.linalg.DenseVector[Double] = DenseVector(1.0, 1.0, 1.0, 1.0, 1.0
                                                  //| , 1.0)

 
 var t1 : DenseVector[Double] = F * x             //> t1  : breeze.linalg.DenseVector[Double] = DenseVector(1.625, 1.625, 1.5, 1.5
                                                  //| , 0.991701292638876, 0.991701292638876)
 
    t1 = F * t1
   
   
}


the error is type mismatch;  found  : Unit required : breeze.linalg.DenseVector[Double]

David Hall

unread,
Apr 30, 2013, 1:02:40 PM4/30/13
to scala-...@googlegroups.com
Works for me?


scala> import breeze.linalg._
import breeze.linalg._

scala> val F = DenseMatrix((1.0, 0.0, 0.5, 0.0, 0.125, 0.0),
| (0.0, 1.0, 0.0, 0.5, 0.0, 0.125),
| (0.0, 0.0, 1.0, 0.0, 0.5, 0.0),
| (0.0, 0.0, 0.0, 1.0, 0.0, 0.5),
| (0.0, 0.0, 0.0, 0.0, java.lang.Math.exp(-0.5/60.0), 0.0),
| (0.0, 0.0, 0.0, 0.0, 0.0, java.lang.Math.exp(-0.5/60.0)))
F: breeze.linalg.DenseMatrix[Double] =
1.0 0.0 0.5 0.0 0.125 0.0
0.0 1.0 0.0 0.5 0.0 0.125
0.0 0.0 1.0 0.0 0.5 0.0
0.0 0.0 0.0 1.0 0.0 0.5
0.0 0.0 0.0 0.0 0.991701292638876 0.0
0.0 0.0 0.0 0.0 0.0 0.991701292638876

scala> //> F :
breeze.linalg.DenseMatrix[Double] = 1.0 0.0 0.5 0.0 0.125

scala> //| 0.0

scala> //| 0.0 1.0
0.0 0.5 0.0 0.125

scala> //| 0.0 0.0
1.0 0.0 0.5 0.0

scala> //| 0.0 0.0
0.0 1.0 0.0 0.5

scala> //| 0.0 0.0
0.0 0.0 0.991701292638876 0.0

scala> //| 0.0 0.0
0.0 0.0 0.0 0.991701292638876

scala>
| val x = DenseVector(1.0, 1.0, 1.0, 1.0, 1.0, 1.0)//> x :
breeze.linalg.DenseVector[Double] = DenseVector(1.0, 1.0, 1.0, 1.0,
1.0
x: breeze.linalg.DenseVector[Double] = DenseVector(1.0, 1.0, 1.0, 1.0, 1.0, 1.0)

scala> //| , 1.0)

scala>

scala>
| var t1 : DenseVector[Double] = F * x //> t1 :
breeze.linalg.DenseVector[Double] = DenseVector(1.625, 1.625, 1.5, 1.5
t1: breeze.linalg.DenseVector[Double] = DenseVector(1.625, 1.625, 1.5,
1.5, 0.991701292638876, 0.991701292638876)

scala> //| ,
0.991701292638876, 0.991701292638876)

scala>
| t1 = F * t1
t1: breeze.linalg.DenseVector[Double] =
DenseVector(2.4989626615798595, 2.4989626615798595,
1.9958506463194379, 1.9958506463194379, 0.9834714538216175,
0.9834714538216175)
Wor

KiranKumar Adam

unread,
May 1, 2013, 1:15:24 PM5/1/13
to scala-...@googlegroups.com
Hello David,

I checked it works fine with the console in the breeze package. But it gives the error so I modfiffied my code a bit and it works fine

import breeze.linalg._

object test {
  println("Welcome to the Scala worksheet")       //> Welcome to the Scala worksheet
   
    var x = DenseVector(1.0,1.0)                        //> x  : breeze.linalg.DenseVector[Double] = DenseVector(1.0, 1.0)
   
    val F = DenseMatrix.ones[Double](2,2)         //> F  : breeze.linalg.DenseMatrix[Double] = 1.0  1.0 
                                                                     //| 1.0  1.0 
   
    def state(t: DenseVector[Double]) : DenseVector[Double] =
    {
          t := F * t
    }                                                               //> state: (t: breeze.linalg.DenseVector[Double])breeze.linalg.DenseVector[Doubl
                                                                    //| e]
 
    x := state(x)                                              //> res0: breeze.linalg.DenseVector[Double] = DenseVector(2.0, 2.0)
 
    x := state(x)                                              //> res1: breeze.linalg.DenseVector[Double] = DenseVector(4.0, 4.0)
Reply all
Reply to author
Forward
0 new messages