[Haskell-cafe] Matlab Style Logic Operations ala V1.*(V2>0) on Vectors and Matrices with HMatrix ??
lemming at henning-thielemann.de
Tue Dec 21 14:04:21 CET 2010
On Tue, 21 Dec 2010, Alberto Ruiz wrote:
> 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.
I would not find it a great idea to support the MatLab style of handling
booleans by 0 and 1. It's the whole point of Haskell's type safety to
distinguish between numbers and booleans. MatLab even weakly distinguishs
between numbers and booleans. If you use a vector of logical values
(MatLab.logical corresponds to Haskell.Bool) as index, then it works like
logical indices: [1 2 3 4 5 6]([0 0 1 1 0 0]) = [3 4]
number indices: [1 2 3 4 5 6]([0 0 1 1 0 0]) -> zero index not allowed
Writing v2>0 in Haskell would mean to compare a matrix with a scalar. You
would need a custom '>' operator and new type hacks in order to support
all combinations of matrix and scalar operands. I think a Matrix.zipWith
function would be the cleanest and most efficient way we can have!
More information about the Haskell-Cafe