one-dimensional and two-dimensional convolution

*To*: mathgroup at smc.vnet.net*Subject*: [mg69076] one-dimensional and two-dimensional convolution*From*: "bd satish" <bdsatish at gmail.com>*Date*: Tue, 29 Aug 2006 04:47:36 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

Hi buddies , Here is the definition of a 1-dimensional discrete-time convolution (encountered in Signals & Systems ,etc) of two functions x[n] and h[n] : y[n] = Sum[ x[k] * h[n-k] , { k , -Infiniy , Infinity }] The above command works when x[n] and y[n] are functions in the strict sense (say , x[n] = Exp[-2*pi*n/6] UnitStep[n] and h[n] = Exp[-4*Pi*n/7] UnitStep[n] ) But in Signal processing , we often have lists : X= { 1,2,3,1,-1 } , H = { 1,-4,5,6} etc. where the entries are the function's values at different values of n . i.e. X = { x[0] , x[1] , x[2] , x[3] , x[4] } . Similarly H = { h[0] , h[1] , h[2] , ... } (, say ) Without using Sum ( and DiscreteDelta ) , is there any way to directly (& quickly) find the convolution sum. I'm finding convolution of lists whose lengths are typically 700 to 1000. So the code needs be really fast. The Mathematica command " ListConvolve " did not help me. Anybody plz help me out !! Also , the 2-dimensional convolution of two-variable functions , f[x,y] and h[x,y] is defined as : z[x,y] = Sum[ Sum[ f[m,n] * h[x-m , y-n] , { m , -Infinity, Infinity } ] , { n , -Infinity , Infinity } ] But in image processing , we often have nested lists. In this case , f[x,y] and h[x,y] are matrices : f = { { 1,2,3 } , { 4,5,6 } ,{7,8,9} } etc. Similarly h . There are no restrictions on the dimensions of matrices f and h . Mathgroup , plz help me in solving these 1-D and 2-D convolutions !!