Re: 2D Convolution
- To: mathgroup at smc.vnet.net
- Subject: [mg76005] Re: 2D Convolution
- From: Mathieu G <ellocomateo at free.fr>
- Date: Mon, 14 May 2007 05:51:05 -0400 (EDT)
- References: <f29389$m7p$1@smc.vnet.net>
Mathieu G a =E9crit : > 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' > Am I going in the right direction??? It looks like the definition on the Hole functions are problem sources!? HoleSize = 300*^-9; BeamRadius = 3.81*^-6; HoleSize = HoleSize/2; DHole =.; SHole =.; DHole[x_, y_] := If[Sqrt[x^2 + y^2] <= HoleSize, 1, 0]; SHole[x_, y_] := If[Abs[x] <= HoleSize && Abs[y] <= HoleSize, 1, 0]= ; Gaussian2D[x_, y_] := Exp[-1/2 ((x/BeamRadius)^2 + (y/BeamRadius)^2)]; Convolve[f_, g_, x_, y_] := Integrate[ Function[{x, y}, f][xPrime, yPrime] Function[{x, y}, g][x - xPrime, y - yPrime], {xPrime, -\[Infinity], \[Infinity]}, {yPrime, -\ \[Infinity], \[Infinity]}, GenerateConditions -> False] Plot3D[DHole[x, y], {x, -2 HoleSize, 2 HoleSize}, {y, -2 HoleSize, 2 HoleSize}, Mesh -> All, PlotRange -> {0, 2}] Convolve[DHole, Gaussian2D, x, y]