Hi Phil,

On 12/20/2010 10:49 PM, gutti wrote:

Hi all,

In Matlab the following line of code:
V3 = V1.*(V2>0)

(V2>0) gives a Bool-Vector with ones (trues) and zero's where elements
of V2 are>  0; Then this Bool vector is used to multiply all elements in V1
to zero
where the condition V2>0 is not fulfilled.

How can I do that in Haskell ?  (I haven't seen bol operations or mapping
functions into vectors, arrays
in the HMatrix.pdf).

Vectorized boolean operations are not yet implemented but I hope to get them ready soon, including a "find" function. In the meantime you can use zipVectorWith, as mentioned by Henning.

We could also use signum, but this is not recommended (signum 0 is 0):

import Numeric.LinearAlgebra

vec = fromList :: [Double] -> Vector Double

cond x = (signum (x-scalar eps) + 1 ) / 2

v1 = vec [10..20]

v2 = vec [-5..5]

v3 = v1 * cond v2

> v3
11 |> [0.0,0.0,0.0,0.0,0.0,0.0,16.0,17.0,18.0,19.0,20.0]

-Alberto


. -- Many thanks in advance Phil





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

Reply via email to