Re: Hole/Disk function
- To: mathgroup at smc.vnet.net
- Subject: [mg76091] Re: [mg76024] Hole/Disk function
- From: Murray Eisenberg <murray at math.umass.edu>
- Date: Wed, 16 May 2007 05:26:51 -0400 (EDT)
- Organization: Mathematics & Statistics, Univ. of Mass./Amherst
- References: <200705150845.EAA16651@smc.vnet.net>
- Reply-to: murray at math.umass.edu
Let Mathematica do more of the work: Use Boole, e.g.: holeyDisk[{x_,y_},holeSize_] :=Boole[x^2+y^2<=holeSize^2] I made holeSize an additional parameter to holeyDisk rather than leave it global. It's often safer and clearer to make all parameters explicit like that. If you prefer, you could use the form holeyDisk[x,y,holeSize], with three arguments, instead of the two I used, where the first is a list of the coordinates. You could, if you wished, make holeSize optional by specifying some default value, e.g.: holeyDisk[{x_, y_}, holeSize_: 1] := Boole[x^2 + y^2 <= holeSize^2] Note my use of x^2+y^2,=holeSize^2 so as to avoid taking the square root. Probably of very little consequence in practice, but my intuition is that calculating squares is more efficient than calculating square roots. (I just tested doing tht with 100,000 random reals between 0 and 1, and there a difference on the order of 0.02 seconds.) Mathieu G wrote: > Hello, > Is there a better way to define a Disk/Hole function than that?: > > DHole[x_, y_] := If[Sqrt[x^2 + y^2] <= HoleSize, 1, 0]; > > I would like to use it for a convolution using the definition as shown > in http://oldsite.vislab.usyd.edu.au/CP3/Four5/mod2-01.gif > > Best regards, > MG > -- Murray Eisenberg murray at math.umass.edu Mathematics & Statistics Dept. Lederle Graduate Research Tower phone 413 549-1020 (H) University of Massachusetts 413 545-2859 (W) 710 North Pleasant Street fax 413 545-1801 Amherst, MA 01003-9305
- References:
- Hole/Disk function
- From: Mathieu G <ellocomateo@free.fr>
- Hole/Disk function