基于Manim针对FT教学过程的一种可行性设计
摘 要:傅里叶变换是信号频谱分析的重要工具,也是信号与系统课程中的核心概念与内容。由于其建立起了连续和离散、时域和频域之间完美的四对变换关系,也造成了其定义和形式上的冗杂。本文立足于课程中傅里叶变换的讲授方式基础上,给出了一种新的教学思路和理解方式。同时结合数学可视化引擎manim让信号与系统课程的概念讲解更加直观与美观,为信号与系统课程的3个MOST添砖加瓦。
关键词:信号与系统课程教学;傅里叶变换;manim数学引擎
正如奥本海姆教授所述,信号与系统课程具备着"most rewarding, exciting, and useful"的特点。而在教学过程中,怎样的教学设计才能让学生体会到这三个MOST的妙处,则是一个需要不断探索和反复实践的命题。
傅里叶变换作为信号分析和系统分析的重要手段和工具,笔者在学习过程伊始并不能全然理解。这源于其背后是一个庞大的系统概念,连接着时域和频域,连续和离散,如果没有直观而浅显的例子是难以一下子就接受这些庞杂的概念的。
傅里叶级数分解是傅里叶变换的数学基础,在时域上对信号进行分解,从学生的当前知识水平,由此引入是理所当然的。
既然从数学概念出发,就应当从数学理论入手。首先从正交函数集合理论切入,介绍了帕塞瓦尔定理。从而引入了三角形式和复指数形式的傅里叶级数分解(FS)的定义。同时辅以时域图像加以说明。
在时域分解的基础上直接引出频域相位谱和幅度谱的概念,并为后面典型信号的FS作铺垫。辅以旋转芭蕾舞演员作为实例加强解释力。
后面就收敛条件、对称、其他性质进行了介绍和讨论,本文专注于教学过程设计,在此不做赘述。
None在引入傅里叶级数分解后,当前的教学设计直接就以数学公式定义的方式给出了傅里叶变换和傅里叶反变换的形式,并跟上严格的数学推导与证明过程。
之后便用时域频域图像的形式给出了典型信号的傅里叶变换,同时利用傅里叶变换的性质推到了其中一些信号的傅里叶变换数学表达式。
由于FT是一个很庞大的概念,无法一时间覆盖到方方面面的细枝末节,在过程中,卓老师也设计了很多思考题提问环节,涉及到FT中一些本质问题,如信号频谱衰减规律与信号光滑性的关系等,均旨在更好的让学生理解FT这一概念。
None客观来讲,要在有限的课时内全然尽然地介绍FT这一概念是具有挑战性的。其沟通时域频域,连续离散的系统性给教师为学生设计平滑的学习曲线带来了难度。坦白来讲,我在第一遍听这部分内容的时候确实是没有听懂的。过于抽象的概念和纷繁复杂的概念以及各种概念之间捉摸不透但又千丝万缕的联系是让我疑惑与不解的地方。
现有的教学设计过程确实存在着一些问题。例如在引入FS时,课件中给出了频谱概念和对应的单边双边图像,但是这是在时域图像之后强行给出的,并没有给出直观的解释和过渡的环节,这会让学生难以第一时间消化。又如引入FT的时候,直接从FS这一抽象的数学理论给出了FT的数学定义,让整个教授过程较长时间停留在抽象的数学层面,没有及时的通过例子等方式进行直观反馈,让学生在陌生概念面前及时地与以往的概念建立关联,从而加深理解。
但是随着课程推进,我理解了这部分内容后回顾第一次学习的过程和体验,发现我不能尽然理解的原因在于没有一个系统而又直观的例子来帮助我走进FT解释的世界中,这也就是本文的初衷,提出一种新的教学设计来教授FT这部分的知识。
因此,从现有教学设计的几点不足出发,提出了如下的课程设计。一言以蔽之,这种全新的教学过程,建立在一个系统而直观的例子之上,通过数学可视化的方法贯穿始终来将FS和FT的概念完整的引入。事实上说是新的设计,不如说是改进设计。可以将本文的这种设计融入到当前的教学环节中,替换掉冗杂的数学图像和实际例子阐述,而定义、性质等部分无需作改动。整体看来是抽象与具象两条线并行,让学生始终有一个扶手,学习来当然事半功倍。
**2. 一种新的教学过程设计****2.1 问题提出(Ask Question)**利用音乐校音过程中的一个现实问题来引入FT。标准音A,其频率为440Hz(亦或442Hz),而另一个音D其频率为294Hz。这里的频率利用传感器测量音源周围气压变化即可得到同频率的气压随时间变化正弦波。如果这两种声音叠加到一起,会形成无规律的复杂信号,如何将两种频率的信号从混合后的信号中分解出来是一个实际应用中常遇到的问题。
A440与D294两种音频混合
为了将问题简单化,以便于分析。设想如上的两个音变成3Hz和2Hz的两路信号,时域混叠后波形如下:
3Hz和2Hz时域信号
2.2 原理讲解(Principle Introduction)我们需要一种数学机器,其能分辨出不同频率的信号。
试想高中时期老师引入正弦波概念的时候,是否是利用周转圆这一三维视角进行描述?
空间中有轴向线速度和向心的角速度的周转圆
侧面看就像正弦波
从轴向看就是圆
而任意波形都可以通过周转圆的概念在三维空间予以实现,只不过是周转圆个数的多少决定着不同的精确度罢了。而这也就是傅里叶级数分解最直观和本质的解释。
用周转圆概念实现任意波形
本着这种化线性向前的时间尺度为周期的旋转尺度的思想,我们可以也可以利用一个平面上的圆来解释傅里叶变换的要义。
关键之处在于想象一个在复平面内转动的向量,它在任意时刻对应的模长等于时域波形对应的幅值(即离原点距离对应了在时域下距离x轴的高度。这个采样向量的旋转频率对应着在时域内移动速度。如此做了变换后,就等价于将时域波形缠绕在复平面的圆上。不同的采样频率和信号频率之间的关系会生成不同的图形。
3Hz信号对应不同采样频率的缠绕波形
如果我们把复平面上的"漂亮"的波形看作一卷铁丝,则其拥有一个质心。我们可以发现随着采样频率(也就是缠绕频率)逐渐变大,质心会发生微小的位置变化,但大多在原点附近。当采样频率等于信号频率时(即图中的3Hz),可以发现复平面上的波形变得十分简单,而其质心也发生了极大的偏移,此时一定是一种特殊的情况留待后面作解释。如果我们将上述质心的x坐标与采样频率之间的关系绘制成x-f图像的话,就可以发现在信号频率值附近会产生一个峰值,如下所示:
缠绕波形"质心"x坐标随采样频率变化
用这样的方法就可以制造出我们前面所需要的"选频机器"。只需要得到采样频率和其质心的关系,找到不同的尖峰值对应的频率就可以知道复杂信号中到底有多少种频率成分了。用上述方法来分析前文2+3Hz的混叠声音就可以产生如下效果:
可见分离出了两个频率成分
2.3 问题分析(Problem Analysis)而事实上真正的傅里叶变换与上述模型中的质心的横坐标还有这一点点差异。由于我们借助了复平面便于表达旋转概念的优势,前面所述的旋转的采样矢量就可以表达为:e^(-2πift)
如果时域信号为f(t),则上面的"选频机器"中按照可变频率将目标信号缠绕起来的思想就可以表示为:
因此利用已有的大学物理知识,沿用前面将波形看作铁丝的思想,利用质量分布定理将铁丝上一个个无限小的点的质量积分起来在进行加权平均就可以得到缠绕后的波形质心位置:
事实上上面这个表达式距离真正的傅里叶变换仅仅差别在前面的常数系数。可以理解为为了让不同频率成分体现的权重尽可能有差别,傅里叶变换对不同频率成分不做平均处理,而把他们在时间上的贡献积分后直接进行考虑。如果一个频率成分作用时间长,那么它在复平面内对应的模长就会更长。因此得出了傅里叶变换的如下表达式:
而在实际应用中则是将积分区间拓展为无限,可以看作考虑每一个时间区间上相应频率的贡献,看看他在时间无穷的条件下极限是什么,由此得到了傅里叶变换的庐山真面目:
2.4 实验展示(Laboratory Demonstration)大部分的讲解demo都融入到了上面三节,配合讲解过程步步为营地配套使用,在此不做赘述。
如果是针对微MOOC的设计可以将这部分讲解结合我所使用的manim数学可视化引擎直接制作成视频片段,无需额外MOOC录制。值得一提的是上面这些demo均Powered By Manim数学引擎,具体事项我会在下一节详细阐述。
2.5 延伸讨论(Extension Discussion)利用傅里叶级数分解的可视化小程序可以辅助学生理解吉布斯现象。如下所示将一个时域信号通过傅里叶级数分解为基波和各次谐波的叠加,可以通过调节谐波次数来调节拟合效果,从中可以清楚的看出用有限项级数去逼近原信号时会产生间断点的过冲现象,而对应着下面连续的各次谐波在这一点的取值就可以让学生更好的理解吉布斯现象的产生原因。
用不同项数的傅里叶级数拟合方波观察吉布斯现象(最后一个模拟无限项的情况 消除Gibbs)
本着提升工科素养的初衷,我认为通过这个知识点的讲授向学生介绍Manim数学可视化引擎是一件有百利无一害的事情。Manim是一个开源的数学可视化引擎,被用于制作各种数学知识解析和工程项目展示的视频。其高可扩展性、简洁而又有吸引力的渲染效果,可以将许多复杂的数学概念和难以理解的重点直观的展示出来。
我为课程制作了一个展示demo,将课程名称与复平面到z平面变换关系这一知识点结合在一起,能让课程的吸引力和可解释性大增。这部分的源码我也放到附录中供参考。这段视频我放在了论文同目录下一并提交。同时上面的一些截图实际上都是从引擎渲染的视频中来。通过自定义的编程可以生成对应的动态讲解视频,但由于数据量过大不便于上传,在此就不一并上交了。强烈安利卓老师使用这一引擎制作MOOC,不仅简单方便而且讲解效果会很好。
复平面到z平面变换与课程图标
本教学设计适用于傅里叶变换概念引入与浅析,而其后的性质和一些思考问题我认为可以按照卓老师现在的设计进行。本文旨在让学生有一个直观而又通俗的理解,不让学生对傅里叶变换产生畏难情绪,利用过往知识和生动的教学演示来建立起一个容易理解的知识体系,这也会让后面FT性质、典型信号FT变换等等庞杂的知识都能遵循这一个模型进行解释和分析,达到融汇贯通的效果。
- 结语从周转圆出发,引出旋转采样矢量的概念,并依托实际中的声音信号分解的例子来套用这一个模型,从而推导出傅里叶变换的相关知识,完成了傅里叶变换知识的引入和浅析。
由于时间紧迫,这个教学设计在较多细节上没有反复推敲。如果卓老师有相关的需求,我可以利用Manim引擎帮助实现这一部分教学设计的MOOC视频,届时可以联系我。
最后感谢卓老师这学期在信号与系统课程上的辛勤付出,也祝SS课程在今后的日子里能够More Rewarding,More Exciting & More Useful!
陈昭熹 2017011552
chen-zx17@mails.tsinghua.edu.cn
(清华大学 自动化系,北京 100084)
相关文章
- Keil5创建基于RTX的STM32工程(转载+自己的体会)
- AI视觉组基于ESP32的裁判系统第一版本设计要求
- 基于UNet+网络进行细胞图像识别与分割
- 【FPGA数控】基于FPGA的小型步进电机数控装置的设计与实现
- 基于FPGA的分形编码器verilog设计——详细版
- 基于FPGA的高精度DDS设计和测试
- 基于 97整数小数变换的图像压缩算法的FPGA实现,verilog编程(6800+字)
- 【MATLAB教程案例32】基于matlab的交通标志检测分割算法的仿真——形态学处理,膨胀,腐蚀,形状检测,颜色模型,小波滤波等知识的综合应用
- 【FPGA教程案例14】基于vivado核的FIR滤波器设计与实现
- 基于Δ-Σ模数转换器的梳状滤波器的设计与matlab仿真
- 基于DSP的真空断路器机械特性测试系统硬件设计
- 基于matlab的MIMO信道容量仿真
- 基于FPGA的RS232异步串行口IP核设计
- 基于SQLite,在Pandas DataFrames数据集中执行SQL操作
- 基于Python 实现直线段生成算法和圆弧生成算法【100010592】
- 基于QT(C++)实现房贷计算器【100010502】
- 基于Go语言的 Web 平台阅读 APP 设计与实现【100010482】
- 基于Python(Django)+MySQL实现(Web)大学生信用评价系统分析与设计【100010400】
- 基于单片机的六足机器人控制系统设计【100010379】
- 基于C#开发(WinForm)排队叫号系统【100010339】
- 二、Core授权-2 之.net core 基于Identity 授权
- 【毕业设计_课程设计】基于最近邻用户的协同过滤算法的混合音乐推荐系统
- 【毕业设计/课程设计】基于Android的天气助手设计与实现 【超级详细】
- 微信小程序实训|基于云数据库的语文听写工具
- 基于word2016的常用论文格式设置(总结版)
- 怎样更好的设计你的REST API之基于REST架构的Web Service设计及REST框架实现