Re: 2D Convolution
- To: mathgroup at smc.vnet.net
- Subject: [mg76140] Re: 2D Convolution
- From: CKWong <CKWong.P at gmail.com>
- Date: Wed, 16 May 2007 05:51:57 -0400 (EDT)
- References: <f29389$m7p$1@smc.vnet.net><f29bko$pjn$1@smc.vnet.net>
You need to re-define your Convolve like this:
Convolve[f_, g_, x_?NumberQ, y_?NumberQ] := NIntegrate[f[
xPrime, yPrime] *g[x - xPrime,
y - yPrime], {xPrime, -=A1=DB, =A1=DB}, {yPrime, -=A1=DB, =A1=DB}]
When calling Convolve, remember to place the kernel as the first
function, e.g.,
Convolve[Gaussian2D, SHole, 0, 0]
You can plot the convolution like this:
Plot3D[Convolve[Gaussian2D, SHole, x, y] // Evaluate, {x, -HoleSize,
HoleSize}, {y, -HoleSize, HoleSize}]
However, this scheme is too slow for the round hole, for which case,
it's better to switch to polar coordinates so that the angular part
can be integrated by hand.