http://blog.jobbole.com/51301/

九年前,当我还坐在学校的物理数学课的课堂里时,我的老师为我们讲授了一种新方法,给我留下了深刻映像。

我认为,毫不夸张地说,这是对数学理论发现最广泛的应用。应用的领域包括:量子物理、射电天文学、MP3和JPEG压缩、X-射线晶体学、语音识别、PET或MRI扫描。这种数学方法叫做傅里叶变换,这种方法因18世纪的法国物理学家、数学家约瑟夫·傅立叶(Joseph Fourier)而得名。这种方法甚至被詹姆斯·沃森和弗朗西斯·克里克用来解码由罗莎琳德·富兰克林通过X射线得到的DNA双螺旋结构。(克里克是傅里叶变换的专家,他写过一篇名为《傅里叶变换在观鸟者中的应用》的趣文,来向名为沃森的观鸟爱好者解释这一数学概念。)

无论你在听MP3格式的歌曲,还是在网页上浏览图片,或者向SIRI提问,甚至打开收音机时,你都可能在日常生活中应用了演化的傅里叶变换。(顺便说一下,傅里叶并不是一个敷衍取巧的人。在他研究的理论物理和数学之外,他还是第一个发现温室效应的人<PDF>)。

那么,什么是傅里叶理论呢,为什么他的这个理论如此有用?想想你在钢琴键盘上敲响一个音符。当你按下琴键的时候,钢琴中有一个小锤来来回回地敲击一根琴弦(对于音准do大约是440次每秒)。随着琴弦振动,它周围的空气分子也来回震动,从而创造了一波震动的空气分子,我们称之为声。如果你能看空气中进行的这种有规律的舞蹈,你会发现一系列平稳,起伏的,无休止的重复。这就是所谓的正弦波曲线,或正弦波。(特别说明:在钢琴的例子中,肯能会产生不止一条正弦波实际演奏中,钢琴音色的丰富性正是来源于在主要正弦波之外的那些轻柔的泛音。钢琴的音符可以大致模仿一条正弦波,但是对于单一的正弦波声音来说,音叉发出的声音是一个更加贴切的例子。)

现在,让我们暂时放下单独一个音符,而考虑由三个按键同时发出的和弦声。和弦结果的声波并不漂亮——它看起来杂乱无章。但是,在这混乱的背后有一个简单的模型。毕竟,和弦只是三个音符的相互融合与碰撞,因此这样混乱的声波,实际上只是三种音符(正弦曲线)的和而已。

傅里叶认为这不仅仅音乐和弦的特殊属性,而可以推广应用到一切重复的波形中,无论这个波形是方形,圆形,波浪,三角形伙食其他。傅里叶变换像是一种数学棱镜——你输入一个波形并且将这种波形分解为不同成分——这些音符(正弦曲线)会相互叠加而形成新的重建波形。

如果这听起来有一些抽象的话,有一些可视化的方式来使得傅里叶的方法更加直观。第一种方法是有卢卡斯(Lucas V. Barbosa)提出的。他是一名来自巴西的物理学学生,他将业余时间无偿用于为维基百科制作关于数学和科学的动画,在维基百科上他被称为“LucasVB”。

那么,现在让我们来看看输入一个方形波,经过傅里叶变换后,会输出怎样的波形。

在这些图形中(点击这里可查看 GIF 动态图),红色的方形波被分离为单纯波形的集合(蓝色的正弦曲线)。将这些蓝色波形认为是红色波形的数学成分列表。在这个比喻中,傅里叶变换就像是一种药方——他准确地告诉你要重建原始波形,每一种简单波形你要使用多少。动画中的垂直蓝色线,是每种波形数量的直观表示。

思考这个问题,还有一种由马修·亨德森( Matthew Henderson or Matthen)提供的方法。他是剑桥大学的博士生,并且对于创建数学动画模型非常有兴趣。他用圆形而不是正弦曲线来解释傅里叶变换。这种方法包含了一组不同大小的源,每个圆的圆心都在一个更大的圆的边缘上。然后,这些圆开始转动,大圆在小圆的周围摆动,小圆的运动速度大于大圆。如果你追踪最小圆上一个点的运动轨迹,如下面的动画和截图所示,你可以重建任意形状的波形。傅里叶变换再一次告诉你波形是怎样产生的:以怎样的速度去移动哪些圆。

如果你年纪够大以至于你用过呼吸量描记仪,那么通过层叠的齿轮来描述复杂模型的想法你可能很熟悉。LucasVB在同一个动画上制作了互动的版本,使得你可以随意改变圆圈的大小。

总的来说,傅里叶变换告诉你,在一个整体的波形中,每一个单独的“音符”(正弦曲线或是圆圈)的比例。这就是傅里叶变换如此有用的原因。想象一下,你正在和你的朋友通电话,同时你想让他们能够画出近似方形的波形。复杂的方式是读出一长串的数字,每个数字表示了相应时间点上波形的高度。有了这些数字,你的朋友可以耐心地绘制出原始波形。这就是原始的音频格式比如WAV的基本原理。但是,如果你的朋友知道傅里叶变换,那么你可以更加聪明地完成这个工作:你只要告诉他们少量数字——上图中提到的不同的圆的尺寸。他们可以用这些圆来重建原始波形。

这不仅仅是数学花招。傅里叶变换出现在几乎所有存在波形的地方。无处不在的MP3格式使用一种变形的傅里叶变换来达到相比之前的WAV(读作“wave”)更大的压缩率。对于每个音频片段,傅里叶变换将音频波形分解为它的成分音符并且保存下来,从而代替存储原始波形。傅里叶变换还可以告诉你在一首歌中每个音符所占的比例,你可以知道哪些音符是这首歌的基本元素。音调很高的音符并不重要(我们的耳朵几乎不能听见),因此,MP3格式放弃保存这些音符,从而取得了更高的数据压缩率。这正是高保真音响爱好者不喜欢MP3格式的原因——它不是一种无损的音频格式,高保真爱好者表示他们可以听出其中的差别。

这也是智能手机的应用程序Shazam怎样识别一首歌的原理。它将音乐分割成块,利用傅里叶变换算出每一块中的音符成分。然后它搜索数据库,来寻找这样的“音符指纹”与他们已有文件中的一首歌相匹配。语音识别同样使用“傅里叶——指纹”的思想,将你的声音与已知单词列表进行比较。

你也可以在图像上利用傅里叶变换。有一个极好的视频来说明你怎么利用圆圈来绘制辛普森的脸。在线百科全书Wolfram Alpha采用了相似的理念来绘制名人头像。听起来,这似乎可以存下来用于一个恶搞的鸡尾酒会,但是,这种方法也用于将图像压缩为JPEG文件。在以前的微软绘图中,图像是用位图(BMP)存放的,这种文件包含了一长串的数字,代表对每个像素点的颜色编码。JPEG格式就相当于图像格式中的MP3格式。建立一个JPEG文件,你首先将图片分割为很小的块,每块都是8像素*8像素。对于每个像素块,你可以用与重建辛普森的脸相同的画圆的办法来重建局部图像。正如MP3放弃保存高音一样,JPEG不保存极小的圆。这样做的结果是:牺牲了小部分的画面质量,来取得文件大小的巨大压缩。这样的理念,使得我们都喜欢的可视化网络世界成为可能(同时最终让我们得到了GIF格式)。

在科学研究中,傅里叶变换又有怎样的应用呢?我在推特上邀请科学家们来描述他们在工作中是怎样应用傅里叶的思想的。他们的回复使我惊讶。做出回复的科学家表示,他们正在利用傅里叶变换:研究不同的潜水器结构与水流的相互作用,试图预测即将到来的地震,识别距离遥远的星系的组成部分,寻找热量大爆炸残余物中的新物理成分,从x射线衍射模式揭示蛋白质的结构,为NASA分析数字信号,研究乐器的声学原理,改进水循环的模型,寻找脉冲星(自转的中子星),用核磁共振研究分子结构。傅里叶变换已经被用于通过破译油画中的化学物质,来识别假冒的杰克逊·波洛克绘画。

哇!这仅仅是一个相当传统的小数学技巧!

原文链接: Aatish Bhatia   翻译: 伯乐在线programmer_lin
译文链接: http://blog.jobbole.com/51301/
转载必须在正文中标注并保留原文链接、译文链接和译者等信息。]

傅里叶变换--MP3、JPEG和Siri背后的数学的更多相关文章

  1. 傅里叶变换:MP3、JPEG和Siri背后的数学

    九年前,当我还坐在学校的物理数学课的课堂里时,我的老师为我们讲授了一种新方法,给我留下了深刻映像.我认为,毫不夸张地说,这是对数学理论发现最广泛的应用.应用的领域包括:量子物理.射电天文学.MP3和J ...

  2. GAN背后的数学原理

      模拟上帝之手的对抗博弈——GAN背后的数学原理 简介 深度学习的潜在优势就在于可以利用大规模具有层级结构的模型来表示相关数据所服从的概率密度.从深度学习的浪潮掀起至今,深度学习的最大成功在于判别式 ...

  3. hover 背后的数学和图形学

    前端开发中,hover是最常见的鼠标操作行为之一,用起来也很方便,CSS直接提供:hover伪类,js可以通过mouseover+mouseout事件模拟,甚至一些第三方库/框架直接提供了 hover ...

  4. 速算1/Sqrt(x)背后的数学原理

    概述 平方根倒数速算法,是用于快速计算1/Sqrt(x)的值的一种算法,在这里x需取符合IEEE 754标准格式的32位正浮点数.让我们先来看这段代码: float Q_rsqrt( float nu ...

  5. 吴恩达机器学习笔记43-SVM大边界分类背后的数学(Mathematics Behind Large Margin Classification of SVM)

    假设我有两个向量,

  6. OpenGL坐标变换及其数学原理,两种摄像机交互模型(附源程序)

    实验平台:win7,VS2010 先上结果截图(文章最后下载程序,解压后直接运行BIN文件夹下的EXE程序): a.鼠标拖拽旋转物体,类似于OGRE中的“OgreBites::CameraStyle: ...

  7. 在数学建模中学MATLAB

    为期三周的数学建模国赛培训昨天正式结束了,还是有一定的收获的,尤其是在MATLAB的使用上. 1. 一些MATLAB的基础性东西: 元胞数组的使用:http://blog.csdn.net/z1137 ...

  8. 《数学之美》(吴军 著)读书笔记:第1章 文字和语言 vs 数字和信息

    第1章有4个小节,以及前言. 前言 1.信息 2.文字和数字 3.文字和语言背后的数学 4.小结 下面我一一展开,让我们看看每一节都说了什么. 前言 语言和数字都是信息传播的载体,他们之间其实存在着天 ...

  9. 可能是史上最全的机器学习和Python(包括数学)速查表

    新手学习机器学习很难,就是收集资料也很费劲.所幸Robbie Allen从不同来源收集了目前最全的有关机器学习.Python和相关数学知识的速查表大全.强烈建议收藏! 机器学习有很多方面. 当我开始刷 ...

随机推荐

  1. 使用gitblit搭建一个简单的局域网服务器

    使用gitblit搭建一个简单的局域网服务器 1.使用背景 现在很多使用github管理代码,但是github需要互联网的支持,而且私有的git库需要收费.有一些项目的代码不能外泄,所以,搭建一个局域 ...

  2. LOADRUNNER之汉字编码转换及\X00问题

    我们在使用loadrunner做性能测试的时候经常会出现一些URL编码问题,如当参数中存在中文的时候 "Name=user", "Value=孟林", ENDI ...

  3. os层删除与数据库层drop的区别于对策。

    os rm删除的,可以通过os层面恢复(句柄.inode.如果inode没有了可以根据block去重组出来数据文件),也可以通过rman备份还原方式恢复.  db 层面drop删除的 只能不完全恢复( ...

  4. 无人驾驶之激光雷达&摄像头(主要from 速腾CEO 邱纯鑫分享)

    无人驾驶之激光雷达&摄像头 (from 速腾CEO 邱纯鑫公开课分享) 根据听的一些讲座和看的书籍,个人感觉:目前现在的自动驾驶,根本问题还是在于感知(路况,周边物体,交通标识等等),控制的方 ...

  5. PHP 小技巧之__callStatic魔术方法使用

    使用 PHP 框架时,经常会用到 ORM 模型查询数据库,有没有疑问:为啥有些 ORM 中的静态查询方法,不能通过函数追踪下去呢,很有可能就是使用了 __callStatic 魔术方法的小技巧 这里贴 ...

  6. LwIP:处理链路状态改变

    [文/告别年代   Email:byeyear@hotmail.com] 重大修订记录 ----------------------------------------- 2016.11.03 感谢@ ...

  7. 【Spring学习笔记-MVC-1.0】Spring MVC架构介绍

    作者:ssslinppp       1. 核心架构图 2. 核心架构的具体流程步骤 3. 具体的核心开发步骤 4. 常用注解 5. <mvc:annotation-driven>配置 6 ...

  8. Java设计原则之依赖倒转原则

    定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该依赖细节:细节应该依赖抽象. 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成.这种场景下,类A一 ...

  9. TraceLog.cs 累积 C#

    using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Dia ...

  10. sping mvc+uploadify 上传文件大小控制3部曲

    页面使用uploadify 上传控件,使用spring CommonsMultipartipartResolver , 反向代理nginx nginx 配置文件 client_max_body_siz ...