[Date Index]
[Thread Index]
[Author Index]
[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.
Prev by Date:
**Re: Garbage collection and mutable data structures**
Next by Date:
**Re: rendering problem**
Previous by thread:
**Re: Question: Embed mathematica 3d in pdf?**
Next by thread:
**Re: [functional approach should give] an even faster way**
| |