Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: confusion about Thread[]

  • To: mathgroup at smc.vnet.net
  • Subject: [mg56068] Re: [mg56007] confusion about Thread[]
  • From: yehuda ben-shimol <bsyehuda at gmail.com>
  • Date: Thu, 14 Apr 2005 08:56:36 -0400 (EDT)
  • References: <200504130510.BAA09580@smc.vnet.net>
  • Reply-to: yehuda ben-shimol <bsyehuda at gmail.com>
  • Sender: owner-wri-mathgroup at wolfram.com

As I see it, your last expression uses two heads, one for the Or and
one for the And fuctions. Thread is planned to work with a single
head, and this is why it is working with a gereral f[].
yehuda

On 4/13/05, Torsten Coym <torsten.coym at eas.iis.fraunhofer.de> wrote:
> Hi group,
> 
> given three lists
> 
> wLst = {w1, w2, w3}
> zLst = {z1, z2, z3}
> cLst = {c1, c2, c3}
> 
> with each element representing a boolean value I want to calculate a
> list of the same function applied to the corresponding elements of wLst,
> zLst, cLst respectively. While the expression
> 
> Thread[Thread[wLst && zLst] || Thread[wLst && cLst] ||
>     Thread[zLst && cLst]]
> 
> {(w1 && z1) || (w1 && c1) || (z1 && c1), (w2 && z2) || (w2 && c2) ||
>     (z2 && c2), (w3 && z3) || (w3 && c3) || (z3 && c3)}
> 
> does exactly what I want, I wonder why the following approach using a
> pure function with three input arguments and a single call of Thread[]
> does not give the desired result:
> 
> Thread[((#1 && #2) || (#1 && #3) || (#2 && #3) & )[wLst, zLst, cLst]]
> 
> ({w1, w2, w3} && {z1, z2, z3}) || ({w1, w2, w3} && {c1, c2, c3}) ||
>    ({z1, z2, z3} && {c1, c2, c3})
> 
> although
> 
> ((#1 && #2) || (#1 && #3) || (#2 && #3) & )[w1, z1, c1]
> 
> (w1 && z1) || (w1 && c1) || (z1 && c1)
> 
> implements the desired logical expression and
> 
> Thread[f[wLst, zLst, cLst]]
> 
> {f[w1, z1, c1], f[w2, z2, c2], f[w3, z3, c3]}
> 
> works the way I expect it.
> 
> It seems I am a bit disconnected here ...
> 
> Torsten
> 
>


  • Prev by Date: Problem with ListPlotVectorField3D
  • Next by Date: Re: rasterarray border?
  • Previous by thread: confusion about Thread[]
  • Next by thread: Re: confusion about Thread[]