如何向非技术人员解释“稀疏傅里叶变换”算法?
【伯乐在线导读】:这个问题来自 Quora,下面是来自 Tanooj Luthra 的回复。
让我们来演奏一架想象中的钢琴。
钢琴的每个琴键都对应一个特定频率的声音。例如,一个比较有名的频率是国际标准音A(440赫兹)。当有琴键按下时,你听到的声音是一个完美的正弦波,振荡在440赫兹。同样,中央C对应的频率约为261赫兹声波。
不过,每次只演奏一个音符太单调了,我们来尝试几个音符同时演奏。有趣的是,两个各不相关的声音结合起来,就创造一个全新的独特声音。它不再只是单一的频率,这是两个频率的结合。如果琴键一起按下我们会发现,对应的频率也叠加在了一起。
三个音符组合形成的最终声音信号!
快速傅立叶变换(FFT)可以让我们将这个新的声音解构为原始的频率,从本质上得到这个和弦是由哪些琴键组成的。现在我们退一步,只演奏一个音符,看看这个原始信号及其FFT的示例图。
这幅图中的数字没有曲线形状所代表的意义那么重要。上面图中蓝色表示声音的波形,表示了其幅值相对于时间的关系。它是一个单一的频率,表示只演奏了音符A。FFT变换后,我们得到了一个很有趣的图形,幅值相对于频率的关系。此图中单个波峰表示原始信号中的单一频率,而大部分的频率不存在。前进一点点,在我们的和弦例子中有两个音符C和A,我们的FFT将有两个波峰!一个会出现在相同的位置,而另一个将出现在较低的频率。总体来说,一个信号的FFT将每个“纯”频率相加得到最终的输出结果。
我们给钢琴加一个歌手伴奏。
人的声音频率范围很宽,多种多样的频率组成了多种多样的声音(词语)。正如下面的图片,音频信号可能会非常非常复杂。相应的FFT在一定比例上有成千上万的非零频率(图上的红色曲线将有成千上万不同高度的峰值)。举个例子,即使是一个歌手想发出F音,最终也会产生许多不同的频率,因为人声不是一个理想的乐器。
说出不同词语时的音频信号。显然不像上面的标准音A那样光滑波动!
现在,我们已经有点明白FFT了,现在来看看MIT的稀疏FFT。当我们为钢琴加了歌手伴奏后,我们有一个C和A的和弦以及一个歌手努力维持唱出的F音,然后得到了一个参差不齐的音频信号及其FFT。原本的FFT将计算出每个频率的幅度,但我们也许可以利用这样一个事实,即大部分的频率将集中在C、A和F周围!因此,如果我们只计算组成最终音频信号的三个频率,可以复制出一个足够接近于原音乐乐谱的声音。这就是稀疏FFT在做什么。
这篇论文注意到一个事实,在视频信号中有89%的频率不是必须存在的。只计算11%的频率的稀疏FFT,信号质量不会恶化太多。虽然视频的频率和信号的相关概念更偏向技术性,但是理论同样适用于钢琴和歌手。
如何向非技术人员解释“稀疏傅里叶变换”算法?相关推荐
- 嵌入式和非嵌入式_我如何向非技术同事解释词嵌入
嵌入式和非嵌入式 数据科学 (Data Science) Word embeddings. 词嵌入. What are they? What do they look like? How are th ...
- 从头到尾彻底理解傅里叶变换算法(上)
从头到尾彻底理解傅里叶变换算法(上) 前言 第一部分. DFT 第一章.傅立叶变换的由来 第二章.实数形式离散傅立叶变换(Real DFT) 从头到尾彻底理解傅里叶变换算法.下 第三章.复数 第四章 ...
- 经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、上
经典算法研究系列:十.从头到尾彻底理解傅里叶变换算法.上 作者:July.dznlong 二零一一年二月二十日 推荐阅读:The Scientist and Engineer's Guide t ...
- linux grep 非_帮助非技术人员转向Linux的8条技巧
linux grep 非 早在2016年,我就取消了技术教练业务. 永久性. 还是我想. 这是一个有趣的经历,在很大程度上是因为大多数人根本不是技术专家. 他们知道如何使用计算机来完成他们需要做的事情 ...
- 从头到尾彻底理解傅里叶变换算法
经典算法研究系列:十.从头到尾彻底理解傅里叶变换算法.上 作者:July.dznlong 二零一一年二月二十日 推荐阅读:The Scientist and Engineer's Guide to ...
- 从头到尾彻底理解傅里叶变换算法、上
转自:结构之法 算法之道 网址:https://blog.csdn.net/v_july_v/article/details/6196862 经典算法研究系列:十.从头到尾彻底理解傅里叶变换算法. ...
- 对于非技术人员来说,闪电网络和BCH分别意味着什么?
2017年8月,比特币网络分成了两条链.一条链是比特币现金(BCH),它遵循中本聪思想,允许交易的区块上限随着时间的推移而增加.而另一条链则是Bitcoin core(BCE),限制了区块的大小,同时 ...
- 如何直观的解释back propagation算法?
作者:Evan Hoo 链接:http://www.zhihu.com/question/27239198/answer/89853077 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非 ...
- 【pmcaff】一个APP的诞生,非技术人员的想法实现
点击上方 "公众号" 可以订阅哦! " 故事要从一次电影院的经历说起.一个人去看电影,买票时,听见前面的女生轻声对身旁的男生说:居然有人一个人看电影.我发现身边还有其他一 ...
最新文章
- Python 类对象及属性内置方法 classmethod、delattr、dir、hasattr、getattr、callable
- Bzoj3998: [TJOI2015]弦论
- nginx reload内存碎片问题-(一)
- 启明云端分享|Linux系统下如何调试I2C设备
- mysql update 几万 非常慢_mysqL update 太慢,求解决方法
- Django的电子商务网站的调研
- 风机桨叶故障诊断(六) 利用自编码器进行特征学习
- java字段注解类型数组_Java注解用法
- 95-190-035-源码-window-Time Window 实现
- 海思3159A运行yolov3(一)——安装caffe(Bug汇总篇)
- Code Review中的几个提示
- 杨辉三角Python
- 计算机技术产生的就业辩论,计算机与软件技术系辩论赛决赛
- ACCESS使用技巧三则
- [搜索 meet in the middle+哈希] ProjectEuler 598. Split Divisibilities
- 微信可以显示你的足迹了,快试试
- 零基础学kubernetes(k8s)必看教程,带你10分钟快速实战入门k8s
- winscp 同步_使用WinSCP进行简单代码文件同步
- 2U 4节点Xeon SP服务器 (上):PowerEdge C6420更受重视
- 完美世界手游服务器显示不了,完美世界手游登陆不了怎么办 完美世界手游无法登陆解决方案...
热门文章
- Linux Supervisor的安装与使用入门
- PHP Multipart/form-data remote dos Vulnerability
- 第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器
- HTML+CSS布局技巧及兼容问题【阅读季】
- [原]tornado源码分析系列(三)[网络层 IOLoop类]
- 一般筛法求素数+快速线性筛法求素数
- I'm stuck! ccf模拟题。
- pygame是python的一个库吗,python学习pygame,,基本库导入impor
- vc 只有顶级窗口可以弹出窗口_如果你刚换了新电脑,这几个地方记得设置一下,电脑可以多用几年...
- java notify 的作用_java 为什么notify和notifyAll都不起作用?