[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