转载:不懂数学也能明白傅里叶分析和感受数学之美

这篇文章的核心思想就是:要让读者在不看任何数学公式的情况下理解傅里叶分析。
傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多大一新生上来就懵圈并从此对它深恶痛绝。老实说,这么有意思的东西居然成了大学里的杀手课程,不得不归咎于编教材的人实在是太严肃了。(您把教材写得好玩一点会死吗?会死吗?)所以我一直想写一个有意思的文章来解释傅里叶分析,有可能的话高中生都能看懂的那种。所以,不管读到这里的您从事何种工作,我保证您都能看懂,并且一定将体会到通过傅里叶分析看到世界另一个样子时的快感。至于对于已经有一定基础的朋友,也希望不要看到会的地方就急忙往后翻,仔细读一定会有新的发现。
————以上是定场诗————
下面进入正题:抱歉,还是要啰嗦一句:其实学习本来就不是易事,我写这篇文章的初衷也是希望大家学习起来更加轻松,充满乐趣。但是千万!千万不要把这篇文章收藏起来,或是存下地址,心里想着:以后有时间再看。这样的例子太多了,也许几年后你都没有再打开这个页面。无论如何,耐下心,读下去。这篇文章要比读课本要轻松、开心得多……
一、嘛叫频域
从我们出生,我们看到的世界都以时间贯穿,股票的走势、人的身高、汽车的轨迹都会随着时间发生改变。这种以时间作为参照来观察动态世界的方法我们称其为时域分析。而我们也想当然的认为,世间万物都在随着时间不停的改变,并且永远不会静止下来。但如果我告诉你,用另一种方法来观察世界的话,你会发现世界是永恒不变的,你会不会觉得我疯了?我没有疯,这个静止的世界就叫做频域。先举一个公式上并非很恰当,但意义上再贴切不过的例子:
在你的理解中,一段音乐是什么呢? 音频 这是我们对音乐最普遍的理解,一个随着时间变化的震动。但我相信对于乐器小能手们来说,音乐更直观的理解是这样的:

好的!下课,同学们再见。
是的,其实这一段写到这里已经可以结束了。上图是音乐在时域的样子,而下图则是音乐在频域的样子。所以频域这一概念对大家都从不陌生,只是从来没意识到而已。
现在我们可以回过头来重新看看一开始那句痴人说梦般的话:世界是永恒的。
将以上两图简化:
时域: 时域 频域: 频域 在时域,我们观察到钢琴的琴弦一会上一会下的摆动,就如同一支股票的走势;而在频域,只有那一个永恒的音符。
所(前方高能!~~~~~~~~~~~非战斗人员退散~~~~~~~)
以(~~~~~~~~~~~~~~~前方高能预警~~~~~~~~~~~~~~前方高能~~~~~~~~)
你眼中看似落叶纷飞变化无常的世界,实际只是躺在上帝怀中一份早已谱好的乐章。(众人:鸡汤滚出知乎!)
抱歉,这不是一句鸡汤文,而是黑板上确凿的公式:傅里叶同学告诉我们,任何周期函数,都可以看作是不同振幅,不同相位正弦波的叠加。在第一个例子里我们可以理解为,利用对不同琴键不同力度,不同时间点的敲击,可以组合出任何一首乐曲。
而贯穿时域与频域的方法之一,就是传中说的傅里叶分析。傅里叶分析可分为傅里叶级数(Fourier Serie)和傅里叶变换(Fourier Transformation),我们从简单的开始谈起。
二、傅里叶级数(Fourier Series)
还是举个栗子并且有图有真相才好理解。如果我说我能用前面说的正弦曲线波叠加出一个带 90 度角的矩形波来,你会相信吗?你不会,就像当年的我一样。但是看看下图: 矩形波 第一幅图是一个郁闷的正弦波 cos(x)
第二幅图是 2 个卖萌的正弦波的叠加 cos (x) +a.cos (3x)
第三幅图是 4 个发春的正弦波的叠加
第四幅图是 10 个便秘的正弦波的叠加
随着正弦波数量逐渐的增长,他们最终会叠加成一个标准的矩形,大家从中体会到了什么道理?(只要努力,弯的都能掰直!)
随着叠加的递增,所有正弦波中上升的部分逐渐让原本缓慢增加的曲线不断变陡,而所有正弦波中下降的部分又抵消了上升到最高处时继续上升的部分使其变为水平线。一个矩形就这么叠加而成了。但是要多少个正弦波叠加起来才能形成一个标准 90 度角的矩形波呢?不幸的告诉大家,答案是无穷多个。(上帝:我能让你们猜着我?)
不仅仅是矩形,你能想到的任何波形都是可以如此方法用正弦波叠加起来的。这是没有接触过傅里叶分析的人在直觉上的第一个难点,但是一旦接受了这样的设定,游戏就开始有意思起来了。
还是上图的正弦波累加成矩形波,我们换一个角度来看看: 时频域 在这几幅图中,最前面黑色的线就是所有正弦波叠加而成的总和,也就是越来越接近矩形波的那个图形。而后面依不同颜色排列而成的正弦波就是组合为矩形波的各个分量。这些正弦波按照频率从低到高从前向后排列开来,而每一个波的振幅都是不同的。一定有细心的读者发现了,每两个正弦波之间都还有一条直线,那并不是分割线,而是振幅为 0 的正弦波!也就是说,为了组成特殊的曲线,有些正弦波成分是不需要的。
这里,不同频率的正弦波我们成为频率分量。
好了,关键的地方来了!!
如果我们把第一个频率最低的频率分量看作“1”,我们就有了构建频域的最基本单元。
对于我们最常见的有理数轴,数字“1”就是有理数轴的基本单元。(好吧,数学称法为——基。在那个年代,这个字还没有其他奇怪的解释,后面还有正交基这样的词汇我会说吗?)时域的基本单元就是“1 秒”,如果我们将一个角频率为的正弦波 cos(t)看作基础,那么频域的基本单元就是。有了“1”,还要有“0”才能构成世界,那么频域的“0”是什么呢?cos(0t)就是一个周期无限长的正弦波,也就是一条直线!所以在频域,0 频率也被称为直流分量,在傅里叶级数的叠加中,它仅仅影响全部波形相对于数轴整体向上或是向下而不改变波的形状。接下来,让我们回到初中,回忆一下已经死去的八戒,啊不,已经死去的老师是怎么定义正弦波的吧。

正弦波

正弦波就是一个圆周运动在一条直线上的投影。所以频域的基本单元也可以理解为一个始终在旋转的圆

矩形波

三角波

以及这里:点出去的朋友不要被 wiki 拐跑了,wiki 写的哪有这里的文章这么没节操是不是。
介绍完了频域的基本组成单元,我们就可以看一看一个矩形波,在频域里的另一个模样了:

频谱

这是什么奇怪的东西?
这就是矩形波在频域的样子,是不是完全认不出来了?教科书一般就给到这里然后留给了读者无穷的遐想,以及无穷的吐槽,其实教科书只要补一张图就足够了:频域图像,也就是俗称的频谱,就是——

时频域

再清楚一点:

时频域

可以发现,在频谱中,偶数项的振幅都是0,也就对应了图中的彩色直线。振幅为 0 的正弦波。
动图请戳:

动图

老实说,在我学傅里叶变换时,维基的这个图还没有出现,那时我就想到了这种表达方法,而且,后面还会加入维基没有表示出来的另一个谱——相位谱。
但是在讲相位谱之前,我们先回顾一下刚刚的这个例子究竟意味着什么。记得前面说过的那句“世界是静止的”吗?估计好多人对这句话都已经吐槽半天了。想象一下,世界上每一个看似混乱的表象,实际都是一条时间轴上不规则的曲线,但实际这些曲线都是由这些无穷无尽的正弦波组成。我们看似不规律的事情反而是规律的正弦波在时域上的投影,而正弦波又是一个旋转的圆在直线上的投影。那么你的脑海中会产生一个什么画面呢?
我们眼中的世界就像皮影戏的大幕布,幕布的后面有无数的齿轮,大齿轮带动小齿轮,小齿轮再带动更小的。在最外面的小齿轮上有一个小人——那就是我们自己。我们只看到这个小人毫无规律的在幕布前表演,却无法预测他下一步会去哪。而幕布后面的齿轮却永远一直那样不停的旋转,永不停歇。这样说来有些宿命论的感觉。说实话,这种对人生的描绘是我一个朋友在我们都是高中生的时候感叹的,当时想想似懂非懂,直到有一天我学到了傅里叶级数……

山师物电学院的三个系和各自的课程体系

我是10级山师物电学院的,当时我们那一级有各两个系,这几天发现有人问:“山师物电学院三个系有什么区别”,才发现自己已经老了~ 原先,物电学院有两个系:物理系和电子系。物理系有师范类专业,包括普通物理和应用物理;电子系都是理工类专业,原先有电科和电子专业,后来,我们电信专业从原传播学院(后改名传媒学院)合并到物电学院的电子系。
11级电信专业是最后一批,后与电子专业合并。(本来电子和电信的课程体系就几乎一模一样的)。12年,物电学院新设光电系,并开始招生。 物理系和光电系的课程体系我不是很清楚,就光说说电子系的课程体系吧。
除了英语、数据、政治三大基本课程,专业课的体系如下:
硬件类:电路原理、模电、数电、电路制图、控制芯片类。控制芯片类又分为:微机原理(8086)、单片机(C51/C52)、嵌入式(ARM系列)、可编程芯片(FPGA/CPLD)等。 软件类:C语言、VB、算法与数据结构、汇编语言(在微机原理和单片机的课程中)、C#、各种芯片的仿真软件应用、VHDL(FPGA/CPLD的课程中)MAYLAB(在数字信号和通信原理的课程中)等。 通信类:信号与线性系统、数字信号处理、通信原理等。主要是应用数学类,公式原理居多,学了三学期、吐了三学期~ 以上就是山师物电学院的三个系的介绍和电子系课程体系的简介,希望能对大家有所帮助。

C语言导学

作为一个“过来人”,我选择软件方向,个人认为最应该感谢的应该是山师大物电学院的宋蓬勃老师了!进入大学前,本人对电脑一窍不通,虽说有计算机的考试,那也是老师已经打开系统,只要用鼠标选中选项就可以了。三件事最让我难忘了:其一,一次信息技术考试,要给文件改名,折腾半天不会,偷偷问下监场老师,老师说,点一下,再点一下就可以改了;其二,本人高中期间从未进过网吧,入大学前,唯一一次去网吧,还是在表弟的带领下去查成绩;其三,本人的QQ是高考后委托同学申请的,当时感觉那同学真厉害! 就这么一个连“菜鸟”等级都达不到的“电脑盲”,后来选择了“与猿共舞”(业内人士都懂得),不得不感谢各位老师了!好了,咱就不叙旧了,谈谈C语言在专业应用中的重要性和学习方法。 C语言在编程语言中被定位为“中级语言”——为什么称作“中级语言”,原因很简单,因为它比“低级语言”高级,又比“高级语言”低级——看起来是废话,其实就是废话,不过还是有点道理的。C语言之下有机器语言(0/1代码串)和汇编语言,C语言与他们相比,高级在了是以函数为单位面向过程编程,好处是:可读性好;C语言又在C++javaC#等以类为单位的面向对象编程语言之下,面向对象编程的好处是符合现实世界和人的思维方式。虽说C语言要低级些,但每个类的内部还是由C的核心(函数与属性)所构成。所以C语言是个承上启下的语言,学习好C语言,以后学习汇编语言会写的更结构化,学习javaC#也会保持逻辑的清晰和更容易理解底层的方法实现。 现在想想,电信专业把C语言课程安排在大一上学期还是挺明智的。C语言编程基础和算法与数据结构(C语言实现)两门课构成了C语言的课程体系。 第一学期,学习C语言基础。包括:数据类型、表达式、语法结构、数组、字符串、函数、排序算法、常量变量、指针、结构体、文件操作、数据库操作等。一般老师会讲到文件操作,其中,数组、指针、函数、排序和结构体是学习的重点也是难点,当然也是考试重点了。就C语言的实用性而言,也无非是数组、指针、函数、结构体、文件操作和数据库操作,其他的虽说不是重点却也是渗透在这些应用的方方面面! 第三学期,我们将会迎来算法与数据结构。这是C语言的高级应用,要想学算法与数据结构,宋老师是这么说的:先用一个月把C语言那本书看懂。我记得我们那本算法与数据结构的书例子用的是类C语言写的,不是C语言也不是C++语言,只是一个大体的描绘。要想弄个能运行的程序,还得自己动手编写调试!老师授课也是完全根据PPT,与课本内容完全不同。这门课有几个大实验,最简单的一个实验是文件操作,难度可想而知了。所以我的建议是,上课时跟着老师的思路走,尽量记些代码片段,不然,连个葫芦都没有,怎么画瓢啊!! 情况就是这个情况,山师的课程大都是学起来难,考的内容比较简单,不过每年、每门主课都会有挂科的!

我的院系和专业

山东师范大学物电学院(全称是“物理与电子科学学院”)是山师的“大院”之一,包含物理系和电子系两个系。物理系有师范类专业,电子系为非师范的理工类专业,设有电子信息专业、电子科学专业,后添设光电专业。
本人的专业是电子信息科学与技术专业(简称“电信”),原本属于传播学院,无奈遇到院系调整,我们就又回归到了“大物电”的怀抱——孩子没娘,说来话长,具体缘由此处省略。
电子系虽说分为多个专业,但课程体系大体相同:分为软件、硬件和通信三大部分。
硬件是电信专业的肉体,各种电路、各种芯片。有电路原理、模拟电路、数字电路等普通电路基础,还有8086(微机原理),51单片机和arm系列嵌入式等芯片的原理与应用,以及可编程芯片FPGA/CPLD等原理与应用。
软件是电信专业的灵魂,像8086、51单片机、arm系列嵌入式都是要用软件驱动的。没有软件,他们只是就成了摆设。当然,他们使用的是中低级语言,以汇编和C语言为主。当然学院还开设了其他语言的入门课程:VB、C#、数据库的SQL语言等。由于我倾向于软件方面,所以用通过自费培训和兼职学习了web相关的语言,这个网站就是在web的基础上建设起来的。Web相关的有html+js+css、java、Java web、J2EE、mysql/oracle/sql server三大主流数据库、php等。 继续阅读我的院系和专业