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


所有评论(0)