详解 傅里叶变换的物理意义

详解 傅里叶变换的物理意义这是一篇辅助理解傅里叶变换的博客,下面如果有不适合或错误的表达,请大家在评论区给我留言,我一定积极修改。一、傅里叶分析关于任意函数的傅里叶变换频域(频率,振幅、相位三维正交)图像,韩同学给出一个形象的解释,这里借用韩同学的图片准确表达一下,一个函数的傅里叶级数展开如下式,二、傅里叶变换在了解了时域与频域的空间特征后,那我们再来看下傅里叶变换,这里可以看潘工的文章,潘工有趣的引入了:简单→分解→正交→内积思想,并提出函数之间内积(投影)的定义,,其中g表示共轭。e^ix本质上是一个单位圆,则原

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

这是一篇辅助理解傅里叶变换的博客,下文中如果有不适合或错误的表达,请大家在评论区给我留言,我一定积极修改。

一、傅里叶级数

下图所示的方波的组成在傅里叶级数介绍中随处可见,那么我们就先看一下方波的形成,每一个向量以固定的整数频率旋转,当计算从投到尾向量和时就能画出方波图形,通过调整初始向量的大小与角度,我们就可以画出任意图形
方波形成
其中含有初始大小与角度的复傅里叶级数通式表示为:   C n = ∫ 0 1 e − 2 π i n t f ( t ) d t   \ C_n = \int_{0} ^{1} {e^{-2\pi int} f(t) dt} \,  Cn=01e2πintf(t)dt

那傅里叶级数是如何引出的呢?我们都知道傅里叶级数是傅里叶在求热传导和弦振动时得到,他把任何初始状态的热分布看作是一系列三角函数线性的叠加
  f ( t ) = a 0 + ∑ n = 1 ∞ a 1 c o s ( n w t ) + b 1 s i n ( n w t )   \ f(t) = a_0+ \sum_{n=1}^\infty {a_1cos(nwt)+b_1sin(nwt)} \,  f(t)=a0+n=1a1cos(nwt)+b1sin(nwt)
其中的傅里叶级数   a n = 2 T ∫ n = 1 + ∞ f ( t ) c o s ( n w t ) d t   \ a_n = \frac{2}{T} \int_{n=1 }^{ + \infty } {f(t)cos(nwt)dt} \,  an=T2n=1+f(t)cos(nwt)dt ,   b n = 2 T ∫ n = 1 + ∞ f ( t ) c o s ( n w t ) d t   \ b_n = \frac{2}{T}\int_{n=1 }^{ + \infty } {f(t)cos(nwt)dt} \,  bn=T2n=1+f(t)cos(nwt)dt
那傅里叶级数与复傅里叶级数关系   C n = a n 2 + i b n 2   \ C_n = \frac{a_n}{2} + i\frac{b_n}{2} \,  Cn=2an+i2bn

复平面是为了引入旋转所定义的平面,复指数(傅里叶级数的精髓) e i t e^{it} eit 则表示每秒一个单位的绕单位圆旋转,正弦函数通过与朝向相反的旋转向量(复指数)建立关系   s i n ( t ) = e i t + e − i t 2 i   \ sin(t) = \frac {e^{it} + e^{-it}}{2i} \,  sin(t)=2ieit+eit;复指数 e i 2 π t e^{i2\pi t} ei2πt则表示一秒钟所经过一次圆路程的向量, e i n 2 π t e^{in2\pi t} ein2πt表示所经过了n次圆路程的向量, C n e i n 2 π t C_ne^{in2\pi t} Cnein2πt表示每个复数的长度与方向。
经上,原函数本身可表示为:   f ( t ) = ∑ n = − ∞ + ∞ C n e i 2 π t   \ f(t) = \sum_{ n= -\infty}^{ + \infty } {C_n e^{i2\pi t}} \,  f(t)=n=+Cnei2πt,其中   C 1 = ∫ 0 1 f ( t ) d t   \ C_1 = \int_{0} ^{1} { f(t) dt} \,  C1=01f(t)dt,当对 ∫ 0 1 C n e i n 2 π t d t \int_{0} ^{1} C_ne^{in2\pi t}dt 01Cnein2πtdt进行计算时,n次圆路程的向量和为0,故只剩下没有旋转的常数 C n C_n Cn;那计算其他的复傅里叶级数加上若干个圆旋转向量 C n = ∫ 0 1 C n e i n 2 π t e − i n 2 π t d t   C_n = \int_{0} ^{1} { C_ne^{in2\pi t} e^{-in2\pi t}dt} \, Cn=01Cnein2πtein2πtdt,使 C n C_n Cn没有旋转求得;
在这里插入图片描述
上述三角函数还可以这样表达   f ( t ) = C 0 + ∑ n = 1 + ∞ C n s i n ( n w t + ψ n )   \ f(t) = C_0 + \sum_{ n=1 }^{ + \infty } {C_nsin(nwt+\psi_n)} \,  f(t)=C0+n=1+Cnsin(nwt+ψn),那么影响函数样式的参数都列在上式中: C n C_n Cn表示振幅、 w w w表示角频率、 ψ n \psi_n ψn表示当前角频率的初始相位。这里韩同学给出一个形象的表达(频率,振幅、相位三维正交),你是否理解更加深刻了呢!
方波的傅里叶级次在频率,振幅、相位上的内积(投影)

二、傅里叶变换

我们从傅里叶级数(周期函数)入手,一个信号能够分开成离散的无限多的正弦波;那傅里叶变换(不必周期)是乘以一个频率从负无穷到正无穷连续的复指数,转换为一个在频域的连续信号。
我们在回过头来看一下傅里叶变换的公式   F ( w ) = ∫ − ∞ + ∞ f ( t ) e − i n w t d t   \ F(w) =\int_{ – \infty }^{ + \infty } {f(t)e^{-inwt}dt} \,  F(w)=+f(t)einwtdt,其中   e − i w t   \ {e^{-iwt}} \,  eiwt表示缠绕着圆顺时针旋转一圈的向量,时间 t 表示旋转的时间,频率   n w   \ {nw} \,  nw表示旋转的快慢,求和取平均表示着旋转过程中所有向量的和的平均;当旋转的快慢依次给予时,原函数围绕圆旋转的样子也不一样,当原函数中含有此时旋转的频率时,缠绕的波形就会呈现峰与谷分离的现象,是比较容易求得,这也是三角函数正交特性(乘上一个函数中存在频率的共轭复指数,使得旋转为0),此时图形质心(所有向量的和的平均)就是这个频率的振幅。B站大神up关于FT变换的解释

正交定义:   < f , g > = ∫ − ∞ + ∞ f × g ^   \ <f,g> =\int_{ – \infty }^{ + \infty } {f} \times {\hat g} \,  <f,g>=+f×g^
  F ( n ) = < f ( t ) , e i n w t > = ∫ n = 1 ∞ f ( t ) e − i n w t d t   \ F(n) = <f(t),e^{inwt}>= \int_{n=1}^\infty {f(t)e^{-inwt}}dt \,  F(n)=<f(t),einwt>=n=1f(t)einwtdt

在这种内积的定义下是一族正交基,更深刻的数学知识可以证明,在一定条件下,它不仅是正交的,还是完备的,也就是说,只要满足一定的条件,任何函数都可以用   e − i n w t   \ {e^{-inwt}} \,  einwt叠加出来。
原函数f(t)可由F(w)与基 e i w t e^{iwt} eiwt叠加而成(表述为傅里叶逆变换)
  f ( t ) = ∑ n = − ∞ ∞ C n e i n w t = 1 T ∫ n = − ∞ ∞ F ( w ) e i n w t d n w \ f(t) = \sum_{n=-\infty}^\infty {C_ne^{inwt}}= \frac{1}{T}\int_{n=-\infty}^\infty {F(w)e^{inwt}}dnw  f(t)=n=Cneinwt=T1n=F(w)einwtdnw

三、离散化傅里叶变换DFT

傅里叶级数与傅里叶变换是处理连续的系统,但是我们的数字化设备中只能用离散化的数字信号来表示连续的模拟信号,这就要求采样连续的信号变成离散的信号(DTFT离散时间傅里叶变换)才能进行处理,但是频域的频率也是连续的,如何使得变换后的频率也能用离散表示呢。这里就要提到离散傅里叶变换DFT,使用周期性离散信号的傅里叶级数(将无限长的离散信号截断成N个采样点,然后将这N个采样点进行周期延拓)。

连续周期信号的傅里叶级数: C n = 1 T ∫ 0 T f ( t ) e − j 2 π T n t d t C_n = \frac1{T}\int_0^T f(t)e^{ -j\frac{2\pi}{T}nt}dt Cn=T10Tf(t)ejT2πntdt
对连续信号 x ( t ) x(t) x(t)进行周期为 T s T_s Ts抽样 N N N δ ( t − n T s ) \delta(t-nT_s) δ(tnTs)
则一个周期内表达式为 x s ( t ) = x ( t ) ∑ 0 N − 1 δ ( t − n T s ) x_s(t)=x(t)\sum_0^{N-1}\delta(t-nT_s) xs(t)=x(t)0N1δ(tnTs),可得离散周期信号的傅里叶级数为: C [ j k w ] = 1 T ∫ − T 2 T 2 x ( t ) ∑ n = 0 N − 1 δ ( t − n T s ) e − j 2 π T k t d t C[jkw]=\frac1T{\int_{-\frac T2}^{\frac T2}x(t)\sum_{n=0}^{N-1}\delta(t-nT_s)e^{-j{\frac{2\pi}T}kt}}dt C[jkw]=T12T2Tx(t)n=0N1δ(tnTs)ejT2πktdt
调整一下顺序: C [ j k w ] = 1 T ∑ n = 0 N − 1 ∫ − T 2 T 2 x ( t ) δ ( t − n T s ) e − j 2 π T k t d t C[jkw]=\frac1T\sum_{n=0}^{N-1}{\int_{-\frac T2}^{\frac T2}x(t)\delta(t-nT_s)e^{-j{\frac{2\pi}T}kt}}dt C[jkw]=T1n=0N12T2Tx(t)δ(tnTs)ejT2πktdt
由于冲击函数的筛选性质,上式很容易离散化,显然, T = N T s T=NT_s T=NTs,即 t = n T S t=nT_S t=nTS,积分号内只有采样点 ∑ n = 0 N − 1 n T s \sum_{n=0}^{N-1}nT_s n=0N1nTs被保留下来,故
C [ j k w ] = 1 N T s ∑ n = 0 N − 1 x ( n T s ) e − j 2 π N T s k n T s = 1 N T s ∑ n = 0 N − 1 x [ n ] e − j 2 π N T s k n C[jkw]=\frac1{NT_s}\sum_{n=0}^{N-1}{x(nT_s)e^{-j{\frac{2\pi}NT_s}knT_s}}=\frac1{NT_s}\sum_{n=0}^{N-1}{x[n]e^{-j{\frac{2\pi}NT_s}kn}} C[jkw]=NTs1n=0N1x(nTs)ejN2πTsknTs=NTs1n=0N1x[n]ejN2πTskn
C [ j k w ] ∙ T s = C [ k ] C[jkw]\bullet Ts=C[k] C[jkw]Ts=C[k] C [ k ] = 1 N ∑ n = 0 N − 1 x [ n ] e − j 2 π N T s k n C[k]=\frac1N\sum_{n=0}^{N-1}{x[n]e^{-j{\frac{2\pi}NT_s}kn}} C[k]=N1n=0N1x[n]ejN2πTskn,这就是DFT变换,我们取值在 0 ≤ k < N − 1 0\le k<N-1 0k<N1中, k w = k 2 π T = k 2 π N T s = 2 π f s k N kw = k\frac{2\pi}T =k\frac{2\pi}{NTs}=2\pi f_s\frac kN kw=kT2π=kNTs2π=2πfsNk

其中离散傅里叶变换后的第 k k k个频率是 f k = k N f s f_k=\frac kN f_s fk=Nkfs。常用的fft本质就是DFT,只不过使用了一种简化算法。

最后提一下潘工的专栏,读之受益匪浅。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210128.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 触发器创建删除等操作

    一、创建一个简单的触发器触发器是一种特殊的存储过程,类似于事件函数,SQLServer™允许为INSERT、UPDATE、DELETE创建触发器,即当在表中插入、更新、删除记录时,触发一个或

    2021年12月24日
    45
  • windows下安装mysql

    windows下安装mysql

    2021年11月27日
    76
  • 详细SpringBoot教程之Web开发(一)

    写在前面鉴于有人留言说想要学习SpringBoot相关的知识,我这里打算写一个SpringBoot系列的相关博文,目标呢是想让看了这一系列博文的同学呢,能够对SpringBoot略窥门径,这一系列的博文初步都定下来包括SpringBoot介绍、入门、配置、日志相关、web开发、数据访问、结合docker、缓存、消息队列、检索、任务安全、分布式等等一系列的博文,工作量很大,是个漫长的过程,每一步我…

    2022年4月14日
    41
  • ubuntu ll命令[通俗易懂]

    ubuntu ll命令[通俗易懂]用过Redhat的朋友应该很熟悉ll这个命令,就相当于ls-l,但在Ubuntu中就不行了。严格来说ll不是一个命令,只是命令的别名而已。很多Linux用户都使用bashshell,对普通用户来说用得最多的就是命令补全(按tab键)和alias(别名)功能。Ubuntu默认建立的用户都用的bashshell,所以它也支持别名功能,我们只需要gedi

    2022年9月24日
    0
  • SQL查询左连接、右连接、内连接[通俗易懂]

    1、左连接的定义:是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。下边以A表和B表为例子,A、B之间的左连接条件为:ano=bno;查询语句为:SELECT*FROM`A`LEFTJOINB ONano=bno;eg1:A表中的只有1条记录,B表中2条记录…

    2022年4月5日
    120
  • restlet入门搭建hello world[通俗易懂]

    restlet入门搭建hello world[通俗易懂]最近研究rest接口,发现restlet应用挺广泛,不过入门资料很少,去官网下载jar包,根据官网说明搭建了一个简单的restlet工程:1、首先导入jar包org.restlet.jarorg

    2022年8月1日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号