Re: What is the fastest way to threshold data?
- To: mathgroup at smc.vnet.net
- Subject: [mg85931] Re: What is the fastest way to threshold data?
- From: "Kevin J. McCann" <Kevin.McCann at umbc.edu>
- Date: Thu, 28 Feb 2008 02:45:56 -0500 (EST)
- Organization: University System of Maryland
- References: <fq3af1$fot$1@smc.vnet.net>
Thanks to Carl Woll, Sseziwa Mukasa, Valeri Astanoff, and Bob Hanlon for
responding to my query. I looked at each and they all work as expected,
of course. The fastest is the suggestion due to Carl to use Clip:
threshold = 0.75;
data = RandomReal[{-1, 1}, {1000000, 3}];
Timing[data[[All, 3]] = Clip[data[[All, 3]], {threshold, Infinity}];]
This runs in about 0.1s on my computer and is at least 10 times faster
than the others. Thanks again.
Kevin
Kevin J. McCann wrote:
> I have some 3d data {{x1,y1,z1},{x2,y2,z2},...} and I would like to set
> the z-values to zero if they fall below zero. More generally, I would
> like to set z to a threshold value if it is at or below a threshold.
> This seems as though it should be an easy enough thing to do, but the
> only way I have figured out is to parse out the z-vector, do
>
> mask=((#<thresh&) /@ zdata)/.True->0/.False->1;
>
> then
> zvector = zvector*mask;
>
> and rebuild the {x,y,z} data.
>
> Kevin
--
Kevin J. McCann
Research Associate Professor
JCET/Physics
Physics Building
University of Maryland, Baltimore County
1000 Hilltop Circle
Baltimore, MD 21250