文章目录

  • 一、前言
  • 二、线性时不变(LTI)系统
  • 三、冲激函数
  • 四、阶跃函数
  • 五、卷积
  • 5.1 卷积的推导
  • 5.2 LTI系统卷积的性质
  • 5.2.1 交换律
  • 5.2.2 分配律
  • 5.2.3 结合律


数字信号处理是音视频开发所必不可少的一项技能,我会从本篇开始,开启一系列入门文章,分享关于数字信号处理方面的知识。这只是一个精简的知识提炼,供大家进行入门,也是对自己的一个备忘和学习笔记。难免会有纰漏,要深入的同学请务必去看一些经典教材。

文章以 * 来表示乘法,以UnetCNN卷积模型_阶跃函数

一、前言

数字信号处理我们日常生活中其实会经常接触到,像音频、视频、机械控制等等。简单来说就是一个信号UnetCNN卷积模型_阶跃函数_02,通过系统UnetCNN卷积模型_卷积_03后输出信号UnetCNN卷积模型_数字信号处理_04,系统UnetCNN卷积模型_卷积_03需要对信号进行处理,比如滤除噪音、调节频率等等。数字信号处理讲的就是对UnetCNN卷积模型_阶跃函数_02进行操作的学问。

二、线性时不变(LTI)系统

一般我们说数字信号处理都是基于线性时不变(LTI)系统,那么什么是LTI系统呢?顾名思义
1. 线性: 这个线性其实就是我们所用的线性方程中的那个概念,满足叠加定理,比如UnetCNN卷积模型_阶跃函数_07是一个映射(也就是我们常说的函数关系)。假设有UnetCNN卷积模型_数字信号处理_08,经过同样的映射UnetCNN卷积模型_卷积_09,那么UnetCNN卷积模型_UnetCNN卷积模型_10

2. 时不变: 这个就更好理解了。同样一个输入信号,任何时候的输出都是一样的。

三、冲激函数

冲激函数是指在0点上有值,而在其他地方均为0的函数。通常使用UnetCNN卷积模型_阶跃函数_11表示。

连续形式:
UnetCNN卷积模型_卷积_12

上面的式子比较抽象,其实它只有一个定义,就是在负无穷到正无穷的积分是1。

UnetCNN卷积模型_UnetCNN卷积模型_13

离散形式:
UnetCNN卷积模型_数字信号处理_14

UnetCNN卷积模型_数字信号处理_15

它们各有一些性质,不过我们马上使用的是一些直观上的数学性质。

需要说明的一点,之后我们推导的很多公式都会以连续信号和离散信号的形式。连续信号我们以UnetCNN卷积模型_阶跃函数_16表示,离散信号我们以UnetCNN卷积模型_UnetCNN卷积模型_17表示

四、阶跃函数

阶跃函数是从0开始到正无穷都为1,从负无穷到0都为0的函数。

连续形式:

UnetCNN卷积模型_阶跃函数_18

需要注意的是,阶跃函数在t=0这一点是不连续的。
连续的阶跃函数和冲激函数有这么一层关系,从上面讲的连续冲击函数的定义,就可以得出
UnetCNN卷积模型_阶跃函数_19
因为UnetCNN卷积模型_卷积_20在负无穷到正无穷的积分是1。那么UnetCNN卷积模型_卷积_20就是UnetCNN卷积模型_阶跃函数_22的一阶微分。但上面也说过UnetCNN卷积模型_阶跃函数_22在t=0时是不连续的,因此严格来说不是可导的。但如果将UnetCNN卷积模型_阶跃函数_22认为是在一个很小的间隔UnetCNN卷积模型_UnetCNN卷积模型_25内从0上升到1的,那就不难理解了。而这种情况,其实在现实世界中才是真正常见的。

UnetCNN卷积模型_数字信号处理_26

离散形式:
UnetCNN卷积模型_卷积_27

显然离散形式要简单多了。同连续形式,我们也可以得出离散的冲击函数和阶跃函数的关系。
UnetCNN卷积模型_卷积_28
UnetCNN卷积模型_UnetCNN卷积模型_29UnetCNN卷积模型_阶跃函数_30的求和
或者
UnetCNN卷积模型_数字信号处理_31
UnetCNN卷积模型_阶跃函数_30UnetCNN卷积模型_UnetCNN卷积模型_29的差分。

从以上形式不难看出一个规律,离散的求和对应连续的积分,离散的差分对应连续的微分,这一点将会在记忆一些性质的时候特别有用。后面我们也将会更加深刻地体验到。

五、卷积

5.1 卷积的推导

让我们以离散信号举例,从上面的冲激函数和阶跃函数来推导。
设有一信号
UnetCNN卷积模型_数字信号处理_34
由于我们是从数学上来推导,因此暂且不要关心信号的序号为什么会有负的。
由冲激函数的定义,我们可以稍稍变形
UnetCNN卷积模型_UnetCNN卷积模型_35
因为当且仅当UnetCNN卷积模型_卷积_36UnetCNN卷积模型_卷积_37
那么
UnetCNN卷积模型_UnetCNN卷积模型_38

设有一LTI系统对冲激信号UnetCNN卷积模型_阶跃函数_30的响应为UnetCNN卷积模型_阶跃函数_40,称为冲激响应。由我们对LTI系统的定义,它是满足叠加性质的,也就是说,对于系统S,它的输入为UnetCNN卷积模型_阶跃函数_30,输出为UnetCNN卷积模型_阶跃函数_40,根据LTI的线性性质,就有
UnetCNN卷积模型_卷积_43
此处我们把UnetCNN卷积模型_数字信号处理_44看做了一个系数。
因此可以得出系统S对UnetCNN卷积模型_UnetCNN卷积模型_45的输出为
UnetCNN卷积模型_数字信号处理_46
这便是卷积的定义。由此我们也能得出,只要知道了一个系统的冲激响应,那么就可以得出它对任意输入信号的输出。

需要区分UnetCNN卷积模型_阶跃函数_30UnetCNN卷积模型_阶跃函数_40的区别,虽然UnetCNN卷积模型_阶跃函数_30是一个冲激信号,只在一个时段有值,但它的响应UnetCNN卷积模型_阶跃函数_40是一个普通的信号,有可能是任何形式的,但是绝大部分来说,UnetCNN卷积模型_阶跃函数_40都会持续一段时间。

这就好像有一台马达,你在很短的时间内给它电源,断掉之后它还会持续转一会儿。

类似于这样

UnetCNN卷积模型_数字信号处理_52


当然,也有输入时冲激信号,输出也是冲激信号,就是

UnetCNN卷积模型_数字信号处理_53

那么这样的系统我们称之为无记忆系统,当前的输出只和当前的输入有关。但现实世界中我们绝大多数都面对的是有记忆系统,当前的输出和之前的输入以及当前的输入有关。上面马达的例子还有图都是有记忆系统。

说到这个,系统还分为因果系统非因果系统。因果系统是输出仅和之前以及目前的输入有关,而非因果系统是输出和之前、现在以及将来的输入有关。非因果系统实在太过诡异,以至于我目前还无法理解,也没遇到过。我们说的系统,都是因果系统。

5.2 LTI系统卷积的性质

5.2.1 交换律

UnetCNN卷积模型_卷积_54
假设有UnetCNN卷积模型_UnetCNN卷积模型_55
那么
UnetCNN卷积模型_卷积_56

5.2.2 分配律

UnetCNN卷积模型_阶跃函数_57
这个就更简单了,便不单独推导了。

用系统框图表示就是

UnetCNN卷积模型_数字信号处理_58

上下两个系统是等价的

5.2.3 结合律

UnetCNN卷积模型_UnetCNN卷积模型_59

这个需要从求和公式中推导,这里就不展开了,记住就好。

根据这个式子,有一个很重要的结论。

假设信号UnetCNN卷积模型_数字信号处理_60先经过冲激响应为UnetCNN卷积模型_阶跃函数_61系统S1,得到输出为UnetCNN卷积模型_数字信号处理_62,然后UnetCNN卷积模型_数字信号处理_62经过冲激响应为UnetCNN卷积模型_数字信号处理_64系统S2,得到最终输出UnetCNN卷积模型_数字信号处理_65。那么它也等效于信号UnetCNN卷积模型_数字信号处理_60先经过S2再经过S1。如下图。

UnetCNN卷积模型_卷积_67

牢记以上的几条性质,对于系统设计会非常有用。

上面都是以离散信号举例,其实对于连续信号来说,也是一样的,只是把求和换成积分。
UnetCNN卷积模型_UnetCNN卷积模型_68
由于我们目前将的都是数字信号处理,因此着重讲离散信号,连续信号都会跟着提一下。

至此,讲完了卷积的由来,下一篇我们讲一下傅里叶变换。