卷积

概述

DSP中卷积的物理意义就是信号经过系统后在时间上不断叠加的结果,t时刻卷积的值就是t时刻以及t时刻之前信号对系统产生响应值的总和——加权求和

概率论的角度,举例为 X、Y 两组连续型随机变量,那么令Z=X+Y ,当X、Y两组变量独立时,就能推导出卷积公式了,fz=fx*fy的意义就是在于两组变量叠加出来的概率密度,也就是算两信号X、Y混叠起来的时候的响应。

两个一维向量的卷积(可以参考matlab中conv命令):

\[x = (x_0, x_1, x_2) \\ y = (y_0, y_1) \\ x * y = (x_0y_0, x_1y_0 + x_0y_1, x_2y_0 + x_1y_1, x_2y_1)\]

可以看出卷积后的向量长度 length(x*y) = length(x)+length(y)-1。二维向量卷积参考命令conv2

LTI系统

线性时不变(LTI,Linear Time Invariant)系统,是输出不会直接随着时间变化的线性系统:

如果输入信号x(t)产生输出y(t),那么对于任意时间延迟的输入x(t+d)将得到相同时间延迟的输出y(t+d)。

线性系统满足 齐次性叠加性,输入信号无时不刻不在被系统加成,而不是只加成一次。

实例:复利

卷积的概念在很多地方会用到,例如:微分方程、傅立叶变换及其应用、图像处理、概率论、卷积神经网络。

例一: 评估一个地区工厂化学药剂的污染(工厂会排放化学物质,化学物质又会挥发散去),药剂的残余量是个卷积。 假设t时刻工厂化学药剂的排放量是f(t) mg,被排放的药物在排放后Δt时刻的残留比率是g(Δt) mg/mg;那么在u时刻,对于t时刻排放出来的药物,它们对应的Δt=u-t,于是u时刻化学药剂的总残余量就是∫f(t)g(u-t)dt,这就是卷积了。

例二,连续复利: 假设银行年利率5%,小明每年往银行存100¥,连续复利计算,5年后小明的总收益:

convolution compound interest

用求和符号来简化这个公式就是:

\[\sum_{t=0}^5 f(t) g(5-t), \quad \mbox{while} f(t)=100, g(5-t)=1.05^{5-t}\]

其中,$f(t)$是小明的存钱函数,$g(t)$是存入银行的每一笔钱的复利计算函数。在这里,小明最终得到的钱就是他的存钱函数和复利计算函数的卷积。

推广到连续函数就是卷积公式:

\[\int_{0}^{t} f(\tau)g(t-\tau)d\tau=\int_{0}^{t} f(\tau)(1+5\%)^{t-\tau}d\tau\]

更多实例见这里:http://blog.sciencenet.cn/home.php?mod=space&uid=287179&do=blog&id=425373

卷积公式

卷积和(convolution sum)公式(用星号 $*$ 表示卷积符号):

\[h(t) = f(t)*g(t) = \sum _{\tau =-\infty }^{\infty }f(\tau )g(t-\tau )\]

一维卷积的时域表示:

\[h(t)=f(t)*g(t) = \int _{-\infty }^{\infty }f(\tau )g(t-\tau )d\tau = \int _{-\infty }^{\infty }f(t-\tau )g(\tau )d\tau\]

二维卷积:

\[h(x,y)=f*g=\int _{-\infty }^{\infty }\int _{-\infty }^{\infty }f(\mu,\nu)g(x-\mu,y-\nu) d\mu d\nu\]

多项式相乘 -> 系数卷积

  • 反褶:一般多项式都是按x的降幂排列,这里将其中一个多项式的各项按x的升幂排列。
  • 平移:将按x的升幂排列的多项式每次向右平移一个项。
  • 相乘:垂直对齐的项分别相乘。
  • 求和:相乘的各结果相加。

杨辉三角,可以由多次卷积生成(matlab代码):

>> x = [1, 1]; y = [1, 1];
>> y = conv(x, y)
>> y = conv(x, y)
...

卷积定理

傅立叶变换有一个推论:

\[\mathcal {F}[\alpha f(t) + \beta g(t)] = \alpha F(s) + \beta G(s)\]

这个公式意思是,一个时域下的复杂信号函数可以分解成多个简单信号函数的和,然后对各个子信号函数做傅里叶变换并再次求和,就求出了原信号的傅里叶变换。这个事实显然很有用处。

但除了加法之外,还有乘法。这时候有一个问题:是否存在某种新的f(t)和g(t)的结合方式,使得f(t)和g(t)结合后的函数的傅里叶变换结果是F(s)G(s)?

可以推导出卷积在频域的表示:

\[H(s) = G(s)F(s) \\ \mathcal {F}[h(t)] = \mathcal {F}[g(s)] \mathcal {F}[f(s)] \\ \mathcal {F}[(g*f)(s)] = \mathcal {F}[g(s)] \mathcal {F}[f(s)]\]

最后的公式,也被叫做卷积定理(Convolution Theorem)。 卷积定理说明,信号f和信号g的卷积的傅里叶变换,等于f、g各自的傅里叶变换的积。

示例:利用卷积计算两个信号的乘积

利用欧拉公式,信号可以分解为类似多项式的形式,如$a_2x^2+a_1x+a_0$,且满足 $x^n=f(n\omega_0)$,则两个信号相乘的结果可以通过卷积计算出来。

假设有两个信号 $f(t)$ 和 $g(t)$,其中,$\omega$ 代表角频率,$t$ 表示时间:

\[f(t) = (\cos2\omega t+ 5\cos\omega t +6) + i(\sin 2\omega t+ 5\sin\omega t) \\ g(t) = (3\cos\omega t+2) + i 3\sin\omega t\]

如果按照一般方法直接相乘,会涉及一系列三角函数公式,计算过程非常麻烦。但可以把信号表示成$\sum\left(e^{i\omega}\right)^n$的形式(把信号表示成多项式其实就是傅立叶展开):

\[f(t) = (e^{i\omega})^2+5(e^{i\omega}) +6 \\ g(t) = 3(e^{i\omega}) + 2\]

另 $x=e^{i\omega}$,则

\[f(t) = x^2+5x+5 \\ g(t) = 3x+2 \\ h(t) = (f*g)(t) = (x^2+5x+6)(3x+2)=3x^3+17x^2+28x+12\]

最后那一步的系数可以通过卷积计算出来: $[1, 5, 6]*[3,2] = [3,17,28,12]$,再将$x=e^{i\omega}$ 代回去,就得到:

\[h(t) = f(t)g(t) = 3e^{i3\omega} +17e^{i2\omega} +28e^{i\omega}+12\]

一个结论:时域信号乘积,相当于频域卷积。

参考

  • http://bbs.c114.net/thread-394879-1-1.html#pid4546802