ListConvolve
ListConvolve[ker,list]
forms the convolution of the kernel ker with list.
ListConvolve[ker,list,k]
forms the cyclic convolution in which the k element of ker is aligned with each element in list.
ListConvolve[ker,list,{kL,kR}]
forms the cyclic convolution whose first element contains list[[1]]ker[[kL]] and whose last element contains list[[-1]]ker[[kR]].
ListConvolve[ker,list,klist,p]
forms the convolution in which list is padded at each end with repetitions of the element p.
ListConvolve[ker,list,klist,{p1,p2,…}]
forms the convolution in which list is padded at each end with cyclic repetitions of the pi.
ListConvolve[ker,list,klist,padding,g,h]
forms a generalized convolution in which g is used in place of Times and h in place of Plus.
ListConvolve[ker,list,klist,padding,g,h,lev]
forms a convolution using elements at level lev in ker and list.
Details
- With kernel Kr and list as, ListConvolve[ker,list] computes , where the limits of the sum are such that the kernel never overhangs either end of the list.
- ListConvolve[ker,list] gives a result of length Length[list]-Length[ker]+1.
- ListConvolve[ker,list] allows no overhangs and is equivalent to ListConvolve[ker,list,{-1,1}].
- ListConvolve[ker,list,k] is equivalent to ListConvolve[ker,list,{k,k}].
- The values of kL and kR in ListConvolve[ker,list,{kL,kR}] determine the amount of overhang to allow at each end of list.
- Common settings for {kL,kR} are:
-
{-1,1} no overhangs (default) {-1,-1} maximal overhang at the right‐hand end {1,1} maximal overhang at the left‐hand end {1,-1} maximal overhangs at both beginning and end - With maximal overhang at one end only, the result from ListConvolve is the same length as list.
- ListConvolve[ker,list,{kL,kR},padlist] effectively lays down repeated copies of padlist, then superimposes one copy of list on them and forms a convolution of the result.
- Common settings for padlist are:
-
p pad with repetitions of a single element {p1,p2,…} pad with cyclic repetitions of a sequence of elements list pad by treating list as cyclic (default) {} do no padding - ListConvolve works with multidimensional kernels and lists of data.
- ListConvolve[ker,list,{{kL 1,kL 2,…},{kR 1,kR 2,…}}] forms the cyclic convolution whose {1,1,…} element contains ker[[kL 1,kL 2,…]]list[[1,1,…]], and whose {-1,-1,…} element contains ker[[kR 1,kR 2,…]]list[[-1,-1,…]].
- {kL,kR} is taken to be equivalent to {{kL,kL,…},{kR,kR,…}}.
- When a function h is specified to use in place of Plus, explicit nested h expressions are generated with a depth equal to the depth of ker.
- ListConvolve works with exact numbers and symbolic data as well as approximate numbers.
Examples
open allclose allBasic Examples (4)
Scope (9)
Overhangs and Alignments (4)
"Slide" the kernel along the data, allowing no overhangs:
Maximal overhang at the beginning; none at the end:
Maximal overhang at the end; none at the beginning:
Maximal overhangs at both beginning and end:
Align element 1 of the kernel with the first element of the data:
Align element 2 of the kernel with the first element of the data:
Align element 3 of the kernel with the first element of the data:
Align the last element of the kernel with the first element of the data:
Align the first element of the kernel with both the first and last elements of the data:
Align element 2 of the kernel with the first element of the data:
Align element 2 of the kernel with the last element of the data:
Generalizations & Extensions (4)
ListConvolve works with sparse arrays:
Use f in place of Times:
Use g in place of Plus:
Use f and g in place of Times and Plus, with empty data padding:
ListConvolve works with TimeSeries:
Applications (9)
Or use the MovingAverage function:
Find the autocorrelation of a list:
Apply a simple image processing filter:
Multiply polynomials by convolving coefficient lists:
Multiply numbers by convolving digit lists:
Additive cellular automaton in base 5:
Fast multiplication of high‐degree polynomials:
Use ListConvolve with maximal overhangs and zero padding:
Properties & Relations (8)
A function for constructing a circulant matrix from a vector:
Cyclic convolution is equivalent to multiplication with a circulant matrix:
Cyclic convolution is also equivalent to multiplication in the discrete Fourier transform domain:
A function for constructing a lower triangular Toeplitz matrix from a vector:
Cyclic convolution with zero-padding is equivalent to multiplication with a lower triangular Toeplitz matrix:
Convolve with a single element:
A kernel of the same length as the data, with no overhangs, is like a reversed dot product:
Align with successive elements:
Varying alignments, with padding:
Text
Wolfram Research (1999), ListConvolve, Wolfram Language function, https://reference.wolfram.com/language/ref/ListConvolve.html.
CMS
Wolfram Language. 1999. "ListConvolve." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/ListConvolve.html.
APA
Wolfram Language. (1999). ListConvolve. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ListConvolve.html