Fourier分析基础(一)——Fourier级数
前言
傅立叶分析的作用是把一个函数变成一堆三角函数的和的形式,也就是分解。首先引入的是傅立叶级数,Fourier级数的作用是把函数变为可数无限个三角函数的和,而且这些三角函数的频率都是某个基频的整数倍。如果这个基频无限趋近于0,那么在极限的情况下这函数的参数(频率)就连续了,将连续时域函数映射到连续的频域函数的变换就是标准的傅立叶变换。
由于工程采集的信号大多都是离散的,把时域离散化以后不可能在得到连续的频域函数,所以在频域上也不连续了,这种离散时域序列到离散频域序列的变换称之为离散傅立叶变换(DFT),然后有人开发出了快速计算的快速傅立叶变换(FFT)。
以上介绍的每一种Fourier变换都有其逆变换。
Fourier级数
考虑一下,假设存在2个序列和
,还有一个数字
。
现在有一个时域上变化的函数。这个函数可以表达为如下的形式:
这就是傅立叶级数,傅立叶变换最基础的形式。上式中和式的形式或许并不直观,如果画出一部分或许会直观一些。
如图所示,是从圆频率为1rad/s~10rad/s的正弦信号的合集。
在
空间上的Fourier级数展开
考虑傅立叶级数,首先考虑周期函数在上的展开,但是在展开之前,需要做几个计算和证明。
计算(
就不计算了,这个是一样的)。
积分过程略,得到。
这样就求出了在
上的范数,就是
那么正交基不妨使用构成。
然而我并不知道这个集合是不是正交的基,需要证明啊!
下面证明如下的积分关系成立:
其中,,可以的很轻松得到:2,4,5的正确性,关键在于1,3,6的证明上。
证明了以上六个等式,也就等同证明了是
空间的一组正交基。
首先我们都造:
辣么两个加一下就得到:
减一下就得到:
的时候,上面那俩货
上积分是0可以用肉眼看出。
看不出的……呵呵
最后证明1式,首先假设,很轻松就证明了,然后
的时候,函数是奇函数,所以在相对原点对称的区间上积分是0。
证完收工。
现在我们搞到了这么一组正交基:
下面就要用它分解函数了,也就是计算这些系数。
这是个求平均值的操作应该很好理解。
以上两个公式应该也没有理解上的困难,但是有两个细节,第一个,为什么的系数使用和直流量(或者叫平均值)一样的
,而不是使用
,因为这个
本质上是和基
做内积的时候,
时候的特殊情况。
其次,为何前面的系数是,其实是为了匹配形式:
我们的三角函数基都是带的,如果需要不带,那么系数就要乘以
,本来求系数很干脆:
这样表达式就要写成:
如果让新的系数,
成为系数,那么就可以得到直接乘sin和cos的简洁形式,这个时候积分式变为:
两个相乘以后就得到了
。
在
空间上的Fourier级数展开
如果我们把上面那个宽度为的区域平移会发生什么?
答:毛线都不会发生。
那么我们需要改变什么呢?
答:改一下积分的上下限就可以了。以的求法为例,原来的式子需要改为:
其它的以此类推都一样,没有任何变化。
之所以敢这么搞,是因为推导出正交基的六个等式的对错没有因为增加了这个发生变化,其引理自然也不变化。
在
空间上的Fourier级数展开
这个变化好像就在问:如果区间拉伸了怎么办?
函数的定义域(区间)拉伸了,那么我们把基也一起拉伸就OK了。
那么,问题来了:怎么拉伸呢?
很简单,先直接抻长了:
然后保证范数是1就可以了。
范数的计算和上面范数的计算几乎是一毛一样的,所以在此略过直接说结果:
在空间上满足:
的参数的求取公式如下:
Fourier级数的最终自由形态:
空间上的级数展开
有了上面两份推导,现在可以正式得出更加一般的展开:
这个时候,区间的长度是,等同于刚才
,那么带入得到从参数换为函数的变换如上所示。
这个时候参数的求取是这样的:
这样就结束了,我们得到了一种在任意有限区间对函数进行展开的方法,这样我们就可以开发出一些更加奇葩的东西,比如对一个函数使用Fourier基进行分段拟合。
Trick:
在对函数进行人肉傅立叶级数展开的时候,如果区间关于原点对称,首先观察函数的形式,如果是奇函数,那么cos的部分(含直流分量)就可以不看了:一定没有~
如果是偶函数,那么sin的部分就可以不用看了。
大道至简:Fourier级数的复指数形式
由著名的欧拉公式:
其中,在许多场合一般使用j代替i,但是实际上一般定义
,但是由于
的两个共轭的结果就是
,所以上述关系一般用不到,只是在做一些说明的时候为了方便使用j代替-i。
我们不妨设,那么就可以得到Fourier的复指数形式:
从三个公式变成一个公式,果然身心都愉悦了好多呢,但是这么变换为什么是有效的呢?
以下证明分两步走,第一步,证明为什么欧拉公式形状这么诡异但是是对的。第二,为什么能用复数吧sin和cos结合起来。
关于欧拉公式的证明:
首先把指数函数和两个三角函数进行Taylor展开:
然后令可以推导出下式:
就这么愉快的证明了。
那么为什么复数可以用来把两个函数糅合到一起呢?
因为在复平面上,实数轴和虚数轴是垂直的。
而且,我们以三角函数过零,且导数大于0的点为相位的0点,那么在的时候,sin的相位是0,而cos的相位是90°,也就是
。
那么,如果sin的相位是-90°,那么cos的相位就是0°,这是一个相对的关系,并无绝对。我们继续分析,其实是一条三维空间的螺旋线:
除了有在复平面上能直接表示相位的良好性质以外,还是一个合格的复周期函数呢~那么我们不妨抛弃从旧版傅立叶到新版傅立叶的映射,重构整个证明吧!
现在我们新建规范正交基:,我们来证明它是规范正交的。
根据内积的定义好像,但是在复数下这是错误的!
复数下面其实是:
这样就可以用共轭消除虚数部分了,得到的范数才是真实的。
话说指数函数真的是一个专业对抗求导积分500年的函数,它的积分更容易,在此不证明了,直接给出结论:它的范数是,所以上面给出的正交基是规范的。
那么还不知道正交不正交呢(然而我就急着叫他规范正交基了)。
在的时候可以得到函数积分为0,如果
的时候就反常了,然而并不是很难解,直接
常数项积分谁都会,得到
,就是上面的结论。(一不小心还是证明了不想写的东西)
其实这个时候傅立叶级数已经脱胎换骨了,从根本上换了一套基,也就从原来的实数领域推广成了更为广阔的复数领域,但是形式却更加的简洁了。
Fourier分析基础(一)——Fourier级数的更多相关文章
- Fourier分析基础(二)——由级数导出连续Fourier变换
此处推导参考(照抄) A First Course in Wavelets with Fourier Analysis Second Edition, Albert Boggess& Fran ...
- 为什么Fourier分析?
本文旨在给出Fourier分析的几个动机. 目录 波动方程 热导方程 Lapalce变换 求和公式 表示论 特征理论 参考资料 波动方程 考虑一维的波动方程最简单的边值问题$$u(x,t), x\in ...
- 老李分享:《Java Performance》笔记1——性能分析基础 1
老李分享:<Java Performance>笔记1——性能分析基础 1.性能分析两种方法: (1).自顶向下: 应用开发人员通过着眼于软件栈顶层的应用,从上往下寻找性能优化的机会. ...
- 算法设计与分析基础 (Anany Levitin 著)
第1章 绪论 1.1 什么是算法 1.2 算法问题求解基础 1.2.1 理解问题 1.2.2 了解计算设备的性能 1.2.3 在精确解法和近似解法之间做出选择 1.2.4 算法的设计技术 1.2.5 ...
- 网站分析基础及KPI实践
一:网站分析是什么? 网站分析(Web Analytics)即网站访客行为分析,通过对网站数据进行定量和定性的分析,来不断驱动和提高访问者在网站中的体验,并将访客转化为你的商业目标(在线及离线KPI) ...
- RE-1 逆向分析基础
逆向分析基础 0x01-0x0C 本笔记使用汇编指令为x86架构下汇编指令,ARM架构汇编指令不做介绍 0x01. 关于RE 逆向工程(Reverse Engineering RE) 逆向分析方法: ...
- Makefile分析基础
http://blog.csdn.net/ghostyu/article/details/6866863 在我前一篇写的[ linux驱动学习(一)Makefile基础]中,Makefile写的中规中 ...
- 精尽 MyBatis 源码分析 - 基础支持层
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- LR之性能分析基础
1.判断测试结果有效性 2.分析要点提示 3.Analysis主要提供的6大类分析图 4.分析流程
随机推荐
- R语言相关工具
R: 下载 R语言的基础工具,包括R编译器,R控制台等 RStudio:下载 R程序集成开发环境.特别好用,包括一系列的集成工具. Rtools:下载 Windows环境下,编译R包的工具库.也可以用 ...
- Quick Cocos2dx 与 Eclipse 连真机debug遇到的问题
今天下午解决了因为偷懒一直忍受的两个让我不爽很久了的问题: 1Eclipse无法连接手机调试的问题. 在设备管理器中看到的Android设备有黄色的感叹号, 说明驱动不是最新的. 按照网上搜到的解决方 ...
- 51nod贪心算法教程
51nod确实是一个好oj,题目质量不错,wa了还放数据,学习算法来说挺好的,这次我做了几个水的贪心,虽然水,但是确实都很典型. 教程链接:http://www.51nod.com/tutorial/ ...
- FZU 2095 水面高度
一共六种情况.手算即可. #include<cstdio> #include<cstring> #include<cmath> int T; double a,b, ...
- linux下JUCE源码编译依赖库
JUCE 源码https://github.com/julianstorer/JUCE 想在ubuntu下编译需要提前安装以下依赖库 sudo apt-get install mesa-common- ...
- html 上传文件
1.html代码 <form id="form1" action="TestYield" method="post" enctype= ...
- Unity3D ——强大的跨平台3D游戏开发工具(四)
第六章 Unity3D中的C#Script编程的注意事项 也许您在学习Unity3D之前,已经是一位C#的编程高手了.但在Unity3D中的C#并不像真正的C#那般强大,在Unity3D的C#中必须全 ...
- p4factory 解决“g++: internal compiler error: Killed (program cc1plus)” make error问题
参考:解决: g++: internal compiler error: Killed (program cc1plus) 在安装p4factory的时候,执行: ./install_deps.sh ...
- LINUX 无法登入系统(2017-1-16)
很好的博文:http://blog.csdn.net/caizi001/article/details/38659189
- 创建 Web 前端开发环境(node和npm以及git)
Web 前端开发涉及多种工具,这里将常用工具的安装和配置进行说明,提供了详细的说明,为后继的开发创建一个坚实的基础. 本文介绍的工具有:NodeJS, NPM, Bower, Git 和 Grunt. ...