       • To: mathgroup at smc.vnet.net
• Subject: [mg90748] Re: [mg90741] Threading over matrices
• From: Bob Hanlon <hanlonr at cox.net>
• Date: Wed, 23 Jul 2008 05:55:38 -0400 (EDT)

```Use MapThread

MapThread[#1 > #2 &, {x, y}, 2]

MapThread[If[#1 > #2, 1/#1, #1 - #2] &, {x, y}, 2]

{{1, #1 == a}, {#1^2, #1 > a}}, #1* #2^2] &,
{x, y}, 2]

Bob Hanlon

---- <"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 or
more usefully how to do what I would like them to do.

I have searched Help on all the likely commands (I think: Map,
Thread, Apply, Distribute, ...) and this archive, where there
are similar enquiries but none that match.  Perhaps I'm looking
in the wrong place - I expect there's someone who can help.

Robert

```

• Prev by Date: Re: Threading over matrices
• Next by Date: Re: export eps