理解离散傅立叶变换(一)
------傅立叶变换的由来
关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的 文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让人很难能够从感性上得到理解,最近,我偶尔从网上看到一个关于数字信号处理的电子书籍,是一 个叫Steven W. Smith, Ph.D.外国人写的,写得非常浅显,里面有七章由浅入深地专门讲述关于离散信号的傅立叶变换,虽然是英文文档,我还是硬着头皮看完了有关傅立叶变换的有 关内容,看了有茅塞顿开的感觉,在此把我从中得到的理解拿出来跟大家分享,希望很多被傅立叶变换迷惑的朋友能够得到一点启发,这电子书籍是免费的,有兴趣 的朋友也可以从网上下载下来看一下,URL地址是:
http://www.dspguide.com/pdfbook.htm
要理解傅立叶变换,确实需要一定的耐心,别一下子想着傅立叶变换是怎么变换的,当然,也需要一定的高 等数学基础,最基本的是级数变换,其中傅立叶级数变换是傅立叶变换的基础公式。
一、傅立叶变换的提出
让我们先看看为什么会有傅立叶变换?傅立叶是一位法国数学家和物理学家的名字,英语原名是Jean Baptiste Joseph Fourier(1768-1830), Fourier对热传递很感兴趣,于1807年在法国科学学会上发表了一篇论文,论文里描述运用正弦曲线来描述温度分布,论文里有个在当时具有争议性的决 断:任何连续周期信号都可以由一组适当的正弦曲线组合而成。当时审查这个论文的人,其中有两位是历史上著名的数学家拉格朗日(Joseph Louis Lagrange, 1736-1813)和拉普拉斯(Pierre Simon de Laplace, 1749-1827),当拉普拉斯和其它审查者投票通过并要发表这个论文时,拉格朗日坚决反对,在近50年的时间里,拉格朗日坚持认为傅立叶的方法无法表 示带有棱角的信号,如在方波中出现非连续变化斜率。法国科学学会屈服于拉格朗日的威望,否定了傅立叶的工作成果,幸运的是,傅立叶还有其它事情可忙,他参 加了政治运动,随拿破仑远征埃及,法国大革命后因怕会被推上断头台而一直在逃避。直到拉格朗日死后15年这个论文才被发表出来。
谁是对的呢?拉格朗日是对的:正弦曲线无法组合成一个带有棱角的信号。但是,我们可以用正弦曲线来非 常逼近地表示它,逼近到两种表示方法不存在能量差别,基于此,傅立叶是对的。
为什么我们要用正弦曲线来代替原来的曲线呢?如我们也还可以用方波或三角波来代替呀,分解信号的方法 是无穷多的,但分解信号的目的是为了更加简单地处理原来的信号。用正余弦来表示原信号会更加简单,因为正余弦拥有原信号所不具有的性质:正弦曲线保真度。 一个正余弦曲线信号输入后,输出的仍是正余弦曲线,只有幅度和相位可能发生变化,但是频率和波的形状仍是一样的。且只有正余弦曲线才拥有这样的性质,正因 如此我们才不用方波或三角波来表示。
二、傅立叶变换分类
根据原信号的不同类型,我们可以把傅立叶变换分为四种类别:
1
非周期性连续信号
傅立叶变换(Fourier Transform)
2
周期性连续信号
傅立叶级数(Fourier Series)
3
非周期性离散信号
离散时域傅立叶变换(Discrete Time Fourier Transform)
4
周期性离散信号
离散傅立叶变换(Discrete Fourier Transform)
下图是四种原信号图例: 
这四种傅立叶变换都是针对正无穷大和负无穷大的信号,即信号的的长度是无穷大的,我们知道这对于计算机处理来说是不可能的,那么有没有针对长度 有限的傅立叶变换呢?没有。因为正余弦波被定义成从负无穷小到正无穷大,我们无法把一个长度无限的信号组合成长度有限的信号。面对这种困难,方法是把长度 有限的信号表示成长度无限的信号,可以把信号无限地从左右进行延伸,延伸的部分用零来表示,这样,这个信号就可以被看成是非周期性离解信号,我们就可以用 到离散时域傅立叶变换的方法。还有,也可以把信号用复制的方法进行延伸,这样信号就变成了周期性离解信号,这时我们就可以用离散傅立叶变换方法进行变换。 这里我们要学的是离散信号,对于连续信号我们不作讨论,因为计算机只能处理离散的数值信号,我们的最终目的是运用计算机来处理信号的。
但是对于非周期性的信号,我们需要用无穷多不同频率的正弦曲线来表示,这对于计算机来说是不可能实现 的。所以对于离散信号的变换只有离散傅立叶变换(DFT)才能被适用,对于计算机来说只有离散的和有限长度的数据才能被处理,对于其它的变换类型只有在数 学演算中才能用到,在计算机面前我们只能用DFT方法,后面我们要理解的也正是DFT方法。这里要理解的是我们使用周期性的信号目的是为了能够用数学方法 来解决问题,至于考虑周期性信号是从哪里得到或怎样得到是无意义的。
每种傅立叶变换都分成实数和复数两种方法,对于实数方法是最好理解的,但是复数方法就相对复杂许多 了,需要懂得有关复数的理论知识,不过,如果理解了实数离散傅立叶变换(real DFT),再去理解复数傅立叶变换就更容易了,所以我们先把复数的傅立叶变换放到一边去,先来理解实数傅立叶变换,在后面我们会先讲讲关于复数的基本理 论,然后在理解了实数傅立叶变换的基础上再来理解复数傅立叶变换。
还有,这里我们所要说的变换(transform)虽然是数学意义上的变换,但跟函数变换是不同的, 函数变换是符合一一映射准则的,对于离散数字信号处理(DSP),有许多的变换:傅立叶变换、拉普拉斯变换、Z变换、希尔伯特变换、离散余弦变换等,这些 都扩展了函数变换的定义,允许输入和输出有多种的值,简单地说变换就是把一堆的数据变成另一堆的数据的方法。
三、一个关于实数离散傅立叶变换(Real DFT)的例子
先来看一个变换实例,下图是一个原始信号图像:
这个信号的长度是16,于是可以把这个信号分解9个余弦波和9个正弦波(一个长度为N的信号可以分解 成N/2+1个正余弦信号,这是为什么呢?结合下面的18个正余弦图,我想从计算机处理精度上就不难理解,一个长度为N的信号,最多只能有N/2+1个不 同频率,再多的频率就超过了计算机所能所处理的精度范围),如下图:
9个余弦信号:
9个正弦信号:
把以上所有信号相加即可得到原始信号,至于是怎么分别变换出9种不同频率信号的,我们先不急,先看看 对于以上的变换结果,在程序中又是该怎么表示的,我们可以看看下面这个示例图:
上图中左边表示时域中的信号,右边是频域信号表示方法,从左向右表示正向转换(Forward DFT),从右向左表示逆向转换(Inverse DFT),用小写x[]表示信号在每个时间点上的幅度值数组, 用大写X[]表示每种频率的副度值数组, 因为有N/2+1种频率,所以该数组长度为N/2+1,X[]数组又分两种,一种是表示余弦波的不同频率幅度值:Re X[],另一种是表示正弦波的不同频率幅度值:Im X[],Re是实数(Real)的意思,Im是虚数(Imagine)的意思,采用复数的表示方法把正余弦波组合起来进行表示,但这里我们不考虑复数的其 它作用,只记住是一种组合方法而已,目的是为了便于表达(在后面我们会知道,复数形式的傅立叶变换长度是N,而不是N/2+1)。
下一节我们将来看一下实数傅立叶变换的具体方法。

转载于:https://blog.51cto.com/general/289476

理解离散傅立叶变换(一)相关推荐

  1. 理解离散傅立叶变换(三.复数)

    理解离散傅立叶变换(三) ------复数形式离散傅立叶变换 复数形式的离散傅立叶变换非常巧妙地运用了复数的方法,使得傅立叶变换变换更加自然和简洁,它并不是只是简单地运用替换的方法来运用复数,而是完全 ...

  2. 理解离散傅立叶变换(一. 傅立叶变换的由来)

    理解离散傅立叶变换(一) ------傅立叶变换的由来 关于傅立叶变换,不管是书本还是在网上可以非常easy找到关于傅立叶变换的描写叙述,可是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生 ...

  3. 理解离散傅立叶变换(一)——傅立叶变换的由来

    理解离散傅立叶变换(一) --傅立叶变换的由来 关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让 ...

  4. 理解离散傅立叶变换(四. 复数形式离散傅立叶变换)

    原文链接 https://blog.csdn.net/dznlong/article/details/2280867 理解离散傅立叶变换(四) ------复数形式离散傅立叶变换 复数形式的离散傅立叶 ...

  5. 傅立叶变换系列(四)离散傅立叶变换

    说明: 傅里叶级数.傅里叶变换.离散傅里叶变换.短时傅里叶变换...这些理解和应用都非常难,网上的文章有两个极端:"Esay"  Or  "Boring"!如果 ...

  6. 张量t-product积基础 | 循环矩阵与向量乘积的离散傅立叶变换 · 循环矩阵的傅里叶对角化

    循环矩阵与向量乘积的离散傅立叶变换 证明过程非常有意思写下来给大家看一下 证明: FAB=(FA(:,1))⊙(FB)FAB=(FA(:,1))\odot(FB) FAB=(FA(:,1))⊙(FB) ...

  7. 一步一步的无障碍理解快速傅立叶变换

    /// 作者:tt2767 声明:本文遵循以下协议自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 查看本文更新与讨论请点击:http://blog.cs ...

  8. OpenCV 【十七】离散傅立叶变换

    目录 1 key 2 原理 3 实例 3代码 4运行结果 5应用举例 1 key 什么是傅立叶变换及其应用? 如何使用OpenCV提供的傅立叶变换? 相关函数的使用,如: copyMakeBorder ...

  9. UA OPTI512R 傅立叶光学导论17 离散傅立叶变换简介

    UA OPTI512R 傅立叶光学导论17 离散傅立叶变换简介 DFT及其矩阵形式 DFT的性质 上一讲提到对连续波形f(x)f(x)f(x)做周期性采样时可以用采样函数来表示采样结果: fS(x)= ...

最新文章

  1. Java多线程,Thread,Runnable,Callable Task,Future<Task>,CompletionService
  2. 独家 | 避免神经网络过拟合的5种技术(附链接)
  3. Mysql 解决1251- Client does not support authentication protocol requested by server...的问题
  4. 树莓派和windows的FileZillla文件共享,补充:树莓派图形Xrdp界面登录
  5. VueX(Vue状态管理模式)
  6. lin总线可以控制几个节点_汽车上除了CAN通讯还有另外一种总线你需要知道
  7. 在Eclipse中运行Nutch2.3
  8. SSH整合中,使用父action重构子类action类.(在父类中获取子类中的泛型对象)
  9. 【转载】OpenStack Swift学习笔记
  10. win7优化设置_5项优化,至少提升20%!
  11. axi时序图_深入 AXI4总线(E3)实战:制作一个 AXI 接口 IP
  12. 产品功能优先级,到底该如何确定?
  13. Redis势不可挡系列之概念剖析
  14. support vector regression(SVR)支持向量回归
  15. python-opencv视频转图片+图片转视频(步骤详解)(亲测有效)
  16. Zigbee应用之搭建开发环境
  17. 期权定价模型之Heston模型--参数校准与定价【附python代码】
  18. Maya无法创建新模型解决方案1
  19. python 金额计算_Python | 根据销售金额计算折扣
  20. 绝地求生发生错误服务器维护,绝地求生更新时发生错误无法连接服务器解决办法最新版...

热门文章

  1. Django REST framework API 指南(11):序列化·关系
  2. 我的第一个python web开发框架(1)——前言
  3. 记录计算顺子(12,3,4或者9,0,1,2)的方法
  4. hexo从零开始到搭建完整
  5. NSURL 基本方法 absoluteString
  6. Java中的Cookie(1)——基本操作
  7. C++通过GSoap访问webService
  8. 分享:Dlib 17.49 发布,跨平台 C++ 通用库
  9. iframe解决跨域ajax请求的方法
  10. 沈阳构建智慧产业体系 大数据企业5年后将超200家