Re: Threading over matrices

*To*: mathgroup at smc.vnet.net*Subject*: [mg90771] Re: [mg90741] Threading over matrices*From*: Sseziwa Mukasa <mukasa at jeol.com>*Date*: Wed, 23 Jul 2008 05:59:55 -0400 (EDT)*References*: <200807220757.DAA13797@smc.vnet.net>

On Jul 22, 2008, at 3:57 AM, "Robert <"@frank-exchange-of- views.oucs.ox.ac.uk wrote: > How can I get evaluations to thread over matrices with > conditional functions? > Here's examples that show the behaviour that's really > frustrating me. > Create a couple of matrices: > > x = Table[Random[],{3},{4}]; > y = Table[Random[],{3},{4}]; > a=0.5; > > (These are example values I would like the following > to apply to lists of any dimension.) > When you add them they create a result with the same > dimensions where each element corresponds to the > input elements > > x + a y > > And some functions do similar > > Cos[x] + Sin[a y] > > But some don't, e.g. > > x > y > x > a > > I would have liked those to produce a matrix of corresponding > True and False results, and then something like: > > If[x > y, 1/x, x - y] > Piecewise[{{1,x==a},{x^2,x>a}},x y^2] > > to produce a matrix of results corresponding to each element. > > They don't - I haven't managed to find out why they don't Because they don't have the attribute Flat. > or > more usefully how to do what I would like them to do. There are a variety of ways to do this, and I'm sure you'll see a lot of varying responses, personally I use MapThread in such situations: MapThread[>,{x,y},2] or MapThread[>,{x,a},2] Regards, Ssezi

**References**:**Threading over matrices***From:*"Robert <"@frank-exchange-of-views.oucs.ox.ac.uk