在不少程序员眼中,卷积这个数学概念是很神秘很难懂的。由于其在数学、物理学、电子工程、信号处理、计算机科学中极为重要,所以我试图在本文中讲解卷积的概念,力求易读易懂,让尽可能多的人理解卷积。
前几天见到VC知识库论坛上有人提问:“卷积是什么意思?”,似乎女友也问过类似问题,所以我想很有必要澄清这个既基础又重要的卷积概念。如果您已经对此非常了解,那完全可以忽略本文了。本文的目标读者是那些见了卷积这两个字就头大,又迫于工作需要,必须弄懂的人。我假设您已经通过了大学一年级的高数考试,但现在已经忘得差不多了J。很多教科书一上来就会给出卷积的定义,接着就是一串推导、证明、例子,如果你不太适应这种方式,那本文可能会非常适合你。
卷积在信号处理领域中尤为常用,就以此慢慢引入卷积概念吧。日常生活中到处都是信号系统,它们接受一定的输入后,会给出一定的输出:手机受到对方来电的信号就会响铃或震动;电脑接到一串按键信号,屏幕就会输出一串对应的字符;女友在收到男友送的一束玫瑰后也许会送上一个热吻……现在,我们把这些信号系统抽象成“黑匣子”,不管它的内部构造,而只关注它对输入的响应。
数学化一点儿,将一个给定的信号系统记为S,设输入信号为x(t),输出信号为y(t),t可以代表时间,也可以是其它什么。那么:y(t) = S{ x(t) }就表示系统S将x(t)这个输入信号转化为输出信号y(t)。太一般化的信号系统不容易研究,那就加入一些“合理的”限制条件。S是连续(continuous)的,如果t可以连续变化;特别的,x(t)和y(t)都是定义在实数域上的函数。物理世界中的信号系统大多是连续的。S是离散(discrete)的,如果t只能取一些分立的值;特别的,x(t)和y(t) 都是定义在整数域上的函数。离散的信号系统可以比较方便的被计算机分析处理。S是线性(linear)的,如果对任意两个输入信号x1、x2和任意的常数