如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧(二)
已于2014.6.6更新,地址:傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 与时间无关的故事 - 知乎专栏
另外,想跟很多人抱歉,因为评论太多了,时间有限,不能给每个人回复,还望大家谅解。但是很感谢一直在评论区帮忙解答读者问题的各位,就不一一@了。
这里郑重感谢大连海事大学的吴楠老师,一位学识渊博、备课缜密、但授课不拘一格的年轻教师!当时大三他教我通信原理,但是他先用了4结课帮我们复习了很多信号与系统的基本概念,那个用乐谱代表频域的概念就是他讲的,一下子让我对这门课豁然开朗,才有了今天的这篇文章。
————————————今天的定场诗有点长——————————
下面继续开始我们无节操的旅程:
上次的关键词是:从侧面看。这次的关键词是:从下面看。
在第二课最开始,我想先回答很多人的一个问题:傅里叶分析究竟是干什么用的?这段相对比较枯燥,已经知道了的同学可以直接跳到下一个分割线。
先说一个最直接的用途。无论听广播还是看电视,我们一定对一个词不陌生——频道。频道频道,就是频率的通道,不同的频道就是将不同的频率作为一个通道来进行信息传输。下面大家尝试一件事:
先在纸上画一个sin(x),不一定标准,意思差不多就行。不是很难吧。
好,接下去画一个sin(3x)+sin(5x)的图形。
别说标准不标准了,曲线什么时候上升什么时候下降你都不一定画的对吧?
好,画不出来不要紧,我把sin(3x)+sin(5x)的曲线给你,但是前提是你不知道这个曲线的方程式,现在需要你把sin(5x)给我从图里拿出去,看看剩下的是什么。这基本是不可能做到的。
但是在频域呢?则简单的很,无非就是几条竖线而已。
所以很多在时域看似不可能做到的数学操作,在频域相反很容易。这就是需要傅里叶变换的地方。尤其是从某条曲线中去除一些特定的频率成分,这在工程上称为滤波,是信号处理最重要的概念之一,只有在频域才能轻松的做到。
再说一个更重要,但是稍微复杂一点的用途——求解微分方程。(这段有点难度,看不懂的可以直接跳过这段)微分方程的重要性不用我过多介绍了。各行各业都用的到。但是求解微分方程却是一件相当麻烦的事情。因为除了要计算加减乘除,还要计算微分积分。而傅里叶变换则可以让微分和积分在频域中变为乘法和除法,大学数学瞬间变小学算术有没有。
傅里叶分析当然还有其他更重要的用途,我们随着讲随着提。
————————————————————————————————————
下面我们继续说相位谱:
通过时域到频域的变换,我们得到了一个从侧面看的频谱,但是这个频谱并没有包含时域中全部的信息。因为频谱只代表每一个对应的正弦波的振幅是多少,而没有提到相位。基础的正弦波A.sin(wt+θ)中,振幅,频率,相位缺一不可,不同相位决定了波的位置,所以对于频域分析,仅仅有频谱(振幅谱)是不够的,我们还需要一个相位谱。那么这个相位谱在哪呢?我们看下图,这次为了避免图片太混论,我们用7个波叠加的图。
鉴于正弦波是周期的,我们需要设定一个用来标记正弦波位置的东西。在图中就是那些小红点。小红点是距离频率轴最近的波峰,而这个波峰所处的位置离频率轴有多远呢?为了看的更清楚,我们将红色的点投影到下平面,投影点我们用粉色点来表示。当然,这些粉色的点只标注了波峰距离频率轴的距离,并不是相位。
在完整的立体图中,我们将投影得到的时间差依次除以所在频率的周期,就得到了最下面的相位谱。所以,频谱是从侧面看,相位谱是从下面看。下次偷看女生裙底被发现的话,可以告诉她:“对不起,我只是想看看你的相位谱。”
注意到,相位谱中的相位除了0,就是Pi。因为cos(t+Pi)=-cos(t),所以实际上相位为Pi的波只是上下翻转了而已。对于周期方波的傅里叶级数,这样的相位谱已经是很简单的了。另外值得注意的是,由于cos(t+2Pi)=cos(t),所以相位差是周期的,pi和3pi,5pi,7pi都是相同的相位。人为定义相位谱的值域为(-pi,pi],所以图中的相位差均为Pi。
最后来一张大集合:
好了,你是不是觉得我们已经讲完傅里叶级数了?
抱歉让你失望了,以上我们讲解的只是傅里叶级数的三角函数形式。接下去才是最究极的傅里叶级数——指数形式傅里叶级数。但是为了能更好的理解指数形式的傅里叶级数,我们还需要一个工具来帮忙——欧拉公式。
欧拉公式,以及指数形式的傅里叶级数,我们下一讲再讲。谢谢大家(鞠躬)。
—————————————————————————————————————
今天讲的部分不多,但是我希望大家能够理解,我也有自己的生活,留给知乎的时间并不多,但是我很喜欢在知乎与别人交流的过程。上一次的那些文章大家知道我当时写了多久么?四天,每天写6小时那种,而且当时还是在假期。主要是图太不好做了,有人问到作图的方法,其实就是简单的MATLAB+PHOTOSHOP,作图的确是很费时间,但是我相信做出这些图是值得的,因为我相信图一定比文字更好理解。也希望可以将这些自己学习时的感受和经验更完整的分享给需要的人。
所以请大家稍微有点耐心,我会认真把这个故事讲完。也谢谢大家的理解和支持。
————————————————————————————————————
最后推荐一下@张苏的答案:如何学会傅里叶变换?
不少同学希望谈谈学习方法,我本身也是学渣(考研数学80/150),没有资格谈啊。不过我最近修了
RICE大学在edx上的相关课程“ ELEC301x Discrete Time Signals and Systems”,真的非常不错。初步总结, 有三大优点:
1.注重实践,有大量的matlab相关的案例内容;
2.重离散、轻连续,这样创新的思路抛弃了直接研究连续带来的大量的理论负担,同时也非常实用;当然,如果要做研究,后面还是要重新认真学习连续的,这可能需要借助mit的课程了。
3.作业题有深度、有启发,是很好的训练。
推荐下学习教材(鉴于大家批评我说这些书不好买,这里给出购买链接),
1.新手入门:
前驱知识,微积分、线性代数及格
优秀教材:
(1) Understanding Digital Signal Processing (3rd Edition): Richard G. Lyons: 9780137027415: Amazon.com: Books
评价相当之高,注重理解,对数学要求不高
购买链接: 《国外高校电子信息类优秀教材经:数字信号处理(英文影印版)》([美]莱昂斯)【摘要 书评 试读】
(2) Digital Signal Processing Using MATLAB: Vinay K. Ingle, John G. Proakis: 9781111427375: Amazon.com: Books
大量引入matlab,注重动手实践增加认知,好像也是首个创新的直接讲解离散的教材。
公开课:
RiceX: ELEC301x Discrete Time Signals and Systems
也是直接进入离散主题、注重理解、注重matlab操作的好课程。
购买链接: 《数字信号处理:应用MATLAB》 Vinay K.ingle, John G.Proakis【摘要 书评 试读】图书
2.进阶:
我还在学,学完推荐
谈谈学习成本:
经济成本:我推荐的书国内亚马逊都有正版,加起来二百出头,公开课需要v~P·N工具,一年二百左右。新东方一个破辅导班3000+,一部红米手机799.
时间成本:no pain, no gain。
最后恬不知耻的秀秀rice给我的课程成绩,大家一定会做的更好。
下载链接
Dropbox - ELEC301x Discrete Time Signals and Systems.pdf
截图:
————---------————我正在和论文搏斗 先给个简单答案吧——————————
对工科生来讲,傅里叶变换可以从三个层次来看:
傅里叶变换(Fourier Transform,FT)-> 离散傅里叶变换(Discrete Fourier Transform, DFT)-> 快速傅里叶变换(Fast Fourier Transform)
FT是理论基础,以FT为理论基础,可以完成从频率估计到求解微分方程各式各样的问题;
DFT是指信号被采样之后你会得到 离散(如你需要处理的音频信号被采样)而非 连续的信号,这个时候就需要DFT来告诉你怎样处理并告知你一些离散情况下的特殊问题;
FFT是一种计算DFT的算法,计算复杂度很低也就是执行起来很快的意思。
举个例子吧:有人通过在小黑屋按钢琴的一个键不松会产生一个单音信号给你传递情报,
信号的频率 取决于他所按的键。你看不见他,却希望获知信号的频率。怎么办?
1.FT的理论就会告诉你可以通过傅里叶变化获知这个频率。
但是这个信号飘荡在空中,你需要先通过采样得到一个离散信号
( 是采样频率,香农和奈奎斯特告诉我们,需要 )。
2.得到离散信号后如何计算 ,DFT就会告诉你怎么办;
3.你嫌DFT太慢了怎么办,FFT就粉墨登场了。
从你计算机的专业背景和希望做音频降噪的需求来看。你需要掌握的是DFT和FFT我建议
1. 找本高等数学的书,花半个小时看看什么是FT;
2. 强烈推荐《Understanding Digital Signal Processing》,一本只需高中数学,且英文比中文都易懂的书,在 http://amazon.com上有很高的评价( Understanding Digital Signal Processing (3rd Edition): Richard G. Lyons: 9780137027415: Amazon.com: Books),国内有卖,建议认真看第1、2、3章。你会对离散傅里叶变换有很深入的了解;
3. 实践出真知,看完什么理论,立马用matlab试试看,会理解的很透彻;
4. project可以沿着matlab->VC->DSP->FPGA的道路前进。
至于你说的语音降噪问题,需要首先用DFT分析信号与噪声的频率特性, 降噪需要设计滤波器完成。变化与滤波是信号处理的两大主题,看看《Understanding Digital Signal Processing》的后面几章就明白了。
语音降噪问题已经发展成为一个成熟的子学科,要做进一步研究就需要你自己努力了。