MathGroup Archive 2008

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

Search the Archive

Re: [functional approach should give] an even faster way to normalize

  • To: mathgroup at smc.vnet.net
  • Subject: [mg85666] Re: [functional approach should give] an even faster way to normalize
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Tue, 19 Feb 2008 01:48:48 -0500 (EST)
  • References: <fp9945$199$1@smc.vnet.net>

Hi,

what is with

Map[
   If[Min[#]>=0 && Max[#]<=1,#,{0,0,0}] &,
   sum,
   {2}
  ]

it is still more compact.

Regards
   Jens

congruentialuminaire at yahoo.com wrote:
> Hello UG:
> 
> I have a 512x512 array of 3-tuples. I want to make any tuple with a
> value outside of 0 <--> 1, become {0.,0.,0.}.
> 
> The first version has this loop:
> 
> For[i = 1, i <= graphSize, i++,
>   For[j = 1, j <= graphSize, j++,
>    If[((sum[[i, j, 1]] < 0) || (sum[[i, j, 1]] > 1) ||
>       (sum[[i, j, 2]] < 0) || (sum[[i, j, 2]] > 1) ||
>       (sum[[i, j, 3]] < 0) || (sum[[i, j, 3]] > 1)),
>     sum[[i, j]] = {0., 0., 0.}
>     ]
>    ]
>   ];
> 
> After scratching my head for a while I came up with this (equivalent)
> Map statement.
> 
> sum = Map[
>    If[#[[1]] < 0 || #[[1]] > 1 || #[[2]] < 0 || #[[2]] > 1 || #[[3]] <
>         0 || #[[3]] > 1, {0., 0., 0.}, #] &, sum, {2}];
> 
> It is faster but only by about 15%.
> 
> It is unreasonable to believe some other construction can accomplish
> this with a bigger payoff?
> 
> Thanks in advance.
> 
> Regards..Roger W.
> 


  • Prev by Date: Probable bug: EvaluationMonitor with NIntegrate, "ExtrapolatingOscillatory",
  • Next by Date: .NET/Link: Explicitly define data type to be sent to .NET object?
  • Previous by thread: Probable bug: EvaluationMonitor with NIntegrate, "ExtrapolatingOscillatory",
  • Next by thread: Re: [functional approach should give] an even faster way to normalize