Re: 2D Convolution

*To*: mathgroup at smc.vnet.net*Subject*: [mg76061] Re: 2D Convolution*From*: dh <dh at metrohm.ch>*Date*: Tue, 15 May 2007 05:04:58 -0400 (EDT)*References*: <f29389$m7p$1@smc.vnet.net>

Hi Mathieu, Note that the Gaussian and Hole covolution is symmetrical and can therefore done as a much simplier 1 dim problem. However, if you need 2dim, I would advice, due to computing time, to approximate the 2D convolution by a numerical approximation. Here is a small example: Hole[x_,y_]:=If[0.2<x^2+y^2,0,1]; Gaussian[x_,y_]:=Exp[-10(x^2+y^2)]; fun[x_/;NumericQ[x],y_]:= NIntegrate[Gaussian[x-xx,y-yy] Hole[xx,yy],{xx,-2.,2.},{yy,-2.,2.}] ; fun1=FunctionInterpolation[ fun[x,y] ,{x,-1.,1.},{y,-1.,1.}] hope this helps, Daniel Mathieu G wrote: > Hello, > I need your help on this problem please! > I would like to compute + plot a 2D convolution between a disk- or > square shaped hole, and a 2D Gaussian. > Here is where I am so far... > > > HoleSize = 300*^-9; (*Radius or side length*) > BeamRadius = 3.81*^-6; > > Gaussian2D[x_, y_] := Exp[-((x/BeamRadius)^2 + (y/BeamRadius)^2)/2]; > > (*Disk-shape hole*) > DHole = Disk[{0, 0}, HoleSize/2]; > > (*Square-shape hole*) > SHole = Rectangle[{-HoleSize/2, -HoleSize/2}, {HoleSize/2, > HoleSize/2}]; > > Plot3D[Gaussian2D[x, y], {x, -4 BeamRadius, > 4 BeamRadius}, {y, -4 BeamRadius, 4 BeamRadius}, > ColorFunction -> "Rainbow", PlotRange -> Full] > > Beam = Gaussian2D[{x, -5 BeamRadius, 5 BeamRadius}, {y, -5 BeamRadius, > 5 BeamRadius}]; > > (*Graphics3D[Beam] > Graphics[{Red,SHole,Orange,DHole},Frame->True]*) > > > Every advice welcome! > Thank you, > Mat' >