距离上一次发稿已经过去了快三个月,创作欲有些旺盛,虽然最近很忙,但还是想写点东西,因为近来重新仔细研读了奥本海姆的那本圣经级别的绿皮书《信号与系统》,深有感触,我在之前学习中的更多困惑也得到了解决,因此想分享给读者,同时也强烈推荐此书及MIT的奥本海姆相关公开课程给EE相关专业的朋友,不管是初学信号与系统还是已经学过这门课的同学,都非常值得细细品味

在我大一还是大二(具体不记得了)学习这门课时,有一个很大的疑惑困扰着我,我们为什么要对一个信号做傅立叶展开呢?诚然,书上的很多例题告诉我们傅立叶变换让解题或者实际问题变得简单,但是并没有哪本书清楚的说明傅立叶展开的意义所在,而我仔细审视这个困惑的根源,可以分为两个部分,首先,为什么要对信号进行展开?其次,为什么一定是用复指数正交基展开?这个问题问扰了我很长一段时间,因为这两年做的最多还是数字信号处理相关的工程和项目,所以这个可以算是一个核心症结,而我接下来文章会对这两个困惑逐一进行解释,至少它现在已经能够让我非常安心和舒服的使用傅立叶变换了,希望也能给和我有同样困惑的朋友一点启发。(由于想保证我自己的连贯的创作体验,在接下来的论述中我不会加入任何公式和图形帮助理解,纯粹的语言文字描述,这可能对我是友好的,但对读者并不友好,但我想如果可以通篇读下来的读者一定会两眼发光,心旷神怡)

整个信号与系统的框架建立中,我们大多数时间研究的系统默认都是线性时不变的(而在现实生活中常常还是因果的),为什么这么默认?因为物理过程大多具有线性和时不变性,同时,线性时不变系统的数学描述上具有共性,比如不同的系统可用同一微分方程或者差分方程来表示,因此我们易于建立一套方法论去分析这类系统,同时也更容易让学生来学习,这里就像我们研究回归问题时,通常学的都是线性拟合,比如最小二乘法,为什么,不是它在任何情况下都好,也不是非线性比不上线性,而是非线性相对于线性而言太复杂了,没有这么好解释,也不易建立方法论,就像现在的deep-learning,每一层输出都会经过一个激活函数,来对结果进行非线性变换,这在经过多层之后,整个模型就变成了一个黑匣子,只有机器知道自己在做些什么,而人类却很难去解释,对于这样的问题和系统,人类想去研究起来就格外的费劲

而线性时不变系统又具有非常多很好的特性,比如说叠加性质,这里就要说到信号展开的问题了,为什么要展开?如果将线性时不变系统的输入用一组基本信号的线性组合来表示,可由系统对这些基本信号的响应,利用叠加性质得到整个系统的输出。因此,照这个思路继续下去,我们可以找到一种求系统输出的更简单的方法,而不需要每次都对于不同的x(t)去解微分方程的y(t)

首先以离散时间信号为例,我们可以将一个时间序列表示成一串移位单位脉冲序列的线性组成,而系统对每一个移位脉冲都有一个输出,也就是响应,各个移位脉冲序列的区别仅在于在一个脉冲中加入了不同的时移,因此这里如果把系统变成时不变系统,根据时不变性,那么其对应的输出也就是某一脉冲序列的响应加入一与之对应的时移,因此我们可以确定一个单位冲激响应,而其他脉冲序列的响应仅是在其上添加一个时移,这样我们可以巧妙而简洁的将一个线性时不变系统的输出表示成输入序列与其单位冲激响应的卷积和的形式,故这里可以说是因为线性时不变系统特有的叠加性质和时不变性,才导致了卷积这么一个经典而又简洁的表达形式,同时,换句话说,当已知一个线性时不变系统的单位冲激响应时,你也就知道了这个系统的全部特性

这里略作小结,我们已经看到了线性时不变系统的好,它让我们之前繁琐的求输出的过程变成了在已知单位冲激响应时求卷积的过程,而且因为卷积的形式就是一个循环移位求和,这个过程完全可以交给计算机去做,丝毫不需要花费太大的力气,而这里可以有人要问了,单位冲激响应怎么得到,把一个狄拉克函数丢到系统里作为输入,看系统的输出不就知道了吗?而以上过程的推导都是基于我们先将一个时间序列表示成一串移位单位脉冲序列的线性组成才得到的,所以这里我们也可以粗略感受到展开的妙处了,接下来我们来看看傅立叶同学做的事情(当然并不完全是他干的,或者说他只是提供最初思想的那个人)

现在,我们不用移位脉冲信号,我们想要将信号表示成另一组基本信号的线性组合,而这里我们要遵循几个原则来让我们之后的分析变得简单,首先,这组基本信号要能够构成一类相当广泛的有用信号,也许不能表示所有信号,但至少在大多数情况下得够用,然后呢,在线性时不变系统中,对每一个基本信号的响应最好也要十分的简单

我们知道在傅立叶分析中选用的基是复指数信号(对于傅立叶级数展开数学上大多数情况下会表示成三角函数的形式,但本质都是相同的,因为学过复变函数的都知道正弦波其实就是一个圆周运动在一条直线上的投影,故之后论述中以复指数信号为基)所谓的基,也就是在线代里我们学过的,在某个线性空间中如果可以找到了一些线性无关的向量,这些向量可以通过线性组合构成无数其他该空间的向量,那么这组线性无关的向量就称为该空间的一组基,虽然我们在线代里的基是以向量形式表示,而这里的基是一组函数,但思想上是一致的,如果这组函数两两之间的内积为零,而自己与自己的内积为1,那么这组基就被称为正交函数基,所谓内积,也就是求其在某个规定区间内的积分,很显然,傅立叶基是一组无限正交基

接下来先从傅立叶级数说起,任意周期信号(功率有限)都可以表示成一组复指数信号(傅立叶基)的线性组合,这里用到的复指数信号可能是无限个,也可能是有限个,对于离散的情况而言,因为离散复指数信号的周期性,必然是有限的,而在满足狄利克雷条件时,信号的傅立叶级数展开是收敛的,而对于每组基前面的系数也非常好求,根据正交性,只需要将原始信号与基做内积即可求得,这原本应该是数学里级数那一块的内容,不做深究,但现在的问题来了,为什么我们要选择复指数信号作为基(傅立叶基),而不是其他的信号,其实在不同情况下,我们也是有依据其他的基所做的变换的,比如哈达玛变换,小波变换,这些基是不是比不上傅立叶基,或者说,为什么傅立叶基我们用的最多,这确实是一个值得思考的问题。

这里回过头来看我们之前提到的寻找基的两个准则,首先,这组基本信号要能够构成一类相当广泛的有用信号(一会说到傅立叶变换时,就会知道傅立叶变换的使用条件是针对能量有限信号,只有这类信号才能做傅立叶变换),然后呢,在线性时不变系统中,对每一个基本信号的响应最好也要十分的简单,这里,就要说到复指数信号一个非常神奇的性质了,复指数信号是线性时不变系统的特征函数,所谓特征函数,又可以和线性代数里的特征向量做类比,如果某个矩阵乘以一个向量后所得向量与该向量平行,那么就称该向量为该矩阵的特征向量,而特征函数也就是说,一个复指数信号通过线性时不变系统后仍旧是一个复指数信号,其频率未发生变换,只是指数全面的幅度发生了变化,而这个幅度也是可以用一个通式表示的,那就是该线性时不变系统的单位冲激响应的傅立叶正变换,这件事情非常的神奇,神奇到我们就有了频谱这个东西(虽然准确来说我们在能量信号的傅立叶变换中才去说频谱,傅立叶级数中通常叫傅立叶系数谱)

总之,这里通过线性时不变系统后,复指数信号的频率没变,系数是一个关于频率w的函数,我们将其称为频率响应,对于原始的输入信号在做傅立叶展开时(即一组复指数信号的线性组合),每个不同频率的复指数信号前都会有一个系数,这个称之为傅立叶系数而线性时不变系统也就可以看作是通过乘以相应频率点上的频率响应值来逐个改变输入信号的傅立叶系数,于是我们整理一下就会发现,如果我们知道一个线性时不变系统的单位冲激响应,通过傅立叶正变换可以求出其频率响应,而如果我们又知道输入信号的傅立叶系数,那么自己通过乘法就可以求出输出信号所对应的傅立叶级数,而不需要先在时间域上做卷积运算,再做傅立叶级数展开这么麻烦,根据复指数信号是线性时不变系统的特征函数这一点让原本的卷积运算变为了更加简单的逐频率系数相乘,确实是一件让人激动的事情

虽然我们还只讲了傅立叶级数,没有说傅立叶变换,但观者应该已经可以体会到傅立叶分析的奇妙所在,而我们之前说的一个信号的傅立叶级数展开的条件是它首先是一个周期信号,并且功率有限,但如果这么限定下来,对于非周期信号岂不是很不友好,因此我们要把傅立叶级数再往前推一步,让其对于非周期信号也同样适用,而这就是我们通常所说的大名鼎鼎的无处不在的傅立叶变换(这篇我们讨论的是连续傅立叶变换以及离散时间傅立叶变换,对于其演进的版本,比如快速算法的DFT,FFT这些不做探讨)

先给出傅立叶变换的使用条件,仅限于能量有限信号,对于非能量有限信号拉普拉斯在向你招手,而更傅立叶级数一样,还是那句话,一个能量有限信号可以由一组复指数信号的线性组合来表示,但是这里,每个复指数信号前面的系数都是无穷小,很多人可能对这个表述有疑惑,明明傅立叶正反变化都是以积分的形式给出(连续时),怎么又是线性组合,这里就要来源于傅立叶变换的推导,对于每一个能量有限的非周期信号都可以看作是周期无穷大的周期信号,而我们依然将其按照傅立叶级数的方式展开,就会得到一个黎曼和的形式,这和我们在高数中学的定积分的推到过程非常类似,一组极限和的结果变成了在某个区间内的积分,所以虽然傅立叶变换(连续)是以积分形式给出,但其本质还是可以看作一组复指数信号的线性组合,但我之前也说了,每个复指数信号前面的系数都是无穷小,因为会乘上一个积分式里最后的那个无穷小量,因此我们就不能在用傅立叶系数(傅立叶级数的系数)来表示,而需要找一个非无穷小量,并且去之前的傅立叶系数成正比,因此我们这里要做归一化,把每个傅立叶系数成以信号的周期T(无穷大量),得到的就是一个有限值,而这也就是我们通常所说的傅立叶正变换,或者说频谱公式(注意,这还是一个关于w的函数,可能是实数也可能是偶数),我们将其画出来应该是一个三维的图像,一个w,一个实轴,一个复轴,而如果对其取模的话,对于任意频率都会得到一个实数,就是我们通常所说的幅度谱,当然把它的相位提取出来就是相位谱,只是这个我们通常考试考的不多(但实际上同样非常重要)

至此,不管是周期信号还是能量有限信号,我们都可以通过傅立叶级数展开或者傅立叶变换来得到其傅立叶系数谱或者频率谱,这件事情的好处有很多,比如对于原本的线性时不变系统而言,我们不在需要去直接求单位冲激响应,只需要通过输出信号的傅立叶变换除以输入信号的傅立叶变换,得到其频率响应,然后再做一次傅立叶反变换即可,当然其中傅立叶变换的公式是一定的,你可以将其看成是时域向频域做的一次映射,而输入,输出,单位冲激响应,这三者是知二推一的关系,显然在频域里做乘法运算比在时域做卷积运算要方便很多,但如果仅仅是减少运算量这件事情似乎很难说服大多数人接受傅立叶变换,它的优势觉不仅于此,这里知乎上有很多的讲解傅立叶变换通俗易懂的文章,读起来肯定比我这一篇要舒服很多,其中很多的道理也讲的很清楚,我这里不再过多展开,仅补充几点

通常大家说自己学完傅立叶变换后最大的感受就是看问题的角度变多了,以前我们总在时域上看问题,最多不过是四维空间,而现在我们多了一个研究和分析问题的角度就是频域,时域上很多复杂的问题放到频域里面去看就会简单很多,比如一组不同频率的正弦波的叠加在时域上可能是一个比较复杂的模型,但在频域上则是对应于不同频率处的冲激响应,一目了然,从实际问题中体会傅立叶变换的妙处和哲学是一个理解它的不错的方法,但是在我看来,由于这本身还是一个数学方法,所以最好的还是要从数学的角度来看其实傅立叶变换,或者是小波变换,或者是离散余弦变换,这些变换本质都是一种基变换,对于不同的系统,不同的研究对象,我们可以选取不同的基来让研究和分析变得更加简单,比如因为复指数信号是线性时不变系统的特征函数,因此我们在研究线性时不变系统及其特性时通常采用傅立叶变换,选取了一组好的基,可以让问题变得简单,比如我们的现在机器学习里很多的降维算法,像PCA,K-L变换也是基变换,对于一些基可能会出现很多很小的系数,或者是零系数,这要用这组基去表示这一信号或者向量时也就更加的简洁,而越是简洁就越于分析

总之,傅立叶变换是一个非常神圣而又优雅的数学方法,它的应用绝对远不止本文提到的这些,比如滤波,调制等等,由于笔者学通信出生,对这方面的内容还是很有兴趣的,但我想每一个学EE的同学都应该把傅立叶变换熟记于心,同时不至于其公司的简单形式,更应知道其适用范围和数学内涵,我想这对于我们以后的研究和学习都大有裨益

狄立克雷函数傅立叶变换0点_你真的理解傅立叶变换吗?相关推荐

  1. 狄立克雷函数傅立叶变换0点_傅立叶变换-描述曲线

    傅立叶变换是Jean-Baptiste Joseph Fourier在研究热传导微分方程中发明的数学工具,对于一个时域上的函数可以分解为频域分量的叠加.在处理有限序列过程中我们可以把序列假设为时间序列 ...

  2. python修改turtle画笔颜色的函数_以下选项中,修改turtle画笔颜色的函数是() (8.0分)_学小易找答案...

    [单选题]密码学的目的是( ) (6.0分) [单选题]下面代码的输出结果是() for s in "helloworld": if s=="w": conti ...

  3. cmi码型变换matlab程序_实验四 码型变换实验.doc

    实验四 码型变换实验 一.实验要求 1.了解几种常见的数字基带信号. 2.掌握常用数字基带传输码型的编码规则. 3.掌握用FPGA实现码型变换的方法. 二.实验内容 1.观察NRZ码.RZ码.BRZ码 ...

  4. Python 卡方检验、克雷姆值

    卡方检验是一种用途很广的计数资料的假设检验方法.它属于非参数检验的范畴,主要是比较两个及两个以上样本率( 构成比)以及两个分类变量的关联性分析.其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合 ...

  5. # 傅立叶变换 画曲线_让你永远忘不了的傅立叶变换解析

    使用联想链条和几何直观,辅以从实际需求衍生概念的思考模式,详解什么是傅立叶变换,为什么要做傅立叶变换等,帮助记忆和理解,目的当然是标题所说:让你永远忘不了傅立叶变换这个公式.另,这篇博客还从侧面一定程 ...

  6. 为什么要进行傅立叶变换?如何用Matlab实现快速傅立叶变换?

    http://blog.sina.com.cn/s/blog_9015f32301014jbp.html 写在最前面:本文是我阅读了多篇相关文章后对它们进行分析重组整合而得,绝大部分内容非我所原创.在 ...

  7. 如何通俗地理解傅立叶变换?

    声明下,下面都是用傅立叶级数来阐述,文章最后会说明下傅立叶级数和傅立叶变换之间的关系. 让我们从比较容易懂的解释开始吧. 1 直观解释 1666年牛顿发现太阳光经三棱镜的折射后可呈现彩色光,称为光的色 ...

  8. 迪利克雷卷积,莫比乌斯反演,杜教筛

    常见积性函数 μ(n)={1,i=10,n无2次方以上的素因数(−1)k,k为不同素因数的种类\mu(n)=\begin{cases} 1,&i=1\\ 0,&n无2次方以上的素因数\ ...

  9. 拟杆菌预防肺炎克雷伯菌定殖和传播

    微生物群是免疫防御的原动力,但是防止感染的特定共生微生物的特性尚不清楚.相对的,病原体如何与其他微生物群落竞争以建立其宿主生态位也鲜为人知. 鉴定对病原体有保护作用的微生物群成员可以提供一种治疗对当前 ...

最新文章

  1. mysql sqlstate 28000_mysql ERROR 1045 (28000): 错误解决办法
  2. 51nod 1525 重组公司
  3. 深入理解Java虚拟机-常用vm参数分析
  4. ASP.NET开发,从二层至三层,至面向对象 (4)
  5. Android中Service类onStartCommand
  6. C#绘图工具之Move
  7. 【CF913G】Power Substring 数论+原根
  8. Linux 命令(140)—— tree 命令
  9. c语言中读和写的作用,C语言中对文件最基本的读取和写入函数
  10. OSPF虚链路技术原理与注意点
  11. ORACLE10G让空间管理变轻松【SPACE MANAGEMENT MAKE EASILY ON ORACLE10G】
  12. masm32基础使用(win10+cmd)
  13. 【Multisim仿真】74LS193+74LS138流水灯
  14. [导入]MPQ 文件系统完成
  15. STM32MP157系统移植(TF-A,U-Boot,Linux)
  16. 0045-一个Dashbord页面监控多个消费者
  17. 计算机毕设-学籍管理系统
  18. 镁光256Gb NAND Flash芯片介绍
  19. 【C++】-命名空间的概念及使用
  20. androidstudio安装的app打开闪退,AndroidManifest中也声明了类,但是却没有报错信息。(小坑)

热门文章

  1. TQ2440开发板学习纪实(9)--- 利用Undefined异常模拟BLX指令
  2. 基于四信工业路由器的连锁超市收银解决方案
  3. 纬编针织脱圈走纱分析与防走纱工艺研究
  4. 二进制安装Kubernetes(k8s) v1.22.10 IPv4/IPv6双栈
  5. connectify中文版有效避免wifi辐射
  6. vue 个人管理中心模板
  7. php allow furl open,如何阻止來自iframe的彈出窗口?
  8. 如何将自己培养成一个优秀的产品经理
  9. 图像标注工具labelimg的安装和使用教程
  10. idm 服务器显示你没有权限,idm复制链接服务器权限