一、多项式乘法和“卷积”
首先,我们来看一个多项式乘法的计算:
(x+1)(x2+2x+5)
一般地,我们有:
(x+1)(x2+2x+5)=x3+2x2+5x+x2+2x+5=x3+3x2+7x+5
因此,该多项式乘法结果中各项的系数就是:1 3 7 5
总结起来,上面这种方法获得各项系数需要两个步骤:各项相乘、同类项相加
然而,书中却给出了另外一种各加直观简单的办法:
从上图我们可以看出,两个多项式中,下面的多项式按照升幂排列、上面的多项式按照降幂排列。
接着,下面的这一个多项式
5+2x+x2从左到右滑过
x+1,在滑动过程中,
(5+2x+x2)与
(x+1)重叠的地方,对应重叠的部分相乘,再相加。
用下面这个图再感受一下:
到这里,我们先对“卷积”有了一个大概的印象。下面我们推导卷积的公式:
二、“卷积”的计算公式
在上面的例子里面,
x+1的系数是(a[1],a[0]) = (1,1);
5+2x+x2的系数是(a[0],a[1],a[2]) = (5,2,1)
那么计算结果:
x3+3x2+7x+5中各项系数表示为:
常数项的系数为:
c[0]=a[0]b[0]
x的系数为:
c[1]=a[0]b[1]+a[1]b[0]
x2的系数:
c[2]=a[0]b[2]+a[1]b[1]+a[2]b[0]
x3的系数:
c[3]=a[0]b[3]+a[1]b[2]+a[2]b[1]+a[3]b[0]
大家注意到了吗:若我们相乘的两个多项式a,b的最高次分别为:
n1,n2,那么我们计算各项系数的式子都可以归纳为:
c[n]=k=0∑na[j]b[n−k](0≤n≤n1+n2)
【思考】:我们这时就会想:如果信号可以分解成类似
x2+2x+5这样的多项式,同时,还能够保证:
xn=f(nω0),那么两个信号相乘就可以通过卷积计算求出来
书中解释了为何要强调满足
xn=f(nω0)条件:因为我们知道,任何一个周期信号都可以表示成多个频率分量之和:基波分量(
ω0=2Πf),二次谐波分量(
2ω0),三次谐波分量(
3ω0)、、、因此,我们希望信号相乘得到的结果也能够是这样的形式,即是
nω0的函数
【那么,这样的条件是否能够满足呢?】
我们看看这样的表示:
x=f(ω0)=ejω0t=cosω0t+jsinω0t
那么,
x2=(cosω0t+jsinω0t)2=cos2ω0t+2jcosω0tsinω0t−sin2ω0t=cos2ω0t+jsin2ω0t=f(2ω0)
2.1 实例:利用卷积计算两个信号相乘
比如,我们有两个信号
f(t),g(t),它们分别为:
f(t)=(cos2ω0t+5cosω0t+6)+j(sin2ω0t+5sinω0t)
g(t)=(3cosω0t+2)+j3sinω0t
f(t)与
g(t)相乘,是肉眼可见的麻烦。那么如果用卷积运算的思想能不能简化一些呢?
首先,我们先对信号的表达式进行一些处理:
f(t)=(cos2ω0t+5cosω0t+6)+j(sin2ω0t+5sinω0t)=(cos2ω0t+jsin2ω0t)+5(cosω0t+jsinω0t)+6=ej2ω0t+5ejω0t+6
g(t)=(3cosω0t+2)+j3sinω0t=3(cosω0t+jsinω0t)+2=3ejω0t+2
我们令:
ejω0t=x,那么,
f(t),g(t)就可以表示为:
f(t)=x2+5x+6=6+5x+x2;
g(t)=3x+2
这样,我们知道,卷积之和信号最高项次数为3,那么,由卷积运算公式,得:
c[0]=a[0]b[0]=12
c[1]=a[0]b[1]+a[1]b[0]=10+18=28
c[2]=a[0]b[2]+a[1]b[1]+a[2]b[0]=2+15+0=17
c[3]=a[0]b[3]+a[1]b[2]+a[2]b[1]+a[3]b[0]=0+3+0+0=3
因此,我们得到:卷积之后得到的信号按照降幂排列,各项的系数为:3、17、28、12
因此,输出信号可以表示为:
c(t)=3x3+17x2+28x+12=3ej3ω0t+17ej2ω0t+28ejω0t+12
怎么样,卷积运算是不是比普通的强算简单?
三、卷积的生动理解
也许到这里,我们可能会计算离散信号的卷积了。可是,我们会有疑问:卷积到底还能来干啥?
下面,我们就来分析“卷积”的意义:
3.1 卷积能够用来解决什么问题?
这里我们需要了解两种概念:
【无记忆系统】
我们看看这个系统,它执行的是对输入信号+2的操作,那么这样的系统:当前的输出仅仅只取决于当前的输入,和之前的输入无关。这样的系统叫做“无记忆系统”
【记忆系统】:这里我们举一个例子就够:“冰冻三尺非一日之寒”。**某一天冰的厚度不仅取决于当天的温度、还取决于之前好几天的温度。**这就叫记忆系统。
那么卷积就是为了计算诸如此类的拥有记忆系统的输出问题
3.2 卷积运算的前提条件 —— 线性时不变系统
所谓“线性系统”,很简单,就是输出与输入成线性关系。(或者说满足叠加定理)
所谓“时不变系统”,就是系统的参数不随时间而变化,即不管输入信号作用的时间先后,输出信号响应的形状均相同,仅是从出现的时间不同。
(我们这里这样理解:先暂时抛开“记忆系统”,我们就考虑一个无记忆时不变系统:假设这个系统输入x,输出y(固定关系)。那么系统在
t1时刻输入x,系统输出y;在
t2时刻输入x,系统依然输出y,这两个y大小形状完全一样,只不过这两次y出现的时间不一样罢了)
如果系统满足线性时不变系统,再把记忆系统的条件加上,那么就可以用卷积的方法,将输入信号进行分解,分解成独立的脉冲序列。系统的输出就等于独立脉冲输出的累加。
3.3 图解卷积的意义
我们假设一个系统,在某一时刻突然收到一个输入信号,但瞬间就又消失了(一个冲击信号),那么系统就会像下图一样缓慢地恢复到原来的状态:
下面我们来看另一种情况:假设这个系统在恢复的过程中(比如说第2s)又收到一个一样的冲击,那么,它就变成这样了:
那么,它的输出会再一次增长(而且会增长到比第一次响应更大的位置),再开始衰减。
如果继续按每隔2s的频率给它冲激响应,就会变成下面这个样子:
那么,某一时刻
t系统的输出与什么有关呢?答案是:与每一次的冲击响应都有关,但是每一次冲击响应对
t时刻输出的贡献程度都不一样,距离
t最近的那一次冲击响应对输出的影响最大。
某一时刻的输出就是之前很多次输入(冲击响应)乘以各自的衰减系数之后的叠加而形成某一点的输出,然后再把不同时刻的输出点放在一起,形成一个函数,这就是卷积,卷积之后的函数就是这个系统的输出大小随时间变化的函数
如果冲击响应再密集一点,就有积分那味儿了:
因此卷积之后得到的结果就是记忆系统输出随时间变化的函数
3.4 卷积公式推导再回顾
还记得我们在3.3中提到的话吗?
如果系统满足线性时不变系统,再把记忆系统的条件加上,那么就可以用卷积的方法,将输入信号进行分解,分解成独立的脉冲序列。系统的输出就等于独立脉冲输出的累加。
那么,也就是说我们现在的工作就是先要把输入信号分解成独立的脉冲:
先引入单位冲击函数:
δ(n)={10n=0n=0
只有在n = 0时刻,才是单位冲击,其他时刻均为0
下面,我们设输入信号为
x(n),某一时刻
k的输入为:
x(k),那么输入信号就可以分解为:
x(k)δ(n−k)
也就是只有当n = k时,输出信号才有值,其他时候没有值。
于是,整个输入信号x(n)就可以表示为所有时刻输入值对应的脉冲信号的累加
x(n)=−∞∑+∞x(k)δ(n−k)
然后,我们还有一个定义:单位脉冲响应:就是单位脉冲信号输入到系统后产生的输出。
如果系统的单位脉冲响应是
h(n),那么独立脉冲输出的累加就是:
y(n)=−∞∑+∞x(k)h(n−k)
这就是卷积的公式!!
参考文献
[1][原创连载]深入浅出通信原理
[2] 信号处理-卷积