       Re: an even faster way to normalize a

• To: mathgroup at smc.vnet.net
• Subject: [mg85690] Re: an even faster way to normalize a
• From: Ray Koopman <koopman at sfu.ca>
• Date: Tue, 19 Feb 2008 02:01:10 -0500 (EST)
• References: <fp9945\$199\$1@smc.vnet.net>

```On Feb 17, 4:25 am, congruentialumina... 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[#[] < 0 || #[] > 1 || #[] < 0 || #[] > 1 || #[] <
>         0 || #[] > 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?
>
>
> Regards..Roger W.

sum = Table[Random[Real,{-.1,1.1}],{512},{512},{3}];
Timing[a = Map[If[#[] < 0 || #[] > 1 || #[] < 0 || #[] >
1 || #[] < 0 || #[] > 1, {0., 0., 0.}, #] &, sum, {2}];]
Timing[b = Map[If[#[] < 0 || #[] > 1 &[Sort@#],
{0., 0., 0.}, #] &, sum, {2}];]
a === b

{0.86 Second,Null}
{0.72 Second,Null}
True

```

• Prev by Date: Re: an even faster way to normalize a
• Next by Date: Re: an even faster way to normalize a
• Previous by thread: Re: an even faster way to normalize a
• Next by thread: Re: an even faster way to normalize a