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

2024-03-20 22:18

本文主要是介绍傅里叶变换:MP3、JPEG和Siri背后的数学,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

翻译自 Aatish Bhatia


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

我认为,毫不夸张地说,这是对数学理论发现最广泛的应用。应用的领域包括:量子物理、射电天文学、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分析数字信号,研究乐器的声学原理,改进水循环的模型,寻找脉冲星(自转的中子星),用核磁共振研究分子结构。傅里叶变换已经被用于通过破译油画中的化学物质,来识别假冒的杰克逊·波洛克绘画。

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


这篇关于傅里叶变换:MP3、JPEG和Siri背后的数学的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/830902

相关文章

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

uva 11044 Searching for Nessy(小学数学)

题意是给出一个n*m的格子,求出里面有多少个不重合的九宫格。 (rows / 3) * (columns / 3) K.o 代码: #include <stdio.h>int main(){int ncase;scanf("%d", &ncase);while (ncase--){int rows, columns;scanf("%d%d", &rows, &col

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

研究人员在RSA大会上演示利用恶意JPEG图片入侵企业内网

安全研究人员Marcus Murray在正在旧金山举行的RSA大会上公布了一种利用恶意JPEG图片入侵企业网络内部Windows服务器的新方法。  攻击流程及漏洞分析 最近,安全专家兼渗透测试员Marcus Murray发现了一种利用恶意JPEG图片来攻击Windows服务器的新方法,利用该方法还可以在目标网络中进行特权提升。几天前,在旧金山举行的RSA大会上,该Marcus现场展示了攻击流程,

Verybot之OpenCV应用二:霍夫变换查找圆

其实我是想通过这个程序来测试一下,OpenCV在Verybot上跑得怎么样,霍夫变换的原理就不多说了,下面是程序: #include "cv.h"#include "highgui.h"#include "stdio.h"int main(int argc, char** argv){cvNamedWindow("vedio",0);CvCapture* capture;i

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

2024年AMC10美国数学竞赛倒计时两个月:吃透1250道真题和知识点(持续)

根据通知,2024年AMC10美国数学竞赛的报名还有两周,正式比赛还有两个月就要开始了。计划参赛的孩子们要记好时间,认真备考,最后冲刺再提高成绩。 那么如何备考2024年AMC10美国数学竞赛呢?做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,