工程数学笔记 | 傅里叶级数/变换的本质理解

以下内容纯属个人学习记录,难免有误,欢迎指正~


引子

虽已工作数宰,但当因为工作的需要再次碰到傅里叶级数/变换相关的知识时是还是难免汗流浃背,读书时的痛苦的回忆涌上心头,果然曾经欠下的总归是要偿还的,那么这次就和它们做一次了断吧。

读书时对傅里叶级数/变换的恐惧主要在于两点:

① 被傅里叶级数/变换公式中,代表无穷的求和符合∑和积分∫符号吓得两股战战(根本原因在于微积分没学好,晕微积分),难以理解各种不同的信号怎么就能统一地这种无穷的函数组合形式来表达? ② 傅里叶级数/傅里叶变换中的函数单元组合为什么是正余弦函数?

直到最近再次捡起微积分的课本,又有幸拜读了几篇神作,摸到了微积分的内在逻辑和科学思想的一点门槛,基于此再次回首傅里叶级数/变换,竟有种“柳暗花明又一村”的顿悟,于是针对上述问题有了一个阶段性的答案,且听我娓娓道来。

傅里叶级数/变换背后的隐藏大佬——微积分

针对问题①,我的解答如下

傅里叶级数/变换公式的形式和其背后的逻辑思想源自【微积分】思想中的“无穷”、“极限”,“先微分后积分”的观点。或者说傅里叶级数/变换是微积分思想应用在信号领域的实例化和拓展。

铺垫:微积分发展背后的逻辑思想

你也能懂的微积分 - 知乎 (zhihu.com)

古希腊人和古代中国人都知道用已知的多边形去逼近复杂曲线图形,阿基米德用穷竭法算出了一些简单曲线围成的面积,刘微用正多边形去逼近圆,也就是用割圆术去计算圆周率。 牛顿和莱布尼茨发现了“微分和积分是一对互逆运算”这个惊天大秘密,正式宣告了微积分的诞生。 柯西和魏尔斯特拉斯用ε-δ语言重新定义了极限,把风雨飘摇中的微积分重新建立在坚实的极限理论基础之上,彻底解决了幽灵般的无穷小量的问题,解决了第二次数学危机,也在数学领域解决了芝诺悖论。 勒贝格基于集合论,对积分理论进行了一次革命,建立了定义范围更广的勒贝格积分,并且进一步把这场革命推进到了实分析。

我把上述链接文章的结语摘录出来,既是对该文章内容的一个总结,也是为了阐述了微积分几千年的发展脉络和内在逻辑——“无穷”、“极限”,“先微分后积分”。

有了这一点的铺垫,结合下述几篇文章就不难理解“各种不同的信号怎么就能统一地这种无穷的函数组合形式来表达”这一疑问了。


傅里叶级数/变换公式背后的“微分”与“积分”

傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 知乎 (zhihu.com)

这篇文章可以说是目前看到的科普傅里叶级数/变换的一篇神作了,从点赞量可见一斑。

重点摘录如下内容:矩形波的分解——傅里叶级数的直观理解

如果我说我能用前面说的正弦曲线波叠加出一个带90度角的矩形波来,你会相信吗?你不会,就像当年的我一样。但是看看下图:

添加图片注释,不超过 140 字(可选)

第一幅图是一个郁闷的正弦波cos(x) 第二幅图是2个卖萌的正弦波的叠加cos(x)+a.cos(3x) 第三幅图是4个发春的正弦波的叠加 第四幅图是10个便秘的正弦波的叠加 随着正弦波数量逐渐的增长,他们最终会叠加成一个标准的矩形,大家从中体会到了什么道理? (只要努力,弯的都能掰直!) 随着叠加的递增,所有正弦波中上升的部分逐渐让原本缓慢增加的曲线不断变陡,而所有正弦波中下降的部分又抵消了上升到最高处时继续上升的部分使其变为水平线。一个矩形就这么叠加而成了。但是要多少个正弦波叠加起来才能形成一个标准90度角的矩形波呢?不幸的告诉大家,答案是无穷多个。(上帝:我能让你们猜着我?) 不仅仅是矩形,你能想到的任何波形都是可以如此方法用正弦波叠加起来的。这是没有接触过傅里叶分析的人在直觉上的第一个难点,但是一旦接受了这样的设定,游戏就开始有意思起来了。 还是上图的正弦波累加成矩形波,我们换一个角度来看看:

在这几幅图中,最前面黑色的线就是所有正弦波叠加而成的总和,也就是越来越接近矩形波的那个图形。而后面依不同颜色排列而成的正弦波就是组合为矩形波的各个分量。这些正弦波按照频率从低到高从前向后排列开来,而每一个波的振幅都是不同的。一定有细心的读者发现了,每两个正弦波之间都还有一条直线,那并不是分割线,而是振幅为0的正弦波!也就是说,为了组成特殊的曲线,有些正弦波成分是不需要的。 这里,不同频率的正弦波我们成为频率分量。 好了,关键的地方来了!! 如果我们把第一个频率最低的频率分量看作“1”,我们就有了构建频域的最基本单元。 对于我们最常见的有理数轴,数字“1”就是有理数轴的基本单元。 时域的基本单元就是“1秒”,如果我们将一个角频率为的正弦波cos(t)看作基础,那么频域的基本单元就是。 有了“1”,还要有“0”才能构成世界,那么频域的“0”是什么呢?cos(0t)就是一个周期无限长的正弦波,也就是一条直线!所以在频域,0频率也被称为直流分量,在傅里叶级数的叠加中,它仅仅影响全部波形相对于数轴整体向上或是向下而不改变波的形状。

千言万语,总结一下就是,傅里叶级数/变换运用了与微积分相同的思想方法,那就是选取一个特殊的基本单元,通过无限的组合来构成普遍的一般的频域信号。

其背后的道道是不是很眼熟?

说白了还是微积分那一套“无穷”、“极限”,“先微分后积分”。

如果上述文章还是有点抽象,可以搭配以下文章作为辅食

傅里叶级数与傅里叶变换 - 知乎 (zhihu.com)

相关内容如下:

如下图所示,在笛卡尔坐标系中,由于我们定义了一组基 ,因此坐标系中的所有点才能够被一个坐标唯一地表示:

添加图片注释,不超过 140 字(可选)

这样的好处是有了坐标以后,点与点之间就不再是相互孤立的存在,也就有了距离的关系。这个过程就是一种变换,即把坐标变换到坐标系中。 这种简单的变换是将空间中的点使用一组基来表示,点是基的加权累加,而类比到函数中,对于一个函数,我们期待使用一组基函数来表示。傅里叶级数与傅里叶变换就是用来办到这件事的方法,其中傅里叶级数能够将任意周期函数表示成一组基函数依照各自的系数的累加,而傅里叶变换针对的是非周期函数。 首先阐述傅里叶级数,它可以将任意周期函数分解为简单震荡函数(正弦函数和余弦函数,这些函数作为基函数)的加和。具体地,对于周期为 的周期函数 ,可以分解为三角函数的组合: 这里的 ,称为基频率。类比笛卡尔坐标系, 就相当于坐标,而 就相当于基向量,不同的是, 是一组函数,而基向量是一组向量,笛卡尔坐标系使用基向量来表示点,傅里叶级数使用基函数来表示周期函数。

讲明白了傅里叶级数/变换公式形式的背后逻辑之后,就可以来说说第二个问题了,为什么傅里叶级数/变换的基本函数单元是正余弦函数了。


傅里叶级数/变换的正余弦函数——天命所归

还是那一套,放文章,讲道理

为什么要进行傅立叶变换? (qq.com)

一言以蔽之:

为什么我们要用正弦曲线来代替原来的曲线呢?如我们也还可以用方波或三角波来代替呀,分解信号的方法是无穷的,但分解信号的目的是为了更加简单地处理原来的信号。用正余弦来表示原信号会更加简单,因为正余弦拥有原信号所不具有的性质:正弦曲线保真度。一个正弦曲线信号输入后,输出的仍是正弦曲线,只有幅度和相位可能发生变化,但是频率和波的形状仍是一样的。且只有正弦曲线才拥有这样的性质,正因如此我们才不用方波或三角波来表示。

好像过于结论性,想看看详细的,严密的论述过程?

有!

如何理解傅立叶级数、傅立叶变换公式? (qq.com)

摘取部分内容:以一个简单的信号函数为例,说明为何要用正余弦函数的组合作为基本的函数单元。

假设 是周期为 的函数,傅里叶男爵会怎么构造三角函数的和,使之等于 ? 2.1 常数项 对于 这样的常数函数:

根据周期函数的定义,常数函数是周期函数,周期为任意实数。 所以,分解里面得有一个常数项。 2.2 通过 进行分解 首先, 是周期函数,进行合理的加减组合,结果可以是周期函数。 其次,它们的微分和积分都很简单。 然后, 是奇函数,即: 从图像上也可以看出, 关于原点对称,是奇函数:

添加图片注释,不超过 140 字(可选)

而奇函数与奇函数加减只能得到奇函数,即: 其中, 表示奇函数。 而 是偶函数,即: 从图像上也可以看出, 关于 轴对称,是偶函数:

添加图片注释,不超过 140 字(可选)

同样的,偶函数与偶函数加减只能得到偶函数,即: 其中, 表示偶函数。 但是任意函数可以分解和奇偶函数之和:

添加图片注释,不超过 140 字(可选)

所以同时需要 。 2.3 保证组合出来周期为 之前说了, 是周期为 的函数,我们怎么保证组合出来的函数周期依然为 呢? 比如下面这个函数的周期为 :

添加图片注释,不超过 140 字(可选)

很显然, 的周期也是 :

添加图片注释,不超过 140 字(可选)

的周期也是 ,虽然最小周期是 :

添加图片注释,不超过 140 字(可选)

很显然, 的周期都是 :

添加图片注释,不超过 140 字(可选)

更一般的,如果 的周期为 ,那么: 这些函数的周期都为 。 将这些函数进行加减,就保证了得到的函数的周期也为 。 2.4 调整振幅 现在我们有一堆周期为 的函数了,比如说

添加图片注释,不超过 140 字(可选)

通过调整振幅可以让它们慢慢接近目标函数,比如 看起来处处都比目标函数低一些:

添加图片注释,不超过 140 字(可选)

把它的振幅增加一倍:

添加图片注释,不超过 140 字(可选)

有的地方超出去了,从周期为 的函数中选择一个,减去一点:

添加图片注释,不超过 140 字(可选)

调整振幅,加加减减,我们可以慢慢接近目标函数:

2.5 小结 综上,构造出来的三角函数之和大概类似下面的样子: 这样就符合之前的分析: -有常数项 -奇函数和偶函数可以组合出任意函数 -周期为 -调整振幅,逼近原函数

洋洋洒洒,四处搬运了不少佳作,重点都是为了说明傅里叶级数/变换背后的本质逻辑,即微积分思想的具体表现。

区别于读书时代的微积分学习重点是面向考试的解题技巧训练,考完试了也就还给老师了,毕业后从事算法方向的工作的经历,愈发认识到各类算法底层的数学原理的重要性。

如同文章开篇傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 知乎 (zhihu.com)所说的那样:

傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。

细思,然也!

参考

*以文章中先后出现顺序为准

你也能懂的微积分 - 知乎 (zhihu.com)

傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 知乎 (zhihu.com)

傅里叶级数与傅里叶变换 - 知乎 (zhihu.com)

为什么要进行傅立叶变换? (qq.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python基础语法之学习print()函数

Python基础语法之学习print函数 1、代码2、效果 1、代码 print("Hello World") print("Hello World1","Hello World2") print("Hello World1\n","Hello World2") print("Hello World",end" 默认结束符是行号…

传输层协议[精选]

网络: 跨主机通信. 互联网通信: 两点之间的通信路径有无数条. 集线器: 把一根网线差出来两根,但是同一时刻只能有一根线跑.交换机: 组建局域网.路由器: 本质就是将两个局域网连接起来 交换机和路由器之间的区别越来越模糊. 调制解调器: 使用电话线上网的时候,需要将电话线的模…

c++容器详解Vector、deque、list、set、multiset、map、multimap、queue、stcak、Array

容器 数据结构描述实现头文件向量(vector)连续存储的元素<vector>列表(list)由节点组成的双向链表,每个结点包含着一个元素<list>双向队列(deque)连续存储的指向不同元素的指针所组成的数组<deque>集合(set)由节点组成的红黑树,每个节点都包含着一个元素,…

C++:对象模型和this指针

对象模型&#xff1a; 成员变量和成员函数分开存储 在C中&#xff0c;类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 空对象占用空间&#xff1a; 1字节 C编译器会给每个空对象也分配一个字节空间&#xff0c;是为了区分空对象占内存的位置 每个…

根据密码构成规则检测密码字符串

从键盘输入密码字符串&#xff0c;程序根据给定密码构成规则检测并给出对应提示。 (笔记模板由python脚本于2023年11月27日 19:27:47创建&#xff0c;本篇笔记适合熟悉Python字符串str对象的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.…

Android12之logcat日志显示颜色和时间(一百六十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Android 12 打开网络ADB并禁用USB连接ADB

平台 RK3588 Android 12 Android 调试桥 (adb) Android 调试桥 (adb) 是一种功能多样的命令行工具&#xff0c;可让您与设备进行通信。adb 命令可用于执行各种设备操作&#xff0c;例如安装和调试应用。adb 提供对 Unix shell&#xff08;可用来在设备上运行各种命令&am…

ABAP: JSON 报文解析——/ui2/cl_json

1、JSON数组 报文格式如下&#xff0c;是JSON 数组类型的。 [{"I_TYPE":"V","I_BUSINESSSCOPE":"1001"},{"I_TYPE":"V","I_BUSINESSSCOPE":"1002"} ] json转换为SAP内表&#xff1a; TYP…

Redis入门保姆级教程

1. Redis入门 1.1 Redis简介 Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。 官网:https://redis.io 中文网:https://www.redis.net.cn/ key-value结构存储&#xff1a; 主要特点&#xff1a; 基于内存存储&#xff0c;读写…

五周年活动周历!AutoGen解析·技术畅聊·3大城市工坊本周启动!

飞桨星河社区在成立的5年以来&#xff0c;已汇集660万AI开发者&#xff0c;覆盖深度学习初学者、在职开发者、企业开发者、高校教师、创业者等&#xff0c;已成为AI领域最具影响力的社区之一&#xff0c;无论是AI爱好者还是AI开发者&#xff0c;都能在这里探索AI的无限可能。 飞…

计算机毕业设计|基于SpringBoot+MyBatis框架的仿天猫商城购物系统设计与实现

计算机毕业设计|基于SpringBootMyBatis框架的仿天猫商城购物系统设计与实现 迷你仿天猫商城是一个基于SSM框架的综合性B2C电商平台&#xff0c;需求设计主要参考天猫商城的购物流程&#xff1a;用户从注册开始&#xff0c;到完成登录&#xff0c;浏览商品&#xff0c;加入购物…

linux查看emmc分区信息(10种方法 )

目录 ## 1 emmc ## 2 uboot查看 ## 3 kernel查看 方法1 方法2 方法3 方法4 方法5 方法6 方法7 方法8 方法9 方法10 ## 1 emmc 我们要说的是&#xff0c;User Data Partition中的再分区 可简化为 ## 2 uboot查看 u-boot> mmc partPartition Map for MMC device…

C++值常用集合算法

C值常用集合算法 set_intersection #include<iostream> using namespace std; #include<vector> #include<numeric> #include<algorithm>class MyPrint { public:void operator()(int val){cout << val<<" ";} };void test() {v…

nodejs+vue+mysql皮具行李箱包包网上商城购物网站

本系统可分为两个大的模块&#xff0c;即前台用户模块和后台管理员模块&#xff0c;前台用户模块用户可以进行浏览查询皮具的各种信息&#xff0c;添加购物车&#xff0c;下订单等各种操作。后台管理员模块管理员可以进行皮具的处理&#xff0c;还有处理订单&#xff0c;皮具分…

人工智能学习2(python数据清洗)

编译工具&#xff1a;PyCharm 一.数据清洗 转化数据类型、处理重复数据、处理缺失数据 import pandas as pddf pd.read_csv("/data.csv") df.sample(10) # 用于随机获取数据并返回结果 df.head(10) # 查看前十条数据 df.tail(10) # 查看后十条数据 df.shape …

通过亚马逊云科技云存储服务探索云原生应用的威力

文章作者&#xff1a;Libai 欢迎来到我们关于“使用亚马逊云科技云存储服务构建云原生应用”的文章的第一部分。在本文中&#xff0c;我们将深入探讨云原生应用的世界&#xff0c;并探索亚马逊云科技云存储服务在构建和扩展这些应用中的关键作用。 亚马逊云科技开发者社区为开发…

机器学习的复习笔记4-岭回归与多项式回归

一、岭回归 在简单的线性回归中&#xff0c;一味追求平方误差最小化&#xff0c;R2值尽可能大&#xff0c;可能会受到噪声的严重干扰。噪声&#xff0c;即偶发的错误的值。 如图&#xff0c;若为满足所有点的拟合&#xff08;虚线&#xff09;&#xff0c;表面上看R2值小&…

深度学习回顾:七种网络

一、说明 本文 揭开CNN、Seq2Seq、Faster R-CNN 和 PPO &#xff0c;以及transformer和humg-face— 编码和创新之路。对于此类编程的短小示例&#xff0c;用于对照观察&#xff0c;或做学习实验。 二、CNN网络示例 2.1 CNN用mnist数据集 CNN 专为图像处理而设计&#xff0c;包…

力扣 hot100 最小覆盖子串 滑动窗口 字符计数

&#x1f468;‍&#x1f3eb; 题目地址 &#x1f37b; AC code class Solution {public String minWindow(String s, String t){int n s.length();int m t.length();if (n < m)return "";char[] tt t.toCharArray();int[] cnt new int[128];// 字符计数数组…

【Proteus仿真】【Arduino单片机】蔬菜大棚温湿度控制系统设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、DHT11温湿度传感器、按键、继电器、蜂鸣器、加热、水泵电机等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD160…