# HG changeset patch # User Chris Cannam # Date 1370018044 -3600 # Node ID f481ac8052c4f2d872eeac690f8091acf69b7c0c # Parent 240eb77ee2e8ce56fa374c271590fca75299aa94 Add entrywise product diff -r 240eb77ee2e8 -r f481ac8052c4 yetilab/matrix.yeti --- a/yetilab/matrix.yeti Fri May 31 17:32:56 2013 +0100 +++ b/yetilab/matrix.yeti Fri May 31 17:34:04 2013 +0100 @@ -568,6 +568,13 @@ fi; fi; +entryWiseProduct m1 m2 = // or element-wise, or Hadamard product +//!!! todo: faster, sparse version, units + if (size m1) != (size m2) + then failWith "Matrices are not the same size: \(size m1), \(size m2)"; + else generate do row col: at' m1 row col * at' m2 row col done (size m1); + fi; + concatAgainstGrain tagger getter counter mm = (n = counter (size (head mm)); tagger (array @@ -745,6 +752,7 @@ abs = abs', filter = filter', product, + entryWiseProduct, concat, rowSlice, columnSlice, @@ -793,6 +801,7 @@ abs is matrix -> matrix, filter is (number -> boolean) -> matrix -> matrix, product is matrix -> matrix -> matrix, + entryWiseProduct is matrix -> matrix -> matrix, concat is (Horizontal () | Vertical ()) -> list -> matrix, rowSlice is matrix -> number -> number -> matrix, columnSlice is matrix -> number -> number -> matrix,