傅里叶变换相关公式

傅里叶变换相关公式傅里叶变换公式

大家好,又见面了,我是你们的朋友全栈君。

在学习高数的时候,就接触了傅里叶变换。也就记得是将一些周期函数表示成一系列三角函数的叠加,不是很理解这个变换的具体意义,就是觉的挺神奇的,可以求一些特殊的积分什么之类的。
到了学习信号与系统的时候,离散序列也可以傅里叶变换,还有一个叫离散傅里叶变换,那时学得很草,考完试之后都混在一起,不知道谁是谁了。

关于什么是傅里叶变化,网上有很多大佬写的很好。这里我也不打算科普(毕竟墨水不多,想吐也吐不出来),主要目的还是方便自己日后复习,省去翻书查看公式。

粗略地介绍下,傅里叶转化具体可以包含3个大类:

  1. CTFS和CTFT 连续(C)时间(T)傅里叶(F)系数(S)/ 变换(T)
  2. DTFS和DTFT 离散(D)时间(T)傅里叶(F)系数(S)/ 变换(T)
  3. DFS和DFT 离散(D)傅里叶(F)系数(S)/ 变换(T)

这些英文缩写值得记忆的,也能够帮助我们好好理解。

连续时间傅里叶系数/变换

周期的连续信号的CTFS

对象:连续的周期信号\(f(t)\),同时得满足Dirichlet条件[1]
表达公式

  • 三角形式(高数学的)
\[\begin{aligned} f(t) &= a_0 + \sum_{k=1}^{\infty}(a_n \cos{k\Omega t}+b_n\sin{k\Omega t})\\ a_0 &= \frac{1}{T} \int_{-T/2}^{T/2}f(t)dt\\ a_k &= 2\cdot\frac{1}{T}\int_{-T/2}^{T/2}f(t)\cos{n\Omega t}dt\\ b_k &= 2\cdot\frac{1}{T}\int_{-T/2}^{T/2}{f(t)\sin{n\Omega t}}dt\\ \end{aligned} \]

  • 复指数形式(更加通用形式)

    \[\begin{aligned} f(t) &= \sum_{n=-\infty}^{\infty}F_n e^{jn\Omega t}\\ F_n &= \frac{1}{T}\int_{-T/2}^{T/2}f(t)e^{-jn\Omega t}dt\\ \end{aligned} \]

    两种形式可以相互转化,当\(n > 0\)的时候,\(F_n = \frac{1}{2}(a_n – jb_n)\);当\(-n < 0\)时,\(F_{-n} = \frac{1}{2}(a_n + jb_n)\)。此式当\(n=0\)\(F_0 = a_0\)

非周期的连续信号的CTFT

对象:非周期的连续信号,同样得满足Dirichlet条件
表达公式
设对一个非周期的连续信号\(f(t)\)DTFT记为\(\mathscr F[f(t)]\),则有

\[\begin{aligned} F(w)=\mathscr{F}[f(t)] &= \int_{-\infty}^{\infty} f(t) e^{-jwt} dt\\ \mathscr{F}^{-1}[F(w)] &= \frac{1}{2\pi}\int_{-\infty}^{\infty} F(w)e^{jwt}dw \end{aligned} \]

推导
基本的思路是用一个周期无限长的信号来代替非周期信号,当周期足够长时可以忽略这种近似带来的影响。

  1. 假设\(f(t)\)是一个有限的连续非周期信号,对它进行一个周期延拓得到一个周期函数\({f_T(t)}\)

  2. \({f_T(t)}\)进行DTFS,有\(\displaystyle f_T(t) = \sum_{n=-\infty}^{\infty}F_n e^{jn\Omega t}\),而\(\displaystyle F_n = \frac{1}{T}\int_{-T/2}^{T/2}f(t)e^{-jn\Omega t}dt=\frac{1}{T}F(n\Omega)\)

  3. \(T\to +\infty\)时,这种用”无限的周期信号“近似代替”有限的非周期信号“的影响就会越小,此时\(\Omega=\frac{2 \pi}{T}\to 0\),可记为一个微分\(\Delta w\),同时\(n\Delta w\)可以看出一个连续量\(w\),累加运算转化为积分运算,于是有

    \[\begin{aligned} f(t) &= \lim_{T\to +\infty} f_T(t)\\ &= \lim_{T\to +\infty} \sum_{n=-\infty}^{\infty}F_n e^{jn\Omega t}\\ &= \lim_{T\to +\infty} \sum_{n=-\infty}^{\infty} \frac{\Delta w}{2\pi}F(n\Delta w) e^{j\Delta w t}\\ &= \frac{1}{2\pi}\int_{-\infty}^{\infty} F(w)e^{jwt}dw\\ F(w) &= \lim_{T\to +\infty} \int_{-T/2}^{T/2}f(t)e^{-jn\Omega t}dt\\ &= \lim_{T\to +\infty} \int_{-T/2}^{T/2} f(t) e^{-jwt} dt\\ &= \int_{-\infty}^{\infty} f(t) e^{-jwt} dt\\ \end{aligned} \]

也就是说,求一个信号\(f(t)\)的频谱\(F(w)\),实际上与频率/旋转因子\(e^{-jwt}\)做一个积分,积分对象是时域上的\(t\);反变换同样也是一个积分,积分对象是频域上的\(w\)

周期信号的DTFT
周期信号的DTFT的推导需要用到一个傅里叶变换对\(\mathscr F(e^{jw_0t})=2\pi \delta(w-w_0)\),则有

\[\begin{aligned} \mathscr{F}[f_T(t)] &= \mathscr{F}\Big( \sum_{n=-\infty}^{\infty}F_n e^{jn\Omega t}\Big)\\ &= \sum_{n=-\infty}^{\infty}F_n \mathscr{F}(e^{jn\Omega t})\\ &= 2\pi \sum_{n=-\infty}^{\infty}F_n \delta(w-n\frac{2\pi}{T}) \end{aligned} \]

可见,有周期的连续信号在频域上是一系列的冲激函数之和,即在频域上是离散的。

离散时间傅里叶系数/变换

周期序列的DTFS

对象:周期的离散序列,无限长的序列必须绝对可和(和收敛)
表达公式:用一系列周期的复指数信号之和表示周期的离散序列

\[\begin{aligned} x_N(n) &= \sum_{k=<N>} a_k e^{jk\frac{2\pi}{N}n}\\ a_k &= \frac{1}{N}\sum_{n=<N>} x_N(n) e^{-jk\frac{2\pi}{N}n} \end{aligned} \]

其中\(a_k\)即为离散时间傅里叶系数(DTFS),注意符号\(\displaystyle\sum_{n=<N>}\)表示的是序列长度为\(N\),但是起点可以任意起,通常我们取\(n=0,1, \cdots ,N-1\)。值得注意的是,\(a_k\)也是周期的,也是离散的

复指数函数一定是周期函数,但是复指数序列\(e^{j\Omega n}\)不一定是周期序列,易证当\(\Omega\)\(2\pi\)的有理数倍的时候才为周期序列。

非周期序列的DTFT

对象:有限长的非周期序列
表达公式
设一有限的离散非周期序列的DTFT为\(\mathscr{F}[x(n)]\),则有

\[\begin{aligned} \mathscr{F}[x(n)] &= \sum_{n=-\infty}^{\infty} x(n)e^{-jwn}\\ \mathscr{F}^{-1}[X(w)] &= \frac{1}{2\pi}\int_{2\pi} X(w)e^{jwn}dw\\ \end{aligned} \]

因为\(x(n)\)是有限长度的,因此它的DTFT是复指数函数之和,也是一个连续的周期函数。与CTFT不同的是,DTFT是累加运算,但IDTFT仍是积分,但限制在\(2\pi\)的区间内。
推导
与周期信号的思路一致,用无限周期的离散序列来近似代替有限的非周期离散序列。

  1. 设一个有限的非周期序列\(x(n)\),进行周期延扩得到\(x_N(n)\)

  2. \(x_N(n)\)进行DTFS,有\(\displaystyle x_N(n) = \sum_{k=-N/2}^{N/2-1} a_k e^{jk\frac{2\pi}{N}n}\),其中\(\displaystyle a_k = \frac{1}{N}\sum_{n=-N/2}^{N/2-1} x_N(n) e^{-jk\frac{2\pi}{N}n}=\frac{1}{N}X(\Omega k)\)

  3. \(N\to +\infty\)\(\Omega = \frac{2\pi}{N}\to 0\)可记为微分\(\Delta w\),离散量\(\Delta w k\)变为连续量\(w\),累加变为积分,即

    \[\begin{aligned} x(n) &= \lim_{N\to+\infty}x_N(n)\\ &= \lim_{N\to+\infty}\sum_{k=-N/2}^{N/2-1} a_k e^{jk\Omega n}\\ &= \lim_{N\to+\infty}\sum_{k=-N/2}^{N/2-1} \frac{\Delta w}{2\pi}X(\Delta w k) e^{jk\Omega n}\\ &= \frac{1}{2\pi}\int_{2\pi} X(w)e^{jwn}dw\\ X(w) &= \lim_{N\to+\infty}\sum_{n=-N/2}^{N/2-1} x_N(n) e^{-jk\Omega n}\\ &= \sum_{n=-\infty}^{\infty} x(n)e^{-jwn} \end{aligned} \]

周期序列的DTFT
根据变换对\(\mathscr{F}(e^{j\Omega_0 n})=\delta(w – \Omega_0)\),则对于周期序列\(x_N(n)\),有

\[\begin{aligned} \mathscr{F}(x_N(n)) &= \mathscr{F}(\sum_{k=<N>} a_k e^{jk\Omega n})\\ &= \sum_{k=<N>} a_k\mathscr{F}(e^{jk\Omega n})\\ &= \sum_{k=<N>} a_k\delta(w-k\Omega) \end{aligned} \]

可见,周期离散序列的DTFT在频域上是一系列的冲激函数,冲激强度由DFTS的值确定,同时具有周期性。

离散傅里叶系数/变换

实际中我们处理得更多的是离散的、有限长的信号,对离散序列进行DTFT得到的频谱却是连续的,计算机是不能直接进行处理的。在上信号与系统老师一直强调,时域上的离散性对应频域上的周期性,时域上的周期性对应频域上的离散性。因此,有一个很自然的想法,就是对时域上的有限序列进行周期延拓,这样频域上的数据不也是离散的吗?这就是DFT的基本思想,问题的关键是:这种方法好不好呢?准不准呢?

周期序列的DFS

对象:周期序列
说明:DFS可以从DTFS中推导出来,或者说DFS其实是DTFS的另一种形式(多乘了个周期)
表达式

\[X_N(k) = \rm{DFS}(x_N(n))=Na_k = \sum_{n=<N>} x_N(n) e^{-jk\frac{2\pi}{N}n}\\ x_N(n) = \frac{1}{N} \sum_{k=<N>} X_N(k) e^{jk\frac{2\pi}{N}n} \]

非周期序列的DFT

DFT的基本原理

  1. \(x(n)\)进行周期延扩得到\(x_N(n)\),这样时域的周期反映到频域上的离散;

  2. \(x_N(n)\)进行DFS得到\(X_N(k)\),这样时域上的离散反映到频域上的周期;

  3. \(X_N(k)\)一个周期的值,得到的就是DFT,即

    \[X(k)=\rm{DFT}[x(n)] = \sum_{n=0}^{N-1}x(n)e^{-jk\frac{2\pi}{N}n},0 \le k \le N-1\\ x(n) =IDFT[X(k)]= \frac{1}{N} \sum_{n=0}^{N-1} X(k) e^{jk\frac{2\pi}{N}n}, 0 \le n \le N-1\\ \]

    DFT可以看成是一个连续函数在时域上和频域上都被采样,由采样定理可知,当对DFT和离散序列乘以相应的采样函数即可得到原函数,也就是说DFT可以看出CTFT的一个近似。同时,对于一个确定的\(x(n)\)可以唯一延拓成唯一的\(x_N(n)\),因此DFT是惟一的。

总结

傅里叶变换公式


  1. 是指满足绝对可积、有限的极值点和间断点的函数 ↩︎

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154770.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Arduino智能小车设计(一)「建议收藏」

    Arduino智能小车设计(一)「建议收藏」这一个月来距离实验室纳新后,已经过去一个月左右了。听取了学长的建议,这段时间也一直在搞Arduino这个软件,还算不错的认识了这个开源软件。(自我认为。。)但是现在的依旧是一个小萌新,不说在软件代码的掌握程度,现在连有些最基本的硬件的名字也都叫不上来几个。。。不过还好,自己也不是单打独斗,通过和同组成员的讨论也还算是一点一点进步吧。最幸运的是,每次我遇到不会的东西,他们都可以帮我解答。从今天…

    2022年10月17日
  • 芭芭农场自动脚本_农场游戏源码

    芭芭农场自动脚本_农场游戏源码特此声明:此版本校内开心农场外挂由python语言编写,运行平台为linux。本代码是修改网络上流传的源码而成,本人贴出此代码没有任何利益想法,只当学习交流之用,并感谢源码开发者!#!/usr/bin/envpython#encoding:utf-8#2009-8-21升级后importurllib,urllib2,cookielibimporttime,zlib,r

  • Stream流、方法引用

    Stream流、方法引用

  • python pyquery节点内所有文本_PyQuery详解[通俗易懂]

    python pyquery节点内所有文本_PyQuery详解[通俗易懂]在之前写的爬虫入门里,PyQuery一笔带过,这次详细地讲一下。为什么选择PyQuery?Python爬虫解析库,主流的有PyQueryBeautifulsoupScrapySelectors正则表达式。PyQuery和scrapySelectors都是基于lxml模块,而lxml和正则表达式都是C语言写的,只有Beautifulsoup是用纯Python编写的,所以在实测中,Beautifu…

  • 开机就提示“请安装TCP/IP协议,error=10106”的解决的方法

    开机就提示“请安装TCP/IP协议,error=10106”的解决的方法

    2021年11月14日
  • python实现交叉验证_kfold显示不可迭代

    python实现交叉验证_kfold显示不可迭代KFold模块fromsklearn.model_selectionimportKFold为什么要使用交叉验证?交叉验证的介绍交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在…

发表回复

您的电子邮箱地址不会被公开。

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