学习阶段:大学数学,积分变换。

前置知识:微积分、线性代数、复变函数。

我们是如何区分开两个同时说话的人的声音的?要知道,声音本质是一种机械波,波具有叠加性,同时说话的两个人的声波叠加之后是一种混乱的波形,人却能自然而然地把它们分离开,知道哪部分声音是同一个人发出的,这其中有什么原理?

实际上,不同人说话的声波有不同的特性。男人声音低沉,也即声波频率较低;女人声音尖亮,也即声波的频率较高。声波的频率不同,则音调不同,听感也不同。同一个人说话声音的频率相近,把混合声波中频率相近的部分分离出来,就能得到每个人各自说话的波形。人的大脑自带这个功能,但是这个原理在数学上具有相当的难度,很晚(19世纪)才被傅里叶等人提出来。

积分变换在信号处理、音频处理、图像处理、解微分方程等领域有着重要的作用。

对于一个值随时间变化的函数

,傅里叶变换告诉我们如何从中分解出频率不同的部分。傅里叶级数是局部的傅里叶变换,用离散频率的周期函数来线性表示一定区间上的
,它是考虑无穷区间的傅里叶变换的基础。

1. 周期函数的线性组合

我们要把函数

分解为频率不同的部分,也就是让一些有不同频率的周期函数加起来等于
. 根据波的叠加与线性代数的思想,我们希望可以把
分解为

其中

是周期函数,具有特定的频率
. 现在我们需要先确定使用哪些周期函数
,然后确定出系数
分别是多少。

这组函数

可视为基底,可以线性表示各种各样的函数。我们当然希望基底越简单越好,而且应具有正交性,这在第5节中有论述。

2. 最简单的周期函数:匀速圆周运动

匀速圆周运动是最简单的周期运动。根据欧拉公式,复平面上绕着单位圆的匀速圆周运动可记为

这里的

是实数,被称为

角速度/角频率,控制着旋转的频率。

越大,旋转越快。
为正数表示逆时针旋转,为负数表示顺时针旋转。如图1所示:
图1 e^(iωt)

易得

的周期为
,即转一整圈所需的时间。

3. 函数

的性质

函数

有一些非常好的性质。

乘以常系数
,相当于改变圆周运动的起点到
点,但不改变圆周运动的中心(仍是原点)和频率。根据复数乘法的性质,复数相乘时,模长相乘,辐角相加,容易得到这个结论。
的模长
决定了圆周运动的

半径/振幅

的辐角
决定了圆周运动的

起始角度/相位。如图2所示:

图2 改变圆周运动的起点至c

另外,由于圆周运动的中心恒为原点,故下式成立:

该积分值的物理意义是:n层圆周的重心(或运动位置的平均值)乘以运动时间

. 这个值显然是0,证明其实也很容易:

时,相当于一直停留在起点不动,此时积分值不为0,而是
.

4. 傅里叶级数

4.1 复值函数的指数形式

改变函数

会得到一系列函数。选用哪些函数呢?为了让这些函数有一定的共性以简化问题,我们使用一批共同具有周期
的函数。记其中最慢的频率为基准角频率
,则
,所有函数的频率都是
的整数倍,故这一系列函数可表示为
. 如图3所示:
图3 具有相同周期T的各种圆周运动

由第1节的思想,设函数

可表示成

计算

有非常巧妙的算法:在上式两端同时乘以

在上式两端同时做

的定积分。根据第3节
的性质(1)式有

称数列

离散频谱,因为它完整记录了一系列角频率不同的,分别为

的圆周运动作为
分量的系数。最终得到的级数
上收敛于
,称之为

傅里叶级数的指数形式。指数形式对于函数值为复数的

亦适用。

离散频谱

的求法可以从几何角度来理解。函数
可以视为在复平面上画图,在时刻
笔尖落在
点。函数
相当于让
随时间变化时还要加上一个“反向旋转”,让其中
这一旋转分量始终停留在起点不动,而其他旋转分量依然有着周期
,只不过频率改变了。积分
求的是周期
内的路径的重心,由于其他旋转分量的重心为零,而
留在起点不动,重心正好是
,因此该积分求出的正好是
的值。

该求法和泰勒级数系数的求法有着异曲同工之妙。对多项式函数

次导,并代入
,会发现有且仅有
这一项不是零,从而求出
的值;让一系列匀速圆周运动的合成
进行“反向旋转”,即乘以
,会发现有且仅有
这一项的重心不是零,从而求出
的值。

4.2 实值函数的三角形式

如果

是实值函数,还可以把傅里叶级数写为三角形式。由(2)式得

因为

为实值,故
也为实值,
互为共轭复数。将傅里叶级数两两配对得

记为
,那么
,代入上式可得

一对圆周运动之和在图形上如图4所示:

图4 一对圆周运动之和

(3)式是傅里叶级数的三角形式之一。其中

记录了所有的振幅,称之为

离散振幅谱

记录了所有的相位,称之为

离散相位谱

用两角和差公式可将(3)式打开,得到

注意到

,故

那么

(4)式是傅里叶级数的另一种三角形式

至此,离散频谱

的实部、虚部、模长、辐角的物理意义都已经找到了。

*5. 函数向量的标准正交基

上述作为基底的函数被称为函数向量。用某种方式定义了它们的内积之后,可以证明我们所使用的函数基底为标准正交基,也就是最简形式了。

自定义内积,涉及到内积空间,这是泛函分析课程所涉及的内容。(我没有学过泛函分析,因此相关内容只是我自己粗浅的理解,可能有谬误。)

5.1 指数形式的标准正交基

定义

的内积为:

利用第3节

的性质,容易证明
构成一组标准正交基。实际上4.1节计算
的巧妙方法,正是利用了基底的正交关系:用一个向量内积所有其他向量都得0.

5.2 三角形式的标准正交基

定义

的内积为:

先将三角函数化为指数函数,再利用第3节

的性质,容易证明
构成一组标准正交基。

附录

推荐视频:

【官方双语】微分方程概论-第四章:但什么是傅立叶级数呢?-从热流到画圈圈​www.bilibili.com如何用傅里叶级数绘制出任意图像来?双语​www.bilibili.com傅立叶变换如何理解?美颜和变声都是什么原理?李永乐老师告诉你_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com

傅里叶变换处理音频c++_积分变换(1)——傅里叶级数相关推荐

  1. 傅里叶变换处理音频c++_KWS-SoC——基于Wujian100的音频流关键词检测SoC拓展开发笔记之一...

    Keyword Spotting(KWS, 关键词检测),目的是在一串连续的音频流中检测出预定义的词或者词组.在实际应用中,比如手机的智能助手,智能住宅里所支持的语音指令等,都需要用到关键词检测,当用 ...

  2. python音频 降噪_从视频中提取音频数据,然后应用傅里叶对音频降噪(python)...

    视频准备 QQ有热键 然后随便打开一个视频网站进行录屏 我选择B站 从视频中提取音频 需要安装包moviepy pip install moviepy 提取代码 from moviepy.editor ...

  3. 从视频中提取音频数据,然后应用傅里叶对音频降噪(python)

    视频准备 QQ有热键 然后随便打开一个视频网站进行录屏 我选择B站 从视频中提取音频 需要安装包moviepy pip install moviepy 提取代码 from moviepy.editor ...

  4. 周期三角波傅里叶级数例题_如何理解傅里叶级数

    我们学高等数学无穷级数里面有一个重要的级数叫做傅里叶级数,这个级数表述起来非常复杂,不好理解,很多人也是看到这个级数感觉摸不着头脑,被一长串公式吓到了,这里将通俗讲解傅里叶级数. 傅里叶级数是周期函数 ...

  5. matlab求傅里叶级数展开式_简单粗暴傅里叶级数

    简单粗暴傅里叶级数 楠木wnn2000@hust.edu.cn 为什么写本文? 作为笔记. 为什么给文章取这个名字? 前段日子拜读过某pku学霸的<简单粗暴 TensorFlow>.这篇教 ...

  6. 傅里叶滤波音频文件(笔记05)

    代码: import matplotlib.pyplot as plt import numpy as np import numpy.fft as nf import scipy.io.wavfil ...

  7. java 音频 傅立叶_关于FFT分析音频的小归纳

    最近工作上在做关于音乐游戏的内容,其中需要分析音频找节奏点(或者说是重音点). 学习了一系列相关知识后,了解到一段音乐的波形图可以分解成不同频率的波形图,也就是由时域到频域的转换. 借用其他博主的图就 ...

  8. python增大音频音量_音频数据增强及python实现

    博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/13404523.html 音频时域波形具有以下特征:音调,响度,质量.我们在进行数据增强时,最好只 ...

  9. android 音频增益_参考级音频播放器!七彩虹发布Pocket HIFI U6:4999亲民价

    作为国产HiFi音频的老牌厂商,七彩虹去年年中推出了新旗舰播放器Pocket HIFI U8,时隔一年U系旗下第二款参考级播放器又来了,型号为"Pocket HIFI U6",将于 ...

最新文章

  1. MVC 4.0 Razor模板引擎 @Html.RenderPartial 与 @Html.RenderAction 区别
  2. python函数+定义+调用+多返回值+匿名函数+lambda+高级函数(reduce、map、filter)
  3. 050_整形和字节数组转换
  4. 16位汇编 Hook int 0实例
  5. Oozie JMS通知消息实现--根据作业ID来过滤消息
  6. 如何在已安装TMG2010服务器上安装Symantec Backup Exec 2010 Remote Agent
  7. java怎么将前端的数据存到关联的表中_Java程序员最可能被考到的14个面试题
  8. 修复Jscript(IE浏览器脚本引擎)异常
  9. Zdenek Kalal的TLD Tracker(牛啊,学习!)
  10. 基于Tensorflow + Opencv 实现CNN自定义图像分类
  11. 【项目调研+论文阅读】基于BERT的中文命名实体识别方法[J] | day6
  12. docker部署在linux怎么代理,如何在linux 上部署docker
  13. java实现rabbitmq发布/订阅模型(Publish/Subscribe queues), 生产者 消费者 交换机 消息队列
  14. struts2.2跟jstl怎么整合
  15. 修改Tomcat8的默认访问端口8080
  16. XJOI一级五段题解(g++,即C++),也可视作C++算法竞赛教程
  17. (c#)小游戏 飞行棋
  18. TextView自动调节字体大小
  19. html的slider位置调整,ios设置UISlider的起始位置和增量
  20. 分组密码以及分组密码的模式

热门文章

  1. Maven日常 —— 你应该知道的一二三
  2. mysql全量备份、增量备份实现方法
  3. PHP的var_dump(‘1‘==‘1e0‘)的结果为true
  4. PHP的uniqid
  5. ob服务器维修视频,【转】科普贴骗经验~,可ob全球各服务器玩家比赛的网站
  6. arduino定时器函数如何使用_Excel表格技巧—如何使用DELTA 函数
  7. c++ cout头文件_C/C++知识分享:C++常用内置函数你会几个,使用过几次呢?
  8. android实现录像功能吗,Android实现录屏直播(一)ScreenRecorder的简单分析
  9. linux time dev null,/dev/null丟失后
  10. php图片是啥,php图片处理类(附实例)