一文教你理解傅里叶变换及MATLAB在求傅里叶变换中的应用
大纲
- 从积分变换谈起
- 积分变换的基本概念
- 积分变换的来源
- 傅里叶级数
- 傅里叶级数的相关基础概念
- 傅里叶级数的基石——三角函数系及其正交性
- 三角函数系
- 三角函数系的正交性
- 傅里叶级数的含义
- 傅里叶系数的导出
- 傅里叶级数收敛条件与收敛定理
- 从周期函数到任意区间函数的傅里叶级数
- 周期为$2\pi$的奇函数偶函数的傅里叶级数
- 定义在区间$[0,\pi]$的非周期函数的傅里叶级数
- 周期为2l的函数的傅里叶级数
- 定义在任意有限区间$[a,b]$函数的傅里叶级数
- 傅里叶积分
- 傅里叶级数的复指数形式
- 傅里叶积分的定义
- 傅里叶积分定理(傅里叶级数收敛定理的升级)
- 傅里叶变换
- 傅里叶变换的概念
- 求傅里叶变换的典型例题
- 指数衰减函数的傅里叶变换
- 正态钟形函数的傅里叶变换
- 傅里叶变换的物理意义
- 广义傅里叶变换
- 单位脉动函数
- 单位脉冲函数
- 单位脉冲函数的定义
- 单位脉冲函数的性质
- 单位脉冲函数的积分为1.
- 筛选性质
- 常见的广义傅里叶变换
- 单位阶跃函数的广义傅里叶变换
- MATLAB求傅里叶变换的应用
- fourier命令
- ifourier命令
- 参考文献与资料
从积分变换谈起
积分变换的基本概念
积分变换是函数变换的一种。积分变换可以通过计算原函数与一个含参函数的乘积的积分映射为另一个函数。这里要变换的原函数称为原像函数,含参函数称为积分变换核函数,变换后的函数称为像函数
积分变换的来源
积分变换来源于数学中的转化思想。在数学中有些问题直接求解较为复杂,而通过转化就能将原问题转化成较为简单的问题,通过求解较为简单的问题,得到解之后再进行逆变换就能得到原问题的解。比如通过取对数将复杂的乘积运算转化为加减运算,然后通过对数的逆运算——指数运算可以得到原问题的解。
如要计算:ab×aca^b \times a^cab×ac。将整个式子取以a为底的对数,loga(ab×ac)=b+c\log_a (a^b \times a^c)=b+cloga(ab×ac)=b+c,然后再将结果取以a为底,b+c为幂的指数,得到ab×ac=ab+ca^b \times a^c=a^{b+c}ab×ac=ab+c。这就是积分变换转化思想的核心所在。
傅里叶级数
要深入了解傅里叶变换,就不得不先了解傅里叶级数和傅里叶积分。
傅里叶级数的相关基础概念
傅里叶级数和幂级数都可以用来逼近函数,但是幂级数要求被逼近函数连续,且有任意阶导数(从函数的幂级数展开式中包含任意阶导数可以理解这一点。),同时还要求余项的极限为0。而傅里叶级数只要求函数连续或者有有限个第一类间断点。(确保被逼近函数可积,从傅里叶级数的系数由积分确定可以理解这一点。)
傅里叶级数的基石——三角函数系及其正交性
三角函数系
三角函数系为1,cosx,sinx,cos2x,sin2x,...,cosnx,sinnx...1,\cos {x},\sin{x},\cos{2x},\sin{2x},...,\cos{nx},\sin{nx}...1,cosx,sinx,cos2x,sin2x,...,cosnx,sinnx...。
三角函数系的正交性
三角函数系在[−π,π][-\pi,\pi][−π,π]上正交,也就是说上述三角函数系中任意两个相异函数的乘积在[−π,π][-\pi,\pi][−π,π]的积分为0。(函数系的正交和我们之前理解直线垂直和向量正交都不一样,但是共同点都在于乘积为0,只是此处是乘积的积分为0。)
对于上图中的第一二个式子,可以由三角函数的周期性很容易理解,也可以直接通过积分求得。
而对于上图中的3,到5式,则可以通过积化和差后依然由三角函数的周期性得到。
注意:两个相同函数的乘积在[−π,π][-\pi,\pi][−π,π]上不为0。事实上,有如下结果
傅里叶级数的含义
所谓函数的傅里叶级数,就是把函数表示成三角级数的形式。如上式右边所示的函数项级数就是三角级数。其中的系数a0,ak,bka_0,a_k,b_ka0,ak,bk称为傅里叶系数,由下面的式子给出(注意aaa从a0a_0a0开始而bbb从b1b_1b1开始)
傅里叶系数的导出
从上述导出傅里叶系数的过程中可以看出,三角函数系的正交性是导出傅里叶系数的关键。(相异函数积分为0,相同函数除1外全为π\piπ)。
而且也可以理解为什么三角级数的常数项是a02\frac{a_0}{2}2a0。这样的话恰好与后面导出的ana_nan在n=0n=0n=0的时候是一致的。
傅里叶级数收敛条件与收敛定理
当周期为2π2\pi2π的函数满足狄利克雷条件:
- 在[−π,π][-\pi,\pi][−π,π]上连续或者有有限个间断点(是可积的)
- 在一个周期上有有限个极值点(保证函数不作无限次振动)
则函数f(x)f(x)f(x)的傅里叶级数a02+∑n=0∞(ancosnx+bnsinnx)\frac{a_0}{2}+\sum_{n=0}^{\infty} (a_n\cos nx + b_n\sin nx)2a0+n=0∑∞(ancosnx+bnsinnx)收敛于12[f(x−0)+f(x+0)]\frac{1}{2}[f(x-0)+f(x+0)]21[f(x−0)+f(x+0)]。则当x是函数的连续点时傅里叶级数收敛于f(x)f(x)f(x)。 而当x是f(x)f(x)f(x)的间断点的时候,傅里叶j数收敛于12[f(x−0)+f(x+0)]\frac{1}{2}[f(x-0)+f(x+0)]21[f(x−0)+f(x+0)].
为便于理解,下面给出了一个傅里叶级数的典型例题。
从上面这个例题中也可以看出,当f(x)是一个奇函数的时候,由于奇函数乘以cosnx\cos nxcosnx仍然是奇函数,在对称区间[−π,π][-\pi,\pi][−π,π]上积分为0,其傅里叶级数将只包含正弦项。
注意:
- 在写函数f(x)f(x)f(x)等于其傅里叶级数的时候一定要注意标明可以取等号的范围,也就是把所有的函数间断点去除。
- 傅里叶级数是三角级数,因而其每一项在整个实数范围内都是连续的,但是其和函数却在实数范围内有间断点。
- 上述讨论的是定义在R的周期函数的傅里叶级数,而**利用周期延拓可以求出仅仅定义在区间[−π,π][-\pi,\pi][−π,π]的函数f(x)f(x)f(x)**的傅里叶级数。(注意在写成立范围的时候限定在[−π,π][-\pi,\pi][−π,π]即可)。如下面这道例题讨论的一样。
注意:上述求出的倒数平方和的结果非常典型,值得记住。
从周期函数到任意区间函数的傅里叶级数
周期为2π2\pi2π的奇函数偶函数的傅里叶级数
定义在区间[0,π][0,\pi][0,π]的非周期函数的傅里叶级数
从上述图片可以看出,定义在区间[0,π][0,\pi][0,π]的函数的傅里叶级数并不唯一,选择不同的延拓方式可以得到对应的正弦级数表达式和余弦级数表达式。
周期为2l的函数的傅里叶级数
从上述周期为2l的函数的傅里叶级数的展开式中可以看出ω=πl\omega=\frac{\pi}{l}ω=lπ。下文洪将用到这个式子得出傅里叶级数的复数表达式。
定义在任意有限区间[a,b][a,b][a,b]函数的傅里叶级数
对于任意有限区间上的函数,既可以通过换元成定义在对称区间上的函数然后进行周期延拓转化成上一种情况解决;也可以通过换元成定义在[0,l]区间上的函数进行奇延拓或者偶延拓成对称区间上的函数然后进行周期延拓,最后展开成傅里叶级数,
傅里叶积分
傅里叶级数的复指数形式
将傅里叶系数换成指数:
根据上述cnc_ncn和ana_nan还有bn之间的关系,b_n之间的关系,bn之间的关系,cnc_ncn可以写成:
傅里叶积分的定义
对于傅里叶积分公式中的内层积分对应的其实是傅里叶级数的系数,由于是任意函数,周期趋于无穷大,所以变成了积分的样子。外层积分对应的是傅里叶级数的求和符号
傅里叶积分定理(傅里叶级数收敛定理的升级)
之前讨论了定义在区间[−π,π][-\pi,\pi][−π,π]的函数的收敛定理,下面给出了任意函数的傅里叶积分的存在定理:
根据欧拉公式可以证明。不懂可以参考:第八章 傅里叶变换 - 百度文库
傅里叶变换
傅里叶变换的概念
傅里叶变换是一种积分变换,原像函数是f(t)f(t)f(t),像函数对应F(ω)F(\omega)F(ω),核函数为e−iωte^{-i\omega t}e−iωt。傅里叶变换对应的其实是求函数的傅里叶系数。原函数和傅里叶系数都能确定一个函数的值,只是两种不同的形式。
傅里叶逆变换也是一种积分变换,原像函数是F(ω)F(\omega)F(ω),像函数对应f(t)f(t)f(t),核函数为eiωt2π\frac{e^{i\omega t}}{2\pi}2πeiωt。傅里叶逆变换对应的是求傅里叶级数的和。
求傅里叶变换的典型例题
指数衰减函数的傅里叶变换
(请先阅读下文MATLAB在求解fourier变换中的应用后阅读程序)使用MATLAB求上述傅里叶变换如下:
%% 傅里叶变换eg1
clc;clear;
syms t w
syms b positive // 定义一个正的常数b
f(t)=exp(-b*t)*heaviside(t);
ft=fourier(f(t),w);
运行结果:
ft =1/(b + w*1i)
注:
- heaviside(x)是阶梯函数,x>0时返回1,x<0时返回0,x=0时返回12\frac{1}{2}21。
- syms b positive定义一个正的参数b
根据傅里叶逆变换的定义,可以求出上述傅里叶变换结果的逆变换
注意
- 上述求解结果是通过傅里叶变换的定义得到的而不是通过正常的积分手段得到。这说明傅里叶变换可以用来求一些正常积分不好求的特殊积分。
- 在求解傅里叶逆变换的过程中,经常使用将复指数化成三角形式的技巧,然后通过奇偶性化简。
使用MATLAB命令求解傅里叶逆变换如下
clc;clear;
syms t w b
ft=ifourier(1/(b + w*1i),t)
运行结果:
ft =(exp(-b*t)*(sign(t) + 1))/2
恰好可以得到原函数。(与原函数稍有不同:在间断点x=0处,得到等于左右极限的平均值。这与傅里叶积分定理所给出的结果是一致的。)
正态钟形函数的傅里叶变换
从上述求傅里叶变换的过程中可以看出,对于求指数的负复数平方次幂和实数的结果是一致的,这可以通过换元x=t+iω2βx=t+\frac{i\omega}{2\beta}x=t+2βiω得到。
%% 傅里叶变换eg2
clc;clear;
syms t w
syms A b positive
f(t)=A*exp(-b*t^2)
ft=fourier(f(t),w)
运行结果:
ft =
(A*pi^(1/2)*exp(-w^2/(4*b)))/b^(1/2)
傅里叶变换的物理意义
函数f(t)f(t)f(t)的傅里叶变换F(ω)F(\omega)F(ω)称为f(t)f(t)f(t)的频谱函数(在物理学中,ω\omegaω是圆频率,所以F(ω)F(\omega)F(ω)是圆频率的函数)。
而频谱函数的模∣F(ω)∣|F(\omega)|∣F(ω)∣称为振幅频谱。
振幅频谱是偶函数。
F(ω)F(\omega)F(ω)是一个复函数,其辐角称为f(t)f(t)f(t)的相角频谱。
广义傅里叶变换
单位脉动函数
单位脉冲函数起源于物理学中的脉冲现象,如断电后的突然来电,总电量是一定的,但是时间非常短,这意味着电流随时间变化的函数q(t)q(t)q(t)与t轴围成的面积是一定的,但是时间极短。当围成的面积是一个单位时就是单位脉冲函数。
单位脉冲函数
Dirac(狄拉克)第一次引入了单位脉冲函数描述上述积分为定值,但是时间极短的变化过程。
单位脉冲函数的定义
注意,单位脉冲函数没有具体的显性表达式,凡是满足上述积分性质的函数都可认为时单位脉冲函数
单位脉冲函数的性质
单位脉冲函数的积分为1.
在单位脉冲函数的定义中取无穷次可微函数f(t)=1f(t)=1f(t)=1可得到上述结果。
筛选性质
由于单位脉冲函数只在0附近有函数值,其余为0,则求积分的时候,只有0附近的函数值为∞\infty∞,则求δ(t)f(t)\delta(t) f(t)δ(t)f(t)的积分过程为:f(0)×∞×1∞=f(0)f(0) \times \infty \times \frac{1}{\infty}=f(0)f(0)×∞×∞1=f(0)。
常见的广义傅里叶变换
根据傅里叶积分定理,函数f(t)f(t)f(t)能够写成傅里叶积分形式的其中一个前提条件是f(t)f(t)f(t)绝对可积,而这个条件相当强,许多常见的函数如sinxcosxx\sin x \cos x xsinxcosxx等都不满足。将单位脉冲函数应用到傅里叶变换中可以得到上述函数的广义的傅里叶变换。
单位阶跃函数的广义傅里叶变换
使用MATLAB求单位阶跃函数的傅里叶变换,同时验证所给出的频谱函数的傅里叶逆变换就是单位阶跃函数的代码如下:
clc;clear;
syms t w
ft1=fourier(heaviside(t),w)
ft2=simplify(ifourier(ft1,t))
结果如下:
ft1 =pi*dirac(w) - 1i/wft2 =sign(t)/2 + 1/2
其中dirac(w)就是单位脉冲函数。在MATLAB命令栏中可以验证,dirac(0)=inf,当x不等于0时dirac(x)=0。
MATLAB求傅里叶变换的应用
fourier命令
fourier命令是matlab中求解傅里叶变换的主要命令,包含以下三种调用格式。其中transVar是傅里叶变换后像函数的自变量,一般使用ω\omegaω。
fourier(f)fourier(f,transVar)fourier(f,var,transVar)
ifourier命令
ifourier命令是matlab中求解傅里叶逆变换的主要命令,调用格式和fourier命令相同。
参考文献与资料
- 三角级数及三角函数系的正交性 - 百度文库
- 第八章 傅里叶变换 - 百度文库本文主要参考的傅里叶变换的内容,较为详细
- 实验三 MATLAB求Fourier变换及逆变换 - 百度文库该教程详细介绍了使用matlab命令求解傅里叶变换的过程
- Matlab实现Fourier级数的简单教程 该教程主要是使用MATLAB利用傅里叶级数的公式实现求解傅里叶系数。
一文教你理解傅里叶变换及MATLAB在求傅里叶变换中的应用相关推荐
- Matlab数字图像的傅里叶变换(FFT)
查看全文 http://www.taodudu.cc/news/show-6182241.html 相关文章: 使用matlab对图像进行傅里叶变换 [ MATLAB ]离散傅里叶变换(DFT)以及逆 ...
- 傅里叶变换的Matlab代码
原文:http://blog.csdn.net/xiaofengsheng/article/details/5991680 傅里叶变换的Matlab代码: img=imread('e:/4.jpg') ...
- 离散傅里叶变换及matlab实现(按时间抽选(DIT)的基-2 FFT算法(库利-图基算法))
转,傅里叶变换,很好的解释 很好的文章,可惜水平太差,还没有完全理解. 快速傅里叶的matlab实现 按时间抽选(DIT)的基-2 FFT算法(库利-图基算法) 傅里叶要用到的nn个复数,不是随机找的 ...
- 2021-02-28 Matlab绘制短时傅里叶变换的频谱图和时间-频率-幅值三维图
Matlab绘制短时傅里叶变换的频谱图和时间-频率-幅值三维图 function [t,frequency,f_spectrum]=fft_s(y,windowlength,Fs) % 输入 : % ...
- matlab中idfs,【 MATLAB 】离散傅里叶变换(DFT)以及逆变换(IDFT)的MATLAB实现
刚刚写过一篇用MATLAB实现离散傅里叶级数的博文,如下: 离散傅里叶变换不是一种神奇的东西,它和离散傅里叶级数关系很紧密,紧密到使用MATLAB编写离散傅里叶变换以及逆变换的函数一模一样,只需改个名 ...
- 【 MATLAB 】离散傅里叶变换(DFT)以及逆变换(IDFT)的MATLAB实现
刚刚写过一篇用MATLAB实现离散傅里叶级数的博文,如下: [ MATLAB ]离散傅里叶级数(DFS)及 IDFS 的 MATLAB 实现 离散傅里叶变换不是一种神奇的东西,它和离散傅里叶级数关系很 ...
- matlab 二重傅里叶积分,傅里叶积分、傅里叶变换的matlab实现.doc
傅里叶积分.傅里叶变换的matlab实现.doc PAGE PAGE 1 院 校: 物理与电子科学学院 班 级: 0801 班 姓 名: 目 录 1. 引言---------------------- ...
- 5G NR学习理解系列——利用matlab工具生成5G NR信源
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 5G NR学习理解系列--利用matlab工具生成5G NR信源 前言 NR工具箱的使用 直接使用代码 前言 既然发现了4G LTE ...
- 傅里叶变换性质matlab,傅里叶变换性质MATLAB实现
傅里叶变换性质MATLAB实现 更多相关问题 患者,男性,60岁.连续3天测血压为140/95mmHg.此患者属于(1.0分) 老年人日常生活照护中,应注意尊重老年人的个性和隐私,以下说法错误的是( ...
最新文章
- JVM必备指南(转)
- 数据采集与网站统计实现全过程
- bzoj2146 Construct
- java传.net datetime_.net调java写的webService传过去的datetime,int等非string类型为null的问题...
- c语言调用createthread线程的头文件_易语言API多线程总汇
- Win 10 源码一览:0.5 T 代码、400 万文件、50 万文件夹
- 微课|中学生可以这样学Python(例5.8):凯撒加密
- (转)OO设计初次见面
- Linux命令-文件处理命令:touch
- 【C++ 与 STL】集合:set
- FLUSH TABLES WITH READ LOCK有多快
- 推荐系统之协同过滤(CF)算法详解和实现
- python多线程和多进程
- java自定义生成js代码_基于JavaScript的代码自动生成工具
- 微软的产品激活中心电话
- 三阶魔方大中小魔公式_三阶魔方花样大汇总 ,带公式带图
- eCharts绘制双系列混合类型图表+额外tooltip信息
- USYD悉尼大学INFO1110 Oral Exam口语考试复习资料
- 【杂记】数据存储架构
- 用科学计算机求arctan,计算器arctan怎么按