MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Is there a way to make ListConvolve to use a adaptive kernel?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg78603] Re: Is there a way to make ListConvolve to use a adaptive kernel?
  • From: Roland Franzius <roland.franzius at uos.de>
  • Date: Thu, 5 Jul 2007 04:03:28 -0400 (EDT)
  • Organization: Universitaet Hannover
  • References: <f6fqqv$8o9$1@smc.vnet.net>

lsls schrieb:
> Hi All,
> 
> Can the function ListConvolve accept a kernel that changes with the
> position that it's operating on? What would be the syntext? If not
> ListConvolve then any other functions that can do adaptive
> convolution?

Consider the two examples

one using counters

In:
z = 1; t = 2;
ListConvolve[{Subscript[a, 1], Subscript[a, 2]},
  Subscript[b, #] & /@ Range[1, 6], 1, {Subscript[q,
   33]}, (t++^-2*CircleTimes[#1, #2] &), CirclePlus[#1* z++, #2] &]

Out:
{(Subscript[a, 2] \[CircleTimes] Subscript[q, 33])/
    4 \[CirclePlus] (Subscript[a, 1] \[CircleTimes] Subscript[b, 1])/
        9, (Subscript[a, 2] \[CircleTimes] Subscript[b, 1])/
    8 \[CirclePlus]
      (Subscript[a, 1] \[CircleTimes] Subscript[b, 2])/25,
    (Subscript[a, 2] \[CircleTimes] Subscript[b, 2])/
    12 \[CirclePlus] (Subscript[a, 1] \[CircleTimes] Subscript[b, 3])/
        49, (Subscript[a, 2] \[CircleTimes] Subscript[b, 3])/
    16 \[CirclePlus]
      (Subscript[a, 1] \[CircleTimes] Subscript[b, 4])/81,
    (Subscript[a, 2] \[CircleTimes] Subscript[b, 4])/
    20 \[CirclePlus] (Subscript[a, 1] \[CircleTimes] Subscript[b, 5])/
        121, (Subscript[a, 2] \[CircleTimes] Subscript[b, 5])/
    24 \[CirclePlus]
      (Subscript[a, 1] \[CircleTimes] Subscript[b, 6])/169}

or using the indices

In:

ListConvolve[{Subscript[a, 1], Subscript[a, 2]},
  Subscript[b, #] & /@ Range[1, 6], 1, {Subscript[q,
   33]}, #2[[2]]*#1 ** #1[[2]] #2 &, #1\[CirclePlus]#2 &]

Out:

{33*Subscript[a, 2] ** 2*Subscript[q, 33] \[CirclePlus]
   Subscript[a, 1] ** 1*Subscript[b, 1],
    Subscript[a, 2] ** 2*Subscript[b, 1] \[CirclePlus]
   2*Subscript[a, 1] ** 1*Subscript[b, 2],
    2*Subscript[a, 2] ** 2*Subscript[b, 2] \[CirclePlus]
   3*Subscript[a, 1] ** 1*Subscript[b, 3],
    3*Subscript[a, 2] ** 2*Subscript[b, 3] \[CirclePlus]
   4*Subscript[a, 1] ** 1*Subscript[b, 4],
    4*Subscript[a, 2] ** 2*Subscript[b, 4] \[CirclePlus]
   5*Subscript[a, 1] ** 1*Subscript[b, 5],
    5*Subscript[a, 2] ** 2*Subscript[b, 5] \[CirclePlus]
   6*Subscript[a, 1] ** 1*Subscript[b, 6]}


A nice way to write convolutions of lists of numbers with position 
dependent kernel is to subscript the lists and defining the plus and 
times of subsripted numbers as pure functions depending on the indices.

-- 

Roland Franzius


  • Prev by Date: Re: Simple but puzzling plotting question
  • Next by Date: Re: a transparent persistence layer for Mathematica
  • Previous by thread: Re: Is there a way to make ListConvolve to use a adaptive kernel?
  • Next by thread: Re: Frustrated with Plotting