1 离散卷积
离散时间的卷积本质上是求两个序列的乘积和,公式为:
m为卷积核h(n)的长度,以序列s(n)={1,3,-1,5,2,6,4,-2}和序列h(n)={1,2,3}为例,m=8,对两个序列进行卷积时,需要将h(n)从左至右通过s(n),在通过时对两个序列的公共部分相乘求和,即:
以上两个序列的计算结果为{1,5,8,12,9,25,22,24,8,-6},其中{1,5}、{8,-6}为部分卷积,中间6个位全卷积[1]。
2 卷积与点积
MATLAB conv函数是一种快速的卷积计算方式,可以进行类似于矩阵A(1×n)与B(n×1)的相乘累加的操作,求出的结果为一个数。
差别在于
- 矩阵乘法中两个向量的维度需要一致,且只会输出一个值
- 而卷积过程中两个序列的维度可以不同,会输出多个值。即conv函数定义的“卷积和多项式乘法”
且在计算过程中,可以选择‘full’,‘same’,‘valid’,差别在于对弃置区(未全卷积)的处理方式,功能如下:
‘full’ | 全卷积(默认值)。{1 5 8 12 9 25 22 24 8 -6} |
‘same’ | 与s(n)大小相同的卷积的中心部分。{5 8 12 9 25 22 24 8} |
‘valid’ | 仅计算的没有补零边缘的卷积部分。{8 12 9 25 22 24} |
3 卷积与插值
采样定理表明,可以通过卷积重建信号,核函数为sinc(x)函数,插值信号为:
其中x为待插值点,i为原始采样点。插值的原理为卷积,但是这里并不能直接使用conv进行卷积计算,由于conv只能对两个已知的序列进行计算,而不会产生新的待插值点,因此这里不能使用原始信号序列与sinc核序列进行conv计算,实际上这里插值计算需要通过上面的点积来实现。例如8点sinc需要计算8点插值核与8点原始数据的点积,至于插值核如何确定,原始数据如何选取下一篇再讲。
[1] Lan G.Cumming Frank H.Wong.合成孔径雷达成像: 算法与实现[M].电子工业出版社,2012.
以上个人理解,欢迎交流讨论。