卷积和相关
卷积和相关是多种数据列表运算的核心. 它们被用于信号和图像处理,统计数据分析,偏微分方程的近似,以及数列和幂级数的运算等领域.
卷积和相关的基本思想是将列表依次与数据列表的子列表进行组合. 核
与列表
的卷积的一般形式为
,而相关的一般形式为
.
列表的卷积和相关.
这里构造核

与数据列表的卷积.
| Out[1]= |  |
| Out[2]= |  |
| Out[3]= |  |
| Out[4]= |  |
在与一个核结合构造子列表中,在数据列表的末尾总有一个事情要做. 缺省时,ListConvolve 和 ListCorrelate 绝不会构造"延伸"数据列表的末端的子列表. 这意味着得到的输出通常比原数据列表短.
| Out[5]= |  |
实际上,人们常常希望得到与原数据列表一样长的输出. 要做到这一点,需要包含延伸原数据列表一端或两端的子列表. 构造这些子列表所需的额外元素必须用某种"补丁"来填充. 缺省时,Mathematica 取原列表的拷贝作为补丁. 这样将列表周期地进行处理.
| ListCorrelate[kernel,list] | 不允许在两边延伸(结果比 list 短) |
| ListCorrelate[kernel,list,1] | 允许在右边延伸(结果与 list 的长度相同) |
| ListCorrelate[kernel,list,-1] | 允许在左边延伸(结果与 list 的长度相同) |
| ListCorrelate[kernel,list,{-1,1}] | 允许在两边延伸(结果比 list 长) |
| ListCorrelate[kernel,list,{kL,kR}] | 允许在左边和右边进行特定的延伸 |
控制数据列表末端的处理方式.
| Out[6]= |  |
| Out[7]= |  |
此处第一个元素的第一项和最后一个元素的最后一项都包含重叠.
| Out[8]= |  |
一般情况下,ListCorrelate[kernel, list, {kL, kR}] 被设置为结果的第一个元素中包含 list 的第一个元素与 kernel 在位置
处的元素的乘积,结果的最后一个元素中包含 list 的最后一个元素与 kernel 在位置
处的元素的乘积. 缺省情形下,不允许在任何一端有延伸,因此对应于 ListCorrelate[kernel, list, {1, -1}].
对长度为3的核,

总是使结果的第一个和最后一个元素相同.
| Out[9]= |  |
对于多种数据,不假定数据是周期的,而用某个固定元素,如零或某个元素序列在列表的每端进行补充常常是很方便的.
| ListCorrelate[kernel,list,klist,p] | 用元素 p 补充 |
| ListCorrelate[kernel,list,klist,{p1,p2,...}] |
| 用 的循环进行补充 |
| ListCorrelate[kernel,list,klist,list] | 用原数据的循环进行补充 |
数据列表补充的控制.
这里用元素

补充.
| Out[10]= |  |
| Out[11]= |  |
当使用

表明补充操作时,列表

用在

下对齐的

覆盖

.
| Out[12]= |  |
选择不同的核能使 ListConvolve 和 ListCorrelate 用于不同类型的运算.
| Out[13]= |  |
| Out[16]= |  |
| Out[18]= |  |
可以使用 ListConvolve 和 ListCorrelate 处理符号和数值数据.
| Out[19]= |  |
其结果精确地对应于这两个多项式乘积展开形式中的系数.
| Out[20]= |  |
ListConvolve 和 ListCorrelate 对任意维数的数据都有效.
| Out[22]= |  |
| Out[24]= |  |