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