大牛浅谈信号与系统

第一课 什么是卷积 卷积有什么用 什么是傅利叶变换 什么是拉普拉斯变换   

引子
不少朋友和我同样,工科电子类专业,学了一堆信号方面的课,什么都没学懂,背了公式考了试,而后毕业了。

   先说"卷积有什么用"这个问题。(有人抢答,"卷积"是为了学习"信号与系统"这门课的后续章节而存在的。我大吼一声,把他拖出去枪毙!)

   讲一个故事:
   张三刚刚应聘到了一个电子产品公司作测试人员,他没有学过"信号与系统"这门课程。一天,他拿到了一个产品,开发人员告诉他,产品有一个输入端,有一个输出端,有限的输入信号只会产生有限的输出。
   而后,经理让张三测试当输入sin(t)(t<1秒)信号的时候(有信号发生器),该产品输出什么样的波形。张三照作了,花了一个波形图。
   "很好!"经理说。而后经理给了张三一叠A4纸: "这里有几千种信号,都用公式说明了,输入信号的持续时间也是肯定的。你分别测试如下咱们产品的输出波形是什么吧!"

   这下张三懵了,他在心理想"上帝,帮帮我把,我怎么画出这些波形图呢?"
   因而上帝出现了: "张三,你只要作一次测试,就能用数学的方法,画出全部输入波形对应的输出波形"。
   上帝接着说:"给产品一个脉冲信号,能量是1焦耳,输出的波形图画出来!"
   张三照办了,"而后呢?"
   上帝又说,"对于某个输入波形,你想象把它微分红无数个小的脉冲,输入给产品,叠加出来的结果就是你的输出波形。你能够想象这些小脉冲排着队进入你的产品,每一个产生一个小的输出,你画出时序图的时候,输入信号的波形好像是反过来进入系统的。"
   张三领悟了:" 哦,输出的结果就积分出来啦!感谢上帝。这个方法叫什么名字呢?"
   上帝说:"叫卷积!"

   今后,张三的工做轻松多了。每次经理让他测试一些信号的输出结果,张三都只须要在A4纸上作微积分就是提交任务了!
----------------------------------------
   张三愉快地工做着,直到有一天,平静的生活被打破。
   经理拿来了一个小的电子设备,接到示波器上面,对张三说: "看,这个小设备产生的波形根本无法用一个简单的函数来讲明,并且,它接二连三的发出信号!不过幸亏,这个连续信号是每隔一段时间就重复一次的。张三,你来测试如下,连到咱们的设备上,会产生什么输出波形!"
   张三摆摆手:"输入信号是无限时长的,难道我要测试无限长的时间才能获得一个稳定的,重复的波形输出吗?"
   经理怒了:"反正你给我搞定,不然炒鱿鱼!"
   张三心想:"此次输入信号连公式都给出出来,一个很混乱的波形;时间又是无限长的,卷积也不行了,怎么办呢?"
   及时地,上帝又出现了:"把混乱的时间域信号映射到另一个数学域上面,计算完成之后再映射回来"
   "宇宙的每个原子都在旋转和震荡,你能够把时间信号当作若干个震荡叠加的效果,也就是若干个能够肯定的,有固定频率特性的东西。"
   "我给你一个数学函数f,时间域无限的输入信号在f域有限的。时间域波形混乱的输入信号在f域是整齐的容易看清楚的。这样你就能够计算了"
   "同时,时间域的卷积在f域是简单的相乘关系,我能够证实给你看看"
   "计算完有限的程序之后,取f(-1)反变换回时间域,你就获得了一个输出波形,剩下的就是你的数学计算了!"
   张三谢过了上帝,保住了他的工做。后来他知道了,f域的变换有一个名字,叫作傅利叶,什么什么... ...
----------------------------------------
   再后来,公司开发了一种新的电子产品,输出信号是无限时间长度的。此次,张三开始学拉普拉斯了......

后记:

   不是咱们学的很差,是由于教材很差,老师讲的也很差。
   很欣赏Google的面试题: 用3句话像老太太讲清楚什么是数据库。这样的命题很是好,由于没有深刻的理解一个命题,没有仔细的思考一个东西的设计哲学,咱们就会陷入细节的泥沼: 背公式,数学推导,积分,作题;而没有时间来回答"为何要这样"。作大学老师的作不到"把厚书读薄"这一点,讲不出哲学层面的道理,一味背书和翻讲 ppt,作着枯燥的数学证实,而后责怪"如今的学生一代不如一代",有什么意义吗?
   
   
第二课 到底什么是频率 什么是系统?  
   
    这一篇,我展开的说一下傅立叶变换F。注意,傅立叶变换的名字F能够表示频率的概念(freqence),也能够包括其余任何概念,由于它只是一个概念模型,为了解决计算的问题而构造出来的(例如时域无限长的输入信号,怎么获得输出信号)。咱们把傅立叶变换看一个C语言的函数,信号的输出输出问题看为IO 的问题,而后任何难以求解的x->y的问题均可以用x->f(x)->f-1(x)->y来获得。

1. 到底什么是频率?
   一个基本的假设: 任何信息都具备频率方面的特性,音频信号的声音高低,光的频谱,电子震荡的周期,等等,咱们抽象出一个件谐振动的概念,数学名称就叫作频率。想象在x-y 平面上有一个原子围绕原点作半径为1匀速圆周运动,把x轴想象成时间,那么该圆周运动在y轴上的投影就是一个sin(t)的波形。相信中学生都能理解这个。
   那么,不一样的频率模型其实就对应了不一样的圆周运动速度。圆周运动的速度越快,sin(t)的波形越窄。频率的缩放有两种模式
(a) 老式的收音机都是用磁带做为音乐介质的,当咱们快放的时候,咱们会感受歌唱的声音变得怪怪的,调子很高,那是由于"圆周运动"的速度增倍了,每个声音份量的sin(t)输出变成了sin(nt)。
(b) 在CD/计算机上面快放或满放感受歌手快唱或者慢唱,不会出现音调变高的现象:由于快放的时候采用了时域采样的方法,丢弃了一些波形,可是承载了信息的输出波形不会有宽窄的变化;满放时相反,时域信号填充拉长就能够了。

2. F变换获得的结果有负数/复数部分,有什么物理意义吗?
   解释: F变换是个数学工具,不具备直接的物理意义,负数/复数的存在只是为了计算的完整性。

3. 信号与系统这们课的基本主旨是什么?
   对于通讯和电子类的学生来讲,不少状况下咱们的工做是设计或者OSI七层模型当中的物理层技术,这种技术的复杂性首先在于你必须确立传输介质的电气特性,一般不一样传输介质对于不一样频率段的信号有不一样的处理能力。以太网线处理基带信号,广域网光线传出高频调制信号,移动通讯,2G和3G分别须要有不一样的载频特性。那么这些介质(空气,电线,光纤等)对于某种频率的输入是否可以在传输了必定的距离以后获得基本不变的输入呢? 那么咱们就要创建介质的频率相应数学模型。同时,知道了介质的频率特性,如何设计在它上面传输的信号才能大到理论上的最大传输速率?----这就是信号与系统这们课带领咱们进入的一个世界。
   固然,信号与系统的应用不止这些,和香农的信息理论挂钩,它还能够用于信息处理(声音,图像),模式识别,智能控制等领域。若是说,计算机专业的课程是数据表达的逻辑模型,那么信号与系统创建的就是更底层的,表明了某种物理意义的数学模型。数据结构的知识能解决逻辑信息的编码和纠错,而信号的知识能帮咱们设计出码流的物理载体(若是接受到的信号波形是混乱的,那我依据什么来判断这个是1仍是0? 逻辑上的纠错就失去了意义)。在工业控制领域,计算机的应用前提是各类数模转换,那么各类物理现象产生的连续模拟信号(温度,电阻,大小,压力,速度等) 如何被一个特定设备转换为有意义的数字信号,首先咱们就要设计一个可用的数学转换模型。

4. 如何设计系统?
   设计物理上的系统函数(连续的或离散的状态),有输入,有输出,而中间的处理过程和具体的物理实现相关,不是这们课关心的重点(电子电路设计?)。信号与系统归根到底就是为了特定的需求来设计一个系统函数。设计出系统函数的前提是把输入和输出都用函数来表示(例如sin(t))。分析的方法就是把一个复杂的信号分解为若干个简单的信号累加,具体的过程就是一大堆微积分的东西,具体的数学运算不是这门课的中心思想。
   那么系统有那些种类呢?
(a) 按功能分类: 调制解调(信号抽样和重构),叠加,滤波,功放,相位调整,信号时钟同步,负反馈锁相环,以及若干子系统组成的一个更为复杂的系统----你能够画出系统流程图,是否是很接近编写程序的逻辑流程图? 确实在符号的空间里它们没有区别。还有就是离散状态的数字信号处理(后续课程)。
(b) 按系统类别划分,无状态系统,有限状态机,线性系统等。而物理层的连续系统函数,是一种复杂的线性系统。

5. 最好的教材?
    符号系统的核心是集合论,不是微积分,没有集合论构造出来的系统,实现用到的微积分便毫无心义----你甚至不知道运算了半天究竟是要做什么。以计算机的观点来学习信号与系统,最好的教材之一就是 <<Structure and Interpretation of Signals and Systems>> ,做者是UC Berkeley的Edward A.Lee and Pravin Varaiya----先定义再实现,符合人类的思惟习惯。国内的教材通篇都是数学推导,就是不愿说这些推导是为了什么目的来作的,用来获得什么,建设什么,防止什么;不去从认识论和需求上讨论,通篇都是看不出目的的方法论,本末倒置了。
    
第三课 抽样定理是干什么的  

1. 举个例子,打电话的时候,电话机发出的信号是PAM脉冲调幅,在电话线路上传的不是话音,而是话音经过信道编码转换后的脉冲序列,在收端恢复语音波形。那么对于连续的说话人语音信号,如何转化成为一些列脉冲才能保证基本不失真,能够传输呢? 很明显,咱们想到的就是取样,每隔M毫秒对话音采样一次看看电信号振幅,把振幅转换为脉冲编码,传输出去,在收端按某种规则从新生成语言。
    那么,问题来了,每M毫秒采样一次,M多小是足够的? 在收端怎么才能恢复语言波形呢?
    对于第一个问题,咱们考虑,语音信号是个时间频率信号(因此对应的F变换就表示时间频率)把语音信号分解为若干个不一样频率的单音混合体(周期函数的复利叶级数展开,非周期的区间函数,能够当作补齐之后的周期信号展开,效果同样),对于最高频率的信号份量,若是抽样方式可否保证恢复这个份量,那么其余的低频率份量也就能经过抽样的方式使得信息得以保存。若是人的声音高频限制在3000Hz,那么高频份量咱们当作sin(3000t),这个sin函数要经过抽样保存信息,能够看为: 对于一个周期,波峰采样一次,波谷采样一次,也就是采样频率是最高频率份量的2倍(奈奎斯特抽样定理),咱们就能够经过采样信号无损的表示原始的模拟连续信号。这两个信号一一对应,互相等价。
    对于第二个问题,在收端,怎么从脉冲序列(梳装波形)恢复模拟的连续信号呢? 首先,咱们已经确定了在频率域上面的脉冲序列已经包含了所有信息,可是原始信息只在某一个频率如下存在,怎么作? 咱们让输入脉冲信号I经过一个设备X,输出信号为原始的语音O,那么I(*)X=O,这里(*)表示卷积。时域的特性很差分析,那么在频率域 F(I)*F(X)=F(O)相乘关系,这下就很明显了,只要F(X)是一个理想的,低通滤波器就能够了(在F域画出来就是一个方框),它在时间域是一个钟型函数(因为包含时间轴的负数部分,因此实际中不存在),作出这样的一个信号处理设备,咱们就能够经过输入的脉冲序列获得几乎理想的原始的语音。在实际应用中,咱们的抽样频率一般是奈奎斯特频率再多一点,3k赫兹的语音信号,抽样标准是8k赫兹。
2. 再举一个例子,对于数字图像,抽样定理对应于图片的分辨率----抽样密度越大,图片的分辨率越高,也就越清晰。若是咱们的抽样频率不够,信息就会发生混叠----网上有一幅图片,近视眼戴眼镜看到的是爱因斯坦,摘掉眼睛看到的是梦露----由于不带眼睛,分辨率不够(抽样频率过低),高频份量失真被混入了低频份量,才形成了一个视觉陷阱。在这里,图像的F变化,对应的是空间频率。
    话说回来了,直接在信道上传原始语音信号很差吗? 模拟信号没有抗干扰能力,没有纠错能力,抽样获得的信号,有了数字特性,传输性能更佳。
    什么信号不能理想抽样? 时域有跳变,频域无穷宽,例如方波信号。若是用有限带宽的抽样信号表示它,至关于复利叶级数取了部分和,而这个部分和在恢复原始信号的时候,在不可导的点上面会有毛刺,也叫吉布斯现象。
3. 为何傅立叶想出了这么一个级数来? 这个源于西方哲学和科学的基本思想: 正交分析方法。例如研究一个立体形状,咱们使用x,y,z三个互相正交的轴: 任何一个轴在其余轴上面的投影都是0。这样的话,一个物体的3视图就能够彻底表达它的形状。同理,信号怎么分解和分析呢? 用互相正交的三角函数份量的无限和:这就是傅立叶的贡献。

入门第四课 傅立叶变换的复数 小波  

    说的广义一点,"复数"是一个"概念",不是一种客观存在。
    什么是"概念"? 一张纸有几个面? 两个,这里"面"是一个概念,一个主观对客观存在的认知,就像"大"和"小"的概念同样,只对人的意识有意义,对客观存在自己没有意义(康德: 纯粹理性的批判)。把纸条的两边转一下相链接,变成"莫比乌斯圈",这个纸条就只剩下一个"面"了。概念是对客观世界的加工,反映到意识中的东西。
    数的概念是这样被推广的: 什么数x使得x^2=-1? 实数轴显然不行,(-1)*(-1)=1。那么若是存在一个抽象空间,它既包括真实世界的实数,也能包括想象出来的x^2=-1,那么咱们称这个想象空间为"复数域"。那么实数的运算法则就是复数域的一个特例。为何1*(-1)=-1? +-符号在复数域里面表明方向,-1就是"向后,转!"这样的命令,一个1在圆周运动180度之后变成了-1,这里,直线的数轴和圆周旋转,在复数的空间里面被统一了。
    所以,(-1)*(-1)=1能够解释为"向后转"+"向后转"=回到原地。那么复数域如何表示x^2=-1呢? 很简单,"向左转","向左转"两次至关于"向后转"。因为单轴的实数域(直线)不包含这样的元素,因此复数域必须由两个正交的数轴表示--平面。很明显,咱们能够获得复数域乘法的一个特性,就是结果的绝对值为两个复数绝对值相乘,旋转的角度=两个复数的旋转角度相加。高中时代咱们就学习了迪莫弗定理。为何有这样的乘法性质? 不是由于复数域刚好具备这样的乘法性质(性质决定认识),而是发明复数域的人就是根据这样的需求去弄出了这么一个复数域(认识决定性质),是一种主观惟心主义的研究方法。为了构造x^2=-1,咱们必须考虑把乘法看为两个元素构成的集合: 乘积和角度旋转。
    由于三角函数能够看为圆周运动的一种投影,因此,在复数域,三角函数和乘法运算(指数)被统一了。咱们从实数域的傅立叶级数展开入手,马上能够获得形式更简单的,复数域的,和实数域一一对应的傅立叶复数级数。由于复数域形式简单,因此研究起来方便----虽然天然界不存在复数,可是因为和实数域的级数一一对应,咱们作个反映射就能获得有物理意义的结果。
    那么傅立叶变换,那个使人难以理解的转换公式是什么含义呢? 咱们能够看一下它和复数域傅立叶级数的关系。什么是微积分,就是先微分,再积分,傅立叶级数已经做了无限微分了,对应无数个离散的频率份量冲击信号的和。傅立叶变换要解决非周期信号的分析问题,想象这个非周期信号也是一个周期信号: 只是周期为无穷大,各频率份量无穷小而已(不然积分的结果就是无穷)。那么咱们看到傅立叶级数,每一个份量常数的求解过程,积分的区间就是从T变成了正负无穷大。而因为每一个频率份量的常数无穷小,那么让每一个份量都去除以f,就获得有值的数----因此周期函数的傅立叶变换对应一堆脉冲函数。同理,各个频率份量之间无限的接近,由于f很小,级数中的f,2f,3f之间几乎是挨着的,最后挨到了一块儿,和卷积同样,这个复数频率空间的级数求和最终能够变成一个积分式:傅立叶级数变成了傅立叶变换。注意有个概念的变化:离散的频率,每一个频率都有一个"权"值,而连续的F域,每一个频率的加权值都是无穷小(面积=0),只有一个频率范围内的"频谱"才对应必定的能量积分。频率点变成了频谱的线。

    所以傅立叶变换求出来的是一个一般是一个连续函数,是复数频率域上面的能够画出图像的东西? 那个根号2Pai又是什么? 它只是为了保证正变换反变换回来之后,信号不变。咱们可让正变换除以2,让反变换除以Pi,怎么都行。慢点,怎么有"负数"的部分,仍是那句话,是数轴的方向对应复数轴的旋转,或者对应三角函数的相位份量,这样说就很好理解了。有什么好处? 咱们忽略相位,只研究"振幅"因素,就能看到实数频率域内的频率特性了。
    咱们从实数(三角函数分解)->复数(e和Pi)->复数变换(F)->复数反变换(F-1)->复数(取幅度份量)-> 实数,看起来很复杂,可是这个工具使得,单从实数域没法解决的频率分析问题,变得能够解决了。二者之间的关系是: 傅立叶级数中的频率幅度份量是a1-an,b1-bn,这些离散的数表示频率特性,每一个数都是积分的结果。而傅立叶变换的结果是一个连续函数: 对于f域每一个取值点a1-aN(N=无穷),它的值都是原始的时域函数和一个三角函数(表示成了复数)积分的结果----这个求解和级数的表示形式是同样的。不过是把N个离散的积分式子统一为了一个通用的,连续的积分式子。

    复频域,你们都说画不出来,可是我来画一下!由于不是一个图可以表示清楚的。我用纯中文来讲:
1. 画一个x,y轴组成的平面,以原点为中心画一个圆(r=1)。再画一条竖直线: (直线方程x=2),把它当作是一块挡板。
2. 想象,有一个原子,从(1,0)点出发,沿着这个圆做逆时针匀速圆周运动。想象太阳光从x轴的复数方向射向x轴的正数方向,那么这个原子运动在挡板(x=2)上面的投影,就是一个简协震动。
3. 再修改一下,x=2对应的不是一个挡板,而是一个打印机的出纸口,那么,原子运动的过程就在白纸上画下了一条连续的sin(t)曲线!
    上面3条说明了什么呢? 三角函数和圆周运动是一一对应的。若是我想要sin(t+x),或者cos(t)这种形式,我只须要让原子的起始位置改变一下就能够了:也就是级坐标的向量,半径不变,相位改变。
    傅立叶级数的实数展开形式,每个频率份量都表示为AnCos(nt)+BnSin(nt),咱们能够证实,这个式子能够变成 sqr(An^2+Bn^2)sin(nt+x)这样的单个三角函数形式,那么:实数值对(An,Bn),就对应了二维平面上面的一个点,相位x对应这个点的相位。实数和复数之间的一一对应关系便创建起来了,所以实数频率惟一对应某个复数频率,咱们就能够用复数来方便的研究实数的运算:把三角运算变成指数和乘法加法运算。
-------------------------------------------------------------------------
    可是,F变换仍然是有限制的(输入函数的表示必须知足狄义赫立条件等),为了更普遍的使用"域"变换的思想来表示一种"广义"的频率信息,咱们就发明出了拉普拉斯变换,它的连续形式对应F变换,离散形式就成了Z变换。离散信号呢? 离散周期函数的F级数,项数有限,离散非周期函数(看为周期延拓之后仍然是离散周期函数),离散F级数,仍然项数有限。离散的F变换,很容易理解---- 连续信号经过一个周期采样滤波器,也就是频率域和一堆脉冲相乘。时域取样对应频域周期延拓。为何? 反过来容易理解了,时域的周期延拓对应频率域的一堆脉冲。
    二者的区别:FT[f(t)]=从负无穷到正无穷对[f(t)exp(-jwt)]积分 LT[f(t)]=从零到正无穷对[f(t)exp(-st)]积分 (因为实际应用,一般只作单边Laplace变换,即积分从零开始) 具体地,在Fourier积分变换中,所乘因子为exp(-jwt),此处,-jwt显然是为一纯虚数;而在laplace变换中,所乘因子为exp(-st),其中s为一复数:s=D+jw,jw是为虚部,至关于Fourier变换中的jwt,而D则是实部,做为衰减因子,这样就能将许多没法做Fourier变换的函数(好比exp(at),a>0)作域变换。
    而Z变换,简单地说,就是离散信号(也能够叫作序列)的Laplace变换,可由抽样信号的Laplace变换导出。ZT[f(n)]=从n为负无穷到正无穷对[f(n)Z^(-n)]求和。Z域的物理意义: 因为值被离散了,因此输入输出的过程和花费的物理时间已经没有了必然的关系(t只对连续信号有意义),因此频域的考察变得及其简单起来,咱们把 (1,-1,1,-1,1,-1)这样的基本序列当作是数字频率最高的序列,他的数字频率是1Hz(数字角频率2Pi),其余的数字序列频率都是N分之 1Hz,频率分解的结果就是0-2Pi角频率当中的若干个值的集合,也是一堆离散的数。因为时频都是离散的,因此在作变换的时候,不须要写出冲击函数的因子
    离散傅立叶变换到快速傅立叶变换----因为离散傅立叶变换的次数是O(N^2),因而咱们考虑把离散序列分解成两两一组进行离散傅立叶变换,变换的计算复杂度就降低到了O(NlogN),再把计算的结果累加O(N),这就大大下降了计算复杂度。
    再说一个高级话题: 小波。在实际的工程应用中,前面所说的这些变换大部分都已经被小波变换代替了。
    什么是小波?先说什么是波:傅立叶级数里面的份量,sin/cos函数就是波,sin(t)/cos(t)通过幅度的放缩和频率的收紧,变成了一系列的波的求和,一致收敛于原始函数。注意傅立叶级数求和的收敛性是对于整个数轴而言的,严格的。不过前面咱们说了,实际应用FFT的时候,咱们只须要关注部分信号的傅立叶变换而后求出一个总体和就能够了,那么对于函数的部分份量,咱们只须要保证这个用来充当砖块的"波函数",在某个区间(用窗函数来滤波)内符合那几个可积分和收敛的定义就能够了,所以傅立叶变换的"波"因子,就能够不使用三角函数,而是使用一系列从某些基本函数构造出来的函数族,只要这个基本函数符合那些收敛和正交的条件就能够了。怎么构造这样的基本函数呢?sin(t)被加了方形窗之后,映射到频域是一堆无穷的散列脉冲,因此不能再用三角函数了。咱们要获得频率域收敛性好的函数族,能覆盖频率域的低端部分。说的远一点,若是是取数字信号的小波变换,那么基础小波要保证数字角频率是最大的 2Pi。利用小波进行离频谱分析的方法,不是像傅立叶级数那样求出全部的频率份量,也不是向傅立叶变换那样看频谱特性,而是作某种滤波,看看在某种数字角频率的波峰值大概是多少。能够根据实际须要获得如干个数字序列。
    咱们采用(0,f),(f,2f),(2f,4f)这样的倍频关系来考察函数族的频率特性,那么对应的时间波形就是倍数扩展(且包含调制---因此才有频谱搬移)的一系列函数族。频域是窗函数的基本函数,时域就是钟形函数。固然其余类型的小波,虽然频率域不是窗函数,可是仍然可用:由于小波积分求出来的变换,是一个值,例如(0,f)里包含的总能量值,(f,2f)里面包含的总能量值。因此即便频域的分割不是用长方形而是其余的图形,对于结果来讲影响不大。同时,这个频率域的值,它的分辨率密度和时域小波基函数的时间分辨率是冲突的(时域紧频域宽,时域宽频域紧),因此设计的时候受到海森堡测不许原理的制约。Jpeg2000压缩就是小波:由于时频都是局部的,变换结果是数值点而不是向量,因此,计算复杂度从FFT的O(NlgN)降低到了O(N),性能很是好。
   用中文说了这么多,基本的思想已经表达清楚了,为了"研究方便",从实数傅立叶级数展开,到创造了复数域的傅立叶级数展开,再到傅立叶变换,再扩展到拉式变换,再为了时频都离散的状况简化为Z变换,所有都用一根主线联系起来了。