thanks for the quick and comprehensive help. - I managed to implement
Hennings suggestion with mapVector and zipWithVector.  -- However have a
type inference problem with zipVectorWith -- probably a stupid beginners
mistake. (have a look below). I want to look into the matrix thing as well,
but that might take a bit.

It is
  Matrix.zipWith f x y = liftMatrix2 (zipVectorWith f) x y

I see the point, that its probably not the "cleanest" way (bool to 0 & 1)
but its damn convinient (laziness at its best).

Is it really? Certainly, if you are used to. I am scared if someone multiplies the result of a comparison with something else. I find the 'if' most natural for such applications, and I like the Matrix.zipWith because it expresses that corresponding elements of matrices are combined and that it is no operation that is special for matrices (such as matrix multiplication or inversion or factorization or determinant).

Maybe there could be a haskell way to implement the "lazy" matlab matrix and
vector operation syntax (like explicit function for bool 2 num)

You are free to implement any function, also higher order, also with infix syntax, that you need frequently. :-)


######## Code

import Numeric.LinearAlgebra
import Graphics.Plot

time = 101 |> [0, 0.1 .. 100 :: Double];

vector1 = sin(time);
vector2 = vector1*0.9;

I had to look twice, whether this is C or Haskell. It could be both of them. :-) I would certainly write:

vector1, vector2 :: Vector Double
vector1 = sin time
vector2 = vector1*0.9


posPart:: Vector Double -> Vector Double
posPart v  =  mapVector (\a -> if a>=0 then a else 0) v


How about:

posPart = mapVector (max 0)


v3:: Vector Double -> Vector Double -> Vector Double
v3 v1 v2 = zipVectorWith(\a1 a2 -> if a1>=0 then a2/a1 else a1/a2) v1 v2

main = do


 -- print(v3)
mplot [v3]

v3 is a function and 'mplot' seems to expect a vector.

mplot [posPart vector1]

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to