一文教你理解傅里叶变换及MATLAB在求傅里叶变换中的应用_matlab数值积分傅里叶变换_永远在路上的ChenChen的博客-程序员秘密

技术标签: MATLAB  

从积分变换谈起

积分变换的基本概念

积分变换是函数变换的一种。积分变换可以通过计算原函数与一个含参函数的乘积的积分映射为另一个函数。这里要变换的原函数称为原像函数,含参函数称为积分变换核函数,变换后的函数称为像函数
积分变换的基本概念

积分变换的来源

积分变换来源于数学中的转化思想。在数学中有些问题直接求解较为复杂,而通过转化就能将原问题转化成较为简单的问题,通过求解较为简单的问题,得到解之后再进行逆变换就能得到原问题的解。比如通过取对数将复杂的乘积运算转化为加减运算,然后通过对数的逆运算——指数运算可以得到原问题的解。

如要计算: a b × a c a^b \times a^c ab×ac。将整个式子取以a为底的对数, log ⁡ a ( a b × a c ) = b + c \log_a (a^b \times a^c)=b+c loga(ab×ac)=b+c,然后再将结果取以a为底,b+c为幂的指数,得到 a b × a c = a b + c a^b \times a^c=a^{b+c} ab×ac=ab+c。这就是积分变换转化思想的核心所在。

傅里叶级数

要深入了解傅里叶变换,就不得不先了解傅里叶级数和傅里叶积分。

傅里叶级数的相关基础概念

傅里叶级数和幂级数都可以用来逼近函数,但是幂级数要求被逼近函数连续,且有任意阶导数(从函数的幂级数展开式中包含任意阶导数可以理解这一点。),同时还要求余项的极限为0。而傅里叶级数只要求函数连续或者有有限个第一类间断点。(确保被逼近函数可积,从傅里叶级数的系数由积分确定可以理解这一点。)

傅里叶级数的基石——三角函数系及其正交性

三角函数系

三角函数系为 1 , cos ⁡ x , sin ⁡ x , cos ⁡ 2 x , sin ⁡ 2 x , . . . , cos ⁡ n x , sin ⁡ n x . . . 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。事实上,有如下结果在这里插入图片描述

傅里叶级数的含义

所谓函数的傅里叶级数,就是把函数表示成三角级数的形式。在这里插入图片描述如上式右边所示的函数项级数就是三角级数。其中的系数 a 0 , a k , b k a_0,a_k,b_k a0,ak,bk称为傅里叶系数,由下面的式子给出(注意 a a a a 0 a_0 a0开始而 b b b b 1 b_1 b1开始)在这里插入图片描述

傅里叶系数的导出

在这里插入图片描述
在这里插入图片描述
从上述导出傅里叶系数的过程中可以看出,三角函数系的正交性是导出傅里叶系数的关键。(相异函数积分为0,相同函数除1外全为 π \pi π)。
而且也可以理解为什么三角级数的常数项是 a 0 2 \frac{a_0}{2} 2a0。这样的话恰好与后面导出的 a n a_n an n = 0 n=0 n=0的时候是一致的。

傅里叶级数收敛条件与收敛定理

当周期为 2 π 2\pi 2π的函数满足狄利克雷条件:

  1. [ − π , π ] [-\pi,\pi] [π,π]上连续或者有有限个间断点(是可积的)
  2. 在一个周期上有有限个极值点(保证函数不作无限次振动)

则函数 f ( x ) f(x) f(x)的傅里叶级数 a 0 2 + ∑ n = 0 ∞ ( a n cos ⁡ n x + b n sin ⁡ n x ) \frac{a_0}{2}+\sum_{n=0}^{\infty} (a_n\cos nx + b_n\sin nx) 2a0+n=0(ancosnx+bnsinnx)收敛于 1 2 [ f ( x − 0 ) + f ( x + 0 ) ] \frac{1}{2}[f(x-0)+f(x+0)] 21[f(x0)+f(x+0)]。则当x是函数的连续点时傅里叶级数收敛于 f ( x ) f(x) f(x)。 而当x是 f ( x ) f(x) f(x)的间断点的时候,傅里叶j数收敛于 1 2 [ f ( x − 0 ) + f ( x + 0 ) ] \frac{1}{2}[f(x-0)+f(x+0)] 21[f(x0)+f(x+0)].

为便于理解,下面给出了一个傅里叶级数的典型例题。在这里插入图片描述在这里插入图片描述
在这里插入图片描述
从上面这个例题中也可以看出,当f(x)是一个奇函数的时候,由于奇函数乘以 cos ⁡ n x \cos nx cosnx仍然是奇函数,在对称区间 [ − π , π ] [-\pi,\pi] [π,π]上积分为0,其傅里叶级数将只包含正弦项。
注意

  1. 在写函数 f ( x ) f(x) f(x)等于其傅里叶级数的时候一定要注意标明可以取等号的范围,也就是把所有的函数间断点去除。
  2. 傅里叶级数是三角级数,因而其每一项在整个实数范围内都是连续的,但是其和函数却在实数范围内有间断点。
  3. 上述讨论的是定义在R的周期函数的傅里叶级数,而**利用周期延拓可以求出仅仅定义在区间 [ − π , π ] [-\pi,\pi] [π,π]的函数 f ( x ) f(x) f(x)**的傅里叶级数。(注意在写成立范围的时候限定在 [ − π , π ] [-\pi,\pi] [π,π]即可)。如下面这道例题讨论的一样。在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    注意:上述求出的倒数平方和的结果非常典型,值得记住。

从周期函数到任意区间函数的傅里叶级数

周期为 2 π 2\pi 2π的奇函数偶函数的傅里叶级数

在这里插入图片描述

定义在区间 [ 0 , π ] [0,\pi] [0,π]的非周期函数的傅里叶级数

在这里插入图片描述
从上述图片可以看出,定义在区间 [ 0 , π ] [0,\pi] [0,π]的函数的傅里叶级数并不唯一,选择不同的延拓方式可以得到对应的正弦级数表达式和余弦级数表达式。

周期为2l的函数的傅里叶级数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述从上述周期为2l的函数的傅里叶级数的展开式中可以看出 ω = π l \omega=\frac{\pi}{l} ω=lπ。下文洪将用到这个式子得出傅里叶级数的复数表达式。

定义在任意有限区间 [ a , b ] [a,b] [a,b]函数的傅里叶级数

对于任意有限区间上的函数,既可以通过换元成定义在对称区间上的函数然后进行周期延拓转化成上一种情况解决;也可以通过换元成定义在[0,l]区间上的函数进行奇延拓或者偶延拓成对称区间上的函数然后进行周期延拓,最后展开成傅里叶级数,
在这里插入图片描述
在这里插入图片描述

傅里叶积分

傅里叶级数的复指数形式


在这里插入图片描述
将傅里叶系数换成指数:在这里插入图片描述在这里插入图片描述
根据上述 c n c_n cn a n a_n an还有 b n 之 间 的 关 系 , b_n之间的关系, bn, c n c_n cn可以写成:
在这里插入图片描述

傅里叶积分的定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对于傅里叶积分公式中的内层积分对应的其实是傅里叶级数的系数,由于是任意函数,周期趋于无穷大,所以变成了积分的样子。外层积分对应的是傅里叶级数的求和符号

傅里叶积分定理(傅里叶级数收敛定理的升级)

之前讨论了定义在区间 [ − π , π ] [-\pi,\pi] [π,π]的函数的收敛定理,下面给出了任意函数的傅里叶积分的存在定理:
在这里插入图片描述
在这里插入图片描述
根据欧拉公式可以证明。不懂可以参考:第八章 傅里叶变换 - 百度文库

傅里叶变换

傅里叶变换的概念

在这里插入图片描述
在这里插入图片描述
傅里叶变换是一种积分变换,原像函数是 f ( t ) f(t) f(t),像函数对应 F ( ω ) F(\omega) F(ω),核函数为 e − i ω t e^{-i\omega t} eiωt。傅里叶变换对应的其实是求函数的傅里叶系数。原函数和傅里叶系数都能确定一个函数的值,只是两种不同的形式。
傅里叶逆变换也是一种积分变换,原像函数是 F ( ω ) F(\omega) F(ω),像函数对应 f ( t ) f(t) f(t),核函数为 e i ω t 2 π \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时返回 1 2 \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 ) = 1 f(t)=1 f(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)绝对可积,而这个条件相当强,许多常见的函数如 sin ⁡ x cos ⁡ x x \sin x \cos x x sinxcosxx等都不满足。将单位脉冲函数应用到傅里叶变换中可以得到上述函数的广义的傅里叶变换。

单位阶跃函数的广义傅里叶变换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用MATLAB求单位阶跃函数的傅里叶变换,同时验证所给出的频谱函数的傅里叶逆变换就是单位阶跃函数的代码如下:

clc;clear;
syms t w
ft1=fourier(heaviside(t),w)
ft2=simplify(ifourier(ft1,t))

结果如下:

ft1 =
 
pi*dirac(w) - 1i/w
 
 
ft2 =
 
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命令相同。

参考文献与资料

  1. 三角级数及三角函数系的正交性 - 百度文库
  2. 第八章 傅里叶变换 - 百度文库本文主要参考的傅里叶变换的内容,较为详细
  3. 实验三 MATLAB求Fourier变换及逆变换 - 百度文库该教程详细介绍了使用matlab命令求解傅里叶变换的过程
  4. Matlab实现Fourier级数的简单教程 该教程主要是使用MATLAB利用傅里叶级数的公式实现求解傅里叶系数。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42443453/article/details/95942043

智能推荐

mysql的sql语句基本操作_sql语句中t1_攻城狮numberOne的博客-程序员秘密

mysql基本的增删改查(select,upda)mysql的左连接,右连接,内连接,全连接的区别mysql的聚合函数mysql的子查询

w8ndows 秒表,Win8因它被封杀:RTC Bug深究、解决之道_rayyangul的博客-程序员秘密

Windows 8 RTC Bug被确认之后,超频平台HWBot封杀了所有基于它的跑分成绩,智利网站ocaholic.ch则研究发现似乎只有Intel平台才受影响。那么,这个Bug究竟是怎么回事儿?Windows 8到底在使用什么计时器?AMD平台真的那么“清白”么?能否不等微软而自己解决这个问题?ocaholic.ch这些天又对此做了更详尽的研究,还找来了CPU-Z的作者Franck D.合作,...

前端导出功能实现的三种方式_前端小木的博客-程序员秘密

1.点击链接数据、文件格式全部在后台封装好,返回给前端一个链接,前端通过点击链接自动下载,两种方式:(1)window.location.href = ‘url’(2)&lt;a href='url' download=''&gt;&lt;/a&gt;2.解析后台返回的文件流这种方式就是后台将要导出的文件以文件流的方式返回给前端,前端通过blob去解析,再动态创建a标签。let co...

Python编写求100以内素数_python求100以内素数代码_dragongirlgggmmm的博客-程序员秘密

注:本文所使用的方法都是从math 包里面导入进来sqrt函数,那么也可以只导入math包,但是应用sqrt函数时需要写成math.sqrt()方法一: from math import sqrtx=2while x&amp;lt;=100: k=sqrt(x) i=2 while i&amp;lt;=k: if(x%i==0): b...

正则表达式_正则表达式只允许出现或者不出现_裸奔的蜗牛的博客-程序员秘密

【IT168 技术文档】摘要:本文是正则表达式系列教程的第一篇,作者抛开深奥的概念,用最平实的写法描述了编程中的利器:正则表达式的基本语法,平时做为案头参考也很有用处,希望对广大战斗在程序领域的同仁有所帮助。 正则表达式是什么东东? 正则表达式是使用一套特殊符号模式做为表达格式的字符串,主要用处是描述和解析文本。许多程序员(甚至一些不错的高手)都无视(也不用)正则表达式,我认为这是一个耻辱,因为在

用Python写一个简单的商品管理系统_python商品信息管理系统_犇犇先生的博客-程序员秘密

##用Python写一个简单的商品管理系统具体的代码#商品信息管理系统#实现功能:录入,查询,修改,下架,列出所有商品,退出系统print("欢迎使用商品管理系统")infos = []#用来装商品信息,创建一个列表while True: print("*************") print("1、录入商品信息") print("2、查询商品信息") print("3、修改商品信息") print("4、下架某个商品") print("5

随便推点

JavaScript基础教程之flag的用法_js flag_monkeyfly007的博客-程序员秘密

Write By Monkeyfly以下内容均为原创,如需转载请注明出处。前提今天学习了DOM基础方面的知识,可谓是收获颇丰。在重新认真学习JavaScript的过程,对比第一次学习而言,体会就是不一样。虽然整体感觉轻松了许多,但书中还是有很多细小琐碎的知识点值得思索和推敲。在我看来,有一本优秀的入门教程书是多么的重要,因为它不但会提升我学习的兴趣,而且可以促进我更快地学习和掌握知

simulink中S函数格式_simulink的flag_Stars_WW的博客-程序员秘密

意义s函数是system Function的简称,用它来写自己的simulink模块,用来实现simulink中无法直接提供的模块。s函数可以利用matlab的丰富资源,而不仅仅局限于simulink提供的模块,而用c或c++等语言写的s函数还可以实现对硬件端口的操作。S函数格式在matlab的workspace里打edit sfuntmpl,就可以看到matlab自己提供的s函数模板。,根...

iOS耗电量测试方法及其数据收集_weixin_33871366的博客-程序员秘密

常用的电量测试方法:硬件测试(硬件要求比较高,成本比较大,这里介绍软件测试方法)软件工具检测几个典型的耗电场景如下:定位,尤其是调用GPS定位网络传输,尤其是非Wifi环境cpu频率内存调度频度后台运行软件工具检测下面介绍通过软件 Instrument 来进行耗电检测。iOS电量测试...

搭建mongodb集群(副本集+分片)_白乔的博客-程序员秘密

白乔原创:副本集+分片集群搭建的完整实例体验副本集的实时备份和故障恢复特性体验分片存储特性

深入理解ES6笔记(八)迭代器(Iterator)与生成器(Generator)_weixin_34148456的博客-程序员秘密

主要知识点:迭代器、生成器、可迭代对象以及for-of循环、迭代器的高级功能以及创建异步任务处理器《深入理解ES6》笔记 目录迭代器(Iterator)迭代器是被设计专用于迭代的对象,带有特定接口。所有的迭代器对象都拥有 next() 方法,会返回一个结果对象。该结果对象有两个属性:对应下一个值的 value ,以及一个布...

The server quit without updating PID file (/usr/local/mysql/data/centos7.pid)._Tim_H小阿飞的博客-程序员秘密

关于此问题,之前搞数据库的时候出现过一次,也不知道当时怎么折腾的,估计也是网上找资料给解决了。郁闷的是,今天启动mysql的时候,又突然出现这个问题,可是我忘记上次怎么解决的了,遂记录一下,方便日后再遇到这情况好解决我只能说,遇到这个情况,就去less /usr/local/mysql/data/centos7.err中看日志,不难看出,问题日志就是这些:160701  8:47:55 I

推荐文章

热门文章

相关标签