如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧

简介: 如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧(二)Heinrich · 15 天前已于2014.6.6更新,地址:傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 与时间无关的故事 - 知乎专栏上一篇文章发出来之后,为了掐死我,大家真是很下工夫啊,有拿给姐姐看的,有拿给妹妹看的,还有拿给女朋友看的,就是为了听到一句“完全看不懂啊”。

如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧(二)

已于2014.6.6更新,地址:傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 与时间无关的故事 - 知乎专栏

上一篇文章发出来之后,为了掐死我,大家真是很下工夫啊,有拿给姐姐看的,有拿给妹妹看的,还有拿给女朋友看的,就是为了听到一句“完全看不懂啊”。幸亏我留了个心眼,不然就真的像标题配图那样了。我的文章题目是,如果看了这篇文章你“还”不懂就过来掐死我,潜台词就是在你学了,但是没学明白的情况下看了还是不懂,才过来掐死我。

另外,想跟很多人抱歉,因为评论太多了,时间有限,不能给每个人回复,还望大家谅解。但是很感谢一直在评论区帮忙解答读者问题的各位,就不一一@了。

这里郑重感谢大连海事大学的吴楠老师,一位学识渊博、备课缜密、但授课不拘一格的年轻教师!当时大三他教我通信原理,但是他先用了4结课帮我们复习了很多信号与系统的基本概念,那个用乐谱代表频域的概念就是他讲的,一下子让我对这门课豁然开朗,才有了今天的这篇文章。

————————————今天的定场诗有点长——————————

下面继续开始我们无节操的旅程:

上次的关键词是:从侧面看。这次的关键词是:从下面看。

在第二课最开始,我想先回答很多人的一个问题:傅里叶分析究竟是干什么用的?这段相对比较枯燥,已经知道了的同学可以直接跳到下一个分割线。

先说一个最直接的用途。无论听广播还是看电视,我们一定对一个词不陌生——频道。频道频道,就是频率的通道,不同的频道就是将不同的频率作为一个通道来进行信息传输。下面大家尝试一件事:

先在纸上画一个sin(x),不一定标准,意思差不多就行。不是很难吧。

好,接下去画一个sin(3x)+sin(5x)的图形。

别说标准不标准了,曲线什么时候上升什么时候下降你都不一定画的对吧?

好,画不出来不要紧,我把sin(3x)+sin(5x)的曲线给你,但是前提是你不知道这个曲线的方程式,现在需要你把sin(5x)给我从图里拿出去,看看剩下的是什么。这基本是不可能做到的。

但是在频域呢?则简单的很,无非就是几条竖线而已。

所以很多在时域看似不可能做到的数学操作,在频域相反很容易。这就是需要傅里叶变换的地方。尤其是从某条曲线中去除一些特定的频率成分,这在工程上称为滤波,是信号处理最重要的概念之一,只有在频域才能轻松的做到。

再说一个更重要,但是稍微复杂一点的用途——求解微分方程。(这段有点难度,看不懂的可以直接跳过这段)微分方程的重要性不用我过多介绍了。各行各业都用的到。但是求解微分方程却是一件相当麻烦的事情。因为除了要计算加减乘除,还要计算微分积分。而傅里叶变换则可以让微分和积分在频域中变为乘法和除法,大学数学瞬间变小学算术有没有。

傅里叶分析当然还有其他更重要的用途,我们随着讲随着提。

————————————————————————————————————

下面我们继续说相位谱:

通过时域到频域的变换,我们得到了一个从侧面看的频谱,但是这个频谱并没有包含时域中全部的信息。因为频谱只代表每一个对应的正弦波的振幅是多少,而没有提到相位。基础的正弦波A.sin(wt+θ)中,振幅,频率,相位缺一不可,不同相位决定了波的位置,所以对于频域分析,仅仅有频谱(振幅谱)是不够的,我们还需要一个相位谱。那么这个相位谱在哪呢?我们看下图,这次为了避免图片太混论,我们用7个波叠加的图。

鉴于正弦波是周期的,我们需要设定一个用来标记正弦波位置的东西。在图中就是那些小红点。小红点是距离频率轴最近的波峰,而这个波峰所处的位置离频率轴有多远呢?为了看的更清楚,我们将红色的点投影到下平面,投影点我们用粉色点来表示。当然,这些粉色的点只标注了波峰距离频率轴的距离,并不是相位。

这里需要纠正一个概念:时间差并不是相位差。如果将全部周期看作2Pi或者360度的话,相位差则是时间差在一个周期中所占的比例。我们将时间差除周期再乘2Pi,就得到了相位差。

在完整的立体图中,我们将投影得到的时间差依次除以所在频率的周期,就得到了最下面的相位谱。所以,频谱是从侧面看,相位谱是从下面看。下次偷看女生裙底被发现的话,可以告诉她:“对不起,我只是想看看你的相位谱。”

注意到,相位谱中的相位除了0,就是Pi。因为cos(t+Pi)=-cos(t),所以实际上相位为Pi的波只是上下翻转了而已。对于周期方波的傅里叶级数,这样的相位谱已经是很简单的了。另外值得注意的是,由于cos(t+2Pi)=cos(t),所以相位差是周期的,pi和3pi,5pi,7pi都是相同的相位。人为定义相位谱的值域为(-pi,pi],所以图中的相位差均为Pi。

最后来一张大集合:



好了,你是不是觉得我们已经讲完傅里叶级数了?

抱歉让你失望了,以上我们讲解的只是傅里叶级数的三角函数形式。接下去才是最究极的傅里叶级数——指数形式傅里叶级数。但是为了能更好的理解指数形式的傅里叶级数,我们还需要一个工具来帮忙——欧拉公式。

欧拉公式,以及指数形式的傅里叶级数,我们下一讲再讲。谢谢大家(鞠躬)。

—————————————————————————————————————

今天讲的部分不多,但是我希望大家能够理解,我也有自己的生活,留给知乎的时间并不多,但是我很喜欢在知乎与别人交流的过程。上一次的那些文章大家知道我当时写了多久么?四天,每天写6小时那种,而且当时还是在假期。主要是图太不好做了,有人问到作图的方法,其实就是简单的MATLAB+PHOTOSHOP,作图的确是很费时间,但是我相信做出这些图是值得的,因为我相信图一定比文字更好理解。也希望可以将这些自己学习时的感受和经验更完整的分享给需要的人。

所以请大家稍微有点耐心,我会认真把这个故事讲完。也谢谢大家的理解和支持。

————————————————————————————————————

最后推荐一下@张苏的答案:如何学会傅里叶变换?


我是计算机专业毕业的,想学习傅里叶变换,想用代码实现快速傅里叶变换,去实现音频降噪的功能,请问我该如何做?

张苏算法工程师

王旭宏、知乎用户、li jianq  等人赞同
———————————2014-0605——————————————————————
不少同学希望谈谈学习方法,我本身也是学渣(考研数学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的算法,计算复杂度很低也就是执行起来很快的意思。
举个例子吧:有人通过在小黑屋按钢琴的一个键不松会产生一个单音信号给你传递情报,
y(t)=\sin(2\pi ft+\theta)
信号的频率 f取决于他所按的键。你看不见他,却希望获知信号的频率。怎么办?
1.FT的理论就会告诉你可以通过傅里叶变化获知这个频率。
但是这个信号飘荡在空中,你需要先通过采样得到一个离散信号
y[i]=\sin(2\pi \frac{f}{f_{s}}i+\theta) \  \ \ \ \ (i=1,2,...N)
( f_{s}是采样频率,香农和奈奎斯特告诉我们,需要 f_{s}>2f)。
2.得到离散信号后如何计算 f,DFT就会告诉你怎么办;
3.你嫌DFT太慢了怎么办,FFT就粉墨登场了。

从你计算机的专业背景和希望做音频降噪的需求来看。你需要掌握的是DFT和FFT我建议
1. 找本高等数学的书,花半个小时看看什么是FT;
2. 强烈推荐《Understanding Digital Signal Processing》,一本只需高中数学,且英文比中文都易懂的书,在 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》的后面几章就明白了。

语音降噪问题已经发展成为一个成熟的子学科,要做进一步研究就需要你自己努力了。

目录
相关文章
|
11月前
|
算法 调度 UED
探索操作系统的心脏:调度算法的奥秘与影响
【10月更文挑战第9天】 本文深入探讨了操作系统中至关重要的组件——调度算法,它如同人体的心脏,维持着系统资源的有序流动和任务的高效执行。我们将揭开调度算法的神秘面纱,从基本概念到实际应用,全面剖析其在操作系统中的核心地位,以及如何通过优化调度算法来提升系统性能。
|
机器学习/深度学习
YOLOv5改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
YOLOv5改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
754 0
|
存储 自然语言处理 测试技术
Transformers 4.37 中文文档(八)(4)
Transformers 4.37 中文文档(八)
337 2
|
人工智能 供应链 安全
万字讲透:军工企业数字化转型转什么,如何做?
随着国防现代化目标的提出,军工行业景气度加速上升,企业纷纷扩产以满足新型装备加速列装的需求。航天科工集团的航天云网和中国电科的“数字电科”等项目展示了数字化转型的成效,如缩短研发周期、提高生产效率和降低成本。数字化转型对军工企业至关重要,能提升生产关系、增强竞争力,并实现生产制造和供应链的智能化。然而,转型面临挑战,包括传统认知边界、商业模式创新、技术合作共享、人才短缺和观念体制障碍。企业需制定数字化战略规划,重构组织与流程,加强网络安全,并确保人才和技术保障。案例显示,低代码平台如织信Informat可助力企业实现国产化、灵活的战略部署和数字化转型。
|
机器学习/深度学习 PyTorch TensorFlow
ONNX 模型互操作性的最佳实践
【8月更文第27天】随着深度学习技术的发展,越来越多的框架被开发出来以满足不同的需求。然而,不同的框架之间缺乏互操作性可能会限制模型的部署和迁移能力。Open Neural Network Exchange (ONNX) 格式旨在解决这个问题,它提供了一种标准化的方法来表示机器学习模型,从而实现了不同框架之间的模型转换和共享。本文将探讨如何在不同的深度学习框架之间高效地转换和部署模型,并提供一些实际的代码示例。
495 1
|
数据可视化 数据挖掘 Linux
Seaborn中的分布图:轻松展示数据分布情况
【4月更文挑战第17天】Seaborn是数据分析中的利器,提供直观的分布图以展示数据特性。包括:直方图(histplot,可选KDE),用于观察数据集中趋势和异常值;核密度估计图(kdeplot),呈现连续分布估计;箱线图(boxplot),通过中位数和四分位数展示分布和异常值;小提琴图(violinplot),结合箱线图和KDE,显示详细分布信息。通过自定义参数,可优化图表样式,提升可视化效果,助力数据分析。
|
算法 调度
【完全复现】基于改进粒子群算法的微电网多目标优化调度
该文档描述了一个使用改进粒子群算法实现的微电网多目标优化调度的Matlab程序。该模型旨在最小化运行成本和环境保护成本,将多目标问题通过权值转换为单目标问题解决。程序中定义了决策变量,如柴油发电机、微型燃气轮机、联络线和储能的输出,并使用全局变量处理电负荷、风力和光伏功率等数据。算法参数包括最大迭代次数和种群大小。代码调用了`PSOFUN`函数来执行优化计算,并展示了优化结果的图表。
|
机器学习/深度学习 算法 计算机视觉
YOLOv8改进 | 注意力机制 | 添加双重注意力机制 DoubleAttention【附完整代码+小白必备】
在这个教程中,作者介绍了如何在YOLOv8图像识别模型中集成DoubleAttention模块,以提升模型捕捉长距离关系的效率。DoubleAttention通过全局和局部注意力模块捕获图像的全局和局部信息。教程详细阐述了DoubleAttention的工作原理,并提供了相应的代码实现。读者将学习到如何在YOLOv8的网络结构中添加这一组件,并给出了完整的代码示例。此外,还分享了GFLOPs的计算,以及鼓励读者尝试在不同位置添加注意力机制作为进阶练习。完整代码和更多详情可在提供的链接中获取。
|
JavaScript 前端开发
Npm 命令大全介绍(NodeJs)
Npm 命令大全介绍(NodeJs)
525 0
|
监控 关系型数据库 数据库
监控复制:PG_STAT_REPLICATION
监控复制:PG_STAT_REPLICATION
337 0