图示两个方形脉冲波的卷积。其中函数 "g" 首先对 反射,接着平移 "t" ,成为
。那么重叠部份的面积就至关于 "t" 处的卷积,其中横坐标表明待积变量
以及新函数
的自变量 "t" 。php
图示方形脉冲波和指数衰退的脉冲波的卷积(后者可能出现于 RC电路中),一样地重叠部份面积就至关于 "t" 处的卷积。注意到由于 "g" 是对称的,因此在这两张图中,反射并不会改变它的形状。html
在泛函分析中,卷积(捲積)、旋積或摺積,是经过两个函数f 和g 生成第三个函数的一种数学算子,表征函数f 与通过翻转和平移的g 的重叠部分的累积。若是将参加卷积的一个函数看做区间的指示函数,卷积还能够被看做是“滑动平均”的推广。git
卷积是分析数学中一种重要的运算。设: ,
是
上的两个可积函数,做积分:算法
能够证实,关于几乎全部的 ,上述积分是存在的。这样,随着
的不一样取值,这个积分就定义了一个新函数
,称为函数
与
的卷积,记为
。咱们能够轻易验证:
,而且
仍为可积函数。这就是说,把卷积代替乘法,
空间是一个代数,甚至是巴拿赫代数。api
卷积与傅里叶变换有着密切的关系。例如两函数的傅里叶变换的乘积等于它们卷积后的傅里叶变换,利用此一性质,能简化傅里叶分析中的许多问题。app
由卷积获得的函数 通常要比
和
都光滑。特别当
为具备紧支集的光滑函数,
为局部可积时,它们的卷积
也是光滑函数。利用这一性质,对于任意的可积函数
,均可以简单地构造出一列逼近于
的光滑函数列
,这种方法称为函数的光滑化或正则化。dom
卷积的概念还能够推广到数列、测度以及广义函数上去。svg
函数f 与g 的卷积记做,它是其中一个函数翻转并平移后与另外一个函数的乘积的积分,是一个对平移量的函数。函数
积分区间取决于f 与g 的定义域。spa
对于定义在离散域的函数,卷积定义为
图解卷积
若是f(t)是一个单位脉冲,咱们获得的乘积就是g(t)自己,称为冲激响应 。
当 为有限长度
,
为有限长度
的信号,计算卷积
有三种主要的方法,分别为 1.直接计算(Direct Method) 2.快速傅里叶转换(FFT) 和 3.分段卷积 (sectioned convolution)。方法1是直接利用定义来计算卷积,而方法2和3都是用到了FFT来快速计算卷积。也有不须要用到FFT的做法,如使用数论转换。
,
。
分段卷积: Overlap-Add
欲作的分段卷积分,
长度为
,
长度为
,
Step 1: 将每
分红一段
Step 2: 再每段 点后面添加
个零,变成长度
Step 3: 把 添加
个零,变成长度
的 h'[n]}
Step 4: 把每一个 x[n]} 的小段和 h'[n]}
作快速卷积,也就是 IDFT_{L+M-1}\{{DFT_{L+M-1}(x[n])DFT_{L+M-1}(h'[n])}\}}
,每小段会获得长度
的时域信号
Step 5: 放置第 i} 个小段的起点在位置 L\times i}
上, i=0,1,...,\lceil {\frac {N}{L}}\rceil -1}
Step 6: 会发如今每一段的后面 M-1} 点有重叠,将全部点都相加起来,顾名思义 Overlap-Add,最后获得结果
举例来讲:
x[n]=[1,2,3,4,5,-1,-2,-3,-4,-5,1,2,3,4,5]}, 长度 N=15}
h[n]=[1,2,3]}, 长度 M=3}
令 L=5}
令 L=5} 切成三段,分别为 x_{0}[n],x_{1}[n],x_{2}[n]}
, 每段填 M-1}
个零,并将
填零至长度
将每一段作 IDFT_{L+M-1}\{{DFT_{L+M-1}(x[n])DFT_{L+M-1}(h'[n])}\}}
若将每小段摆在一块儿,能够注意到第一段的范围是 0\thicksim 6} ,第二段的范围是 5\thicksim 11}
,第三段的范围是 10\thicksim 16}
,三段的范围是有重叠的
最后将三小段加在一块儿,并将结果和未分段的卷积作比较,上图是分段的结果,下图是没有分段并利用快速卷积所算出的结果,验证二者运算结果相同。
分段卷积: Overlap-Save
欲作 x[n]*h[n]}的分段卷积分, x[n]}
长度为 N}
,
长度为 M}
,
Step 1: 将 x[n]} 前面填 M-1}
个零
Step 2: 第一段 i=0}, 重新的
中
取到
总共
点当作一段,所以每小段会重复取到前一小段的
点,取到新的一段全为零为止
Step 3: 把 添加 L-M}
个零,变成长度
的
Step 4: 把每一个 的小段和
作快速卷积,也就是
,每小段会获得长度
的时域信号
Step 5: 对于每一个小段,只会保留末端的 点,所以得名 Overlap-Save
Step 6: 将全部保留的点合再一块儿,获得最后结果
举例来讲:
, 长度
, 长度
令
将 前面填
个零之后,按照 Step 2 的方式分段,能够看到每一段都重复上一段的
点
再将每一段作之后能够获得
保留每一段末端的 点,摆在一块儿之后,能够注意到第一段的范围是
,第二段的范围是
,第三段的范围是}
,第四段的范围是
,四段的范围是没有重叠的
将结果和未分段的卷积作比较,下图是分段的结果,上图是没有分段并利用快速卷积所算出的结果,验证二者运算结果相同。
至于为何要把前面 M-1} 丢掉?
如下以一例子来阐述:
, 长度
,
, 长度
,
第一条蓝线表明 轴,而两条蓝线之间表明长度
,是在作快速卷积时的周期
当在作快速卷积时,是把信号视为周期
,在时域上为循环卷积分,
而在一开始前 点所获得的值,是
和
内积的值,
然而 这
个值应该要为零,以往在作快速卷积时长度为
时不会遇到这些问题,
而今天由于在作快速卷积时长度为 才会把这
点算进来,所以咱们要丢弃这
点内积的结果
为了要丢弃这 M-1} 点内积的结果,位移 h[-n]}
M-1}
点,并把位移之后内积合的值才算有效。
以上三种方法皆可用来计算卷积,其差异在于所需整体乘法量不一样。基于运算量以及效率的考量,在计算卷积时,一般会选择所需整体乘法量较少的方法。
如下根据 和
的长度(
)分红5类,并列出适合使用的方法:
基本上,以上只是粗略的分类。在实际应用时,最好仍是算出三种方法所需的总乘法量,再选择其中最有效率的方法来计算卷积。
Q1: 当 ,适合用哪一种方法计算卷积?
Ans:
Q2: 当 ,适合用哪一种方法计算卷积?
Ans:
Q3: 当 ,适合用哪一种方法计算卷积?
Ans:
按照翻转、平移、积分的定义,还能够相似的定义多元函数上的积分:
各类卷积算子都知足下列性质:
其中Df 表示f的微分,若是在离散域中则是指差分算子,包括前向差分与后向差分两种:
卷积定理指出,函数卷积的傅里叶变换是函数傅里叶变换的乘积。即,一个域中的卷积至关于另外一个域中的乘积,例如时域中的卷积就对应于频域中的乘积。
其中表示f 的傅里叶变换。
这必定理对拉普拉斯变换、双边拉普拉斯变换、Z变换、Mellin变换和Hartley变换(参见Mellin inversion theorem)等各类傅里叶变换的变体一样成立。在调和分析中还能够推广到在局部紧致的阿贝尔群上定义的傅里叶变换。
利用卷积定理能够简化卷积的运算量。对于长度为的序列,按照卷积的定义进行计算,须要作
组对位乘法,其计算复杂度为
;而利用傅里叶变换将序列变换到频域上后,只须要一组对位乘法,利用傅里叶变换的快速算法以后,总的计算复杂度为
。这一结果能够在快速乘法计算中获得应用。
若 G 是有某 m 测度的群(例如豪斯多夫空间上哈尔测度下局部紧致的拓扑群),对于G 上 m-勒贝格可积的实数或复数函数f 和g,可定义它们的卷积:
对于这些群上定义的卷积一样能够给出诸如卷积定理等性质,可是这须要对这些群的表示理论以及调和分析的彼得-外尔定理。
卷积在工程和数学上都有不少应用: