[functional approach should give] an even faster way to normalize a
- To: mathgroup at smc.vnet.net
 - Subject: [mg85648] [functional approach should give] an even faster way to normalize a
 - From: congruentialuminaire at yahoo.com
 - Date: Sun, 17 Feb 2008 07:20:54 -0500 (EST)
 
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.
- Follow-Ups:
- Re: [functional approach should give] an even faster way
- From: Carl Woll <carlw@wolfram.com>
 
 
 - Re: [functional approach should give] an even faster way