我们先回忆一下DFT

F‾[m]=Ff‾[m]=∑k=0N−1f‾[k]e−2πimkN(1)\underline{F}[m] = \underline{\mathscr{F}f}[m] = \sum_{k=0}^{N-1} \underline{f}[k]e^{-2\pi i\frac{mk}{N}}\tag1F​[m]=Ff​[m]=k=0∑N−1​f​[k]e−2πiNmk​(1)

我们给出离散傅里叶逆变换

F−1f‾[m]=1N∑k=0N−1f‾[k]e2πimkN(2)\huge\underline{\mathscr{F}^{-1}f}[m] = \frac{1}{N} \sum_{k=0}^{N-1} \underline{f}[k]e^{2\pi i\frac{mk}{N}}\tag2F−1f​[m]=N1​k=0∑N−1​f​[k]e2πiNmk​(2)

对于这个式子,我们最想问的问题是为什么它比连续傅里叶变换多了一个系数 1N\frac{1}{N}N1​


为了解答这个问题,我们先改写一下DFT与inverse DFT

我们定义向量 ω\omegaω 为:

ω‾[m]=e2πimN\underline{\omega}[m] = e^{2\pi i\frac{m}{N}}ω​[m]=e2πiNm​

即,

ω‾=(1,e2πi1N,e2πi2N,…,e2πiN−1N)(3)\huge\underline{\omega} = (1, e^{2\pi i\frac{1}{N}}, e^{2\pi i\frac{2}{N}}, \dots, e^{2\pi i\frac{N-1}{N}})\tag3ω​=(1,e2πiN1​,e2πiN2​,…,e2πiNN−1​)(3)

并将变量 kkk 写为 nnn,那么 (1)(1)(1) 式就可以改写为:

F‾[m]=∑n=0N−1f‾[n]ω‾−n[m]\underline{F}[m] = \sum_{n=0}^{N-1} \underline{f}[n] \underline{\omega}^{-n}[m]F​[m]=n=0∑N−1​f​[n]ω​−n[m]

或者更一般地( (2)(2)(2) 式同理),

Ff‾=∑n=0N−1f‾[n]ω‾−n(4)\huge\underline{\mathscr{F}f} = \sum_{n=0}^{N-1} \underline{f}[n] \underline{\omega}^{-n}\tag4Ff​=n=0∑N−1​f​[n]ω​−n(4)

F−1f‾=1N∑k=0N−1f‾[n]ω‾n(5)\huge\underline{\mathscr{F}^{-1}f} = \frac{1}{N} \sum_{k=0}^{N-1} \underline{f}[n] \underline{\omega}^{n}\tag5F−1f​=N1​k=0∑N−1​f​[n]ω​n(5)

ω\omegaω可以看作是向量,也可以看作是离散复指数

那么类比于连续傅里叶变换(傅里叶级数)中对复指数的讨论,离散复指数又有怎样的特点呢?

对于 <wk,wl><w^k, w^l><wk,wl>

<wk,wl>=∑n=0N−1wk[n]wl[n]‾=∑n=0N−1e2πiknNe−2πilnN=∑n=0N−1e2πi(k−l)nN=∑n=0N−1(e2πi(k−l)N)n(6)\begin{aligned} <w^k, w^l> &= \sum_{n=0}^{N-1} w^k[n] \overline{w^l[n]}\\ &= \sum_{n=0}^{N-1} e^{2\pi i\frac{kn}{N}} e^{-2\pi i\frac{ln}{N}}\\ &= \sum_{n=0}^{N-1} e^{2\pi i\frac{(k-l)n}{N}}\\ &= \sum_{n=0}^{N-1} \left( e^{2\pi i\frac{(k-l)}{N}} \right)^n\tag6 \end{aligned}<wk,wl>​=n=0∑N−1​wk[n]wl[n]​=n=0∑N−1​e2πiNkn​e−2πiNln​=n=0∑N−1​e2πiN(k−l)n​=n=0∑N−1​(e2πiN(k−l)​)n​(6)

  1. 我们来看看当 k≠lk\neq lk​=l 时,即求离散复指数的内积。我们发现 (6)(6)(6) 式是一个等比数列的求和,因此利用等比数列求和公式,有

<wk,wl>=1⋅(1−(e2πi(k−l)N)N)1−e2πi(k−l)N=1−e2πi(k−l)1−e2πi(k−l)N\begin{aligned} <w^k, w^l> &= \frac{1\cdot \left(1-\left( e^{2\pi i\frac{(k-l)}{N}} \right)^N\right)}{1 - e^{2\pi i\frac{(k-l)}{N}}}\\ &= \frac{1- e^{2\pi i (k-l)}}{1 - e^{2\pi i\frac{(k-l)}{N}}} \end{aligned}<wk,wl>​=1−e2πiN(k−l)​1⋅(1−(e2πiN(k−l)​)N)​=1−e2πiN(k−l)​1−e2πi(k−l)​​

显然当 k≠lk \neq lk​=l 时,由于kkk,lll均为整数,故 e2πi(k−l)=1e^{2\pi i (k-l)} = 1e2πi(k−l)=1,从而

<wk,wl>=0,k≠l<w^k, w^l> = 0, k\neq l<wk,wl>=0,k​=l

  1. 当$ k = l $时,即求离散复指数的模长。我们发现 (6)(6)(6) 式的每一项都为 111,因此

<wk,wk>=∑n=0N−11=N<w^k, w^k> = \sum_{n=0}^{N-1} 1 = N<wk,wk>=n=0∑N−1​1=N

也可以写成

∣∣wk∣∣22=N||w^k||_2^2 = N∣∣wk∣∣22​=N

即离散复指数的长度为 N\sqrt{N}N​

证明到这里,我们就可以看出离散复指数和连续(或级数)复指数的一个很大的不同,在之前的文章中,我们说过,傅里叶变换相当于从一个标准正交坐标系映射到另一个标准正交坐标系的过程,是orthonormalorthonormalorthonormal的;而DFT则不同,它的变换取决于取的采样点的数量,它是正交的但不是归一化的,是orthogonalorthogonalorthogonal的。


接下来我们验证一下离散傅里叶逆变换的正确性

F−1Ff‾[n]=1N∑m=0N−1Ff‾[m]e2πimnN=1N∑m=0N−1∑k=0N−1f‾[k]e−2πimkNe2πimnN=1N∑k=0N−1f‾[k]∑m=0N−1(e2πin−kN)m\begin{aligned} \underline{\mathscr{F}^{-1}\mathscr{F}f}[n] &=\frac{1}{N} \sum_{m=0}^{N-1} \underline{\mathscr{F}f}[m] e^{2\pi i\frac{mn}{N}} \\ & = \frac{1}{N} \sum_{m=0}^{N-1} \sum_{k=0}^{N-1} \underline{f}[k]e^{-2\pi i\frac{mk}{N}} e^{2\pi i\frac{mn}{N}} \\ & = \frac{1}{N} \sum_{k=0}^{N-1} \underline{f}[k] \sum_{m=0}^{N-1} \left( e^{2\pi i\frac{n-k}{N}} \right)^m\\ \end{aligned}F−1Ff​[n]​=N1​m=0∑N−1​Ff​[m]e2πiNmn​=N1​m=0∑N−1​k=0∑N−1​f​[k]e−2πiNmk​e2πiNmn​=N1​k=0∑N−1​f​[k]m=0∑N−1​(e2πiNn−k​)m​

根据前文证明的正交性可知,仅当 n=kn=kn=k 时 (e2πin−kN)m=1\left( e^{2\pi i\frac{n-k}{N}} \right)^m =1(e2πiNn−k​)m=1,其余情况均为 000,故

F−1Ff‾[n]=1Nf‾[n]∑m=0N−11=f‾[n]\begin{aligned} \underline{\mathscr{F}^{-1}\mathscr{F}f}[n] &= \frac{1}{N} \underline{f}[n] \sum_{m=0}^{N-1} 1 \\ &= \underline{f}[n] \end{aligned}F−1Ff​[n]​=N1​f​[n]m=0∑N−1​1=f​[n]​

不难发现,正是因为离散复指数的模长为 N\sqrt NN​,才导致了离散傅里叶逆变换中出现了系数 NNN。


最后,我们应该把DFT的输入、输出都看作是周期为 NNN 的信号(或把它们看作进行了以 NNN 为周期的周期延拓的信号)

简单证明一下:

ω[m+N]‾=e2πim+NN=e2πimN=ω[m]‾\underline{\omega[m + N]} = e^{2\pi i \frac{m+N}{N}} = e^{2\pi i \frac{m}{N}} = \underline{\omega[m]}ω[m+N]​=e2πiNm+N​=e2πiNm​=ω[m]​

Ff[m+N]‾=∑n=0N−1f‾[n]ω[m+N]‾−n=∑n=0N−1f‾[n]ω[m]‾−n=Ff[m]‾\underline{\mathscr{F}f[m+N]} = \sum_{n=0}^{N-1} \underline{f}[n] \underline{\omega[m+N]}^{-n} = \sum_{n=0}^{N-1} \underline{f}[n] \underline{\omega[m]}^{-n} = \underline{\mathscr{F}f[m]} Ff[m+N]​=n=0∑N−1​f​[n]ω[m+N]​−n=n=0∑N−1​f​[n]ω[m]​−n=Ff[m]​

同理可证逆DFT

因此,f‾\underline{f}f​,Ff‾\underline{\mathscr{F}f}Ff​都应被看作周期为NNN的离散信号

[EE261学习笔记] 13.离散傅里叶逆变换及离散傅里叶变换的一些性质相关推荐

  1. mybatis学习笔记(13)-延迟加载

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...

  2. opencv进阶学习笔记13:图像形态学操作大全(膨胀,腐蚀,开闭,黑帽,顶帽,梯度)python版

    基础版学习笔记: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 基础版形态学: opencv学 ...

  3. Linux学习笔记13

    Linux学习笔记13 Linux学习笔记13 配置Nagios 基本介绍 Nagios安装 - 服务端 Nagios安装 - 客户端 监控中心添加被监控主机 配置文件的简单说明 继续添加需要服务端通 ...

  4. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    Hadoop学习笔记-13.分布式集群中节点的动态添加与下架 开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如 ...

  5. 台大李宏毅Machine Learning 2017Fall学习笔记 (13)Semi-supervised Learning

    台大李宏毅Machine Learning 2017Fall学习笔记 (13)Semi-supervised Learning 本博客参考整理自: http://blog.csdn.net/xzy_t ...

  6. java 量化指标_量化投资学习笔记13——各种指标的绘图、计算及交易策略

    <量化投资:以python为工具>第五部分笔记 先来画k线图,要注意finance模块已经从matplotlib库中去除,现在要用mpl_finance库,单独安装. 其中有candles ...

  7. 【计算机网络学习笔记13】交换技术(下)

    [计算机网络学习笔记13]交换技术(下) 一.生成树的诞生和发展 1. 环路问题 两个网桥之间的连接网线如果只有一根,而这根网线或者接口有问题,网络就会出现单点故障.所以为了提高可靠性,网桥在互连时一 ...

  8. R语言小白学习笔记13—基本统计

    R语言小白学习笔记13-基本统计 笔记链接 学习笔记13-基本统计 13.1 概括性统计量 13.2 相关系数和协方差 13.3 t-检验 13.3.1 单样本t检验 13.3.2 两样本t检验 13 ...

  9. Excel VBA 学习笔记13:单元格的格式

    Excel VBA 学习笔记13:单元格的格式 NumberFormat 属性 (Excel) vba excel 单元格格式设置 Excel VBA 单元格格式 python解决SNIMissing ...

最新文章

  1. 总结|ORB_SLAM2源码中字典使用细节
  2. Stimulsoft Reports.Net基础教程(十):创建图表报表②
  3. 你真的了解WebSocket吗?
  4. 分布式实时计算—Spark—Spark Core
  5. 中石油训练赛 - 招待(思维)
  6. nil 与 release
  7. 学习ASP.NET Core,怎能不了解请求处理管道[1]: 中间件究竟是个什么东西?
  8. 利用envi对landsat8数据进行处理
  9. python发送excel文件_Python操作Excel, 开发和调用接口,发送邮件
  10. 终于有人把Knative讲明白了
  11. python实现概率论与数理统计_【总目录】——概率论与数理统计及Python实现
  12. 卷积神经网络学习路线(十三)| CVPR2017 Deep Pyramidal Residual Networks
  13. c语言句子首单词大写,C语言单词开头大写.docx
  14. 《京东话费充值系统架构演进实践》阅读笔记
  15. 在 Windows10 系统中安装 Homestead 本地开发环境
  16. 美国国土安全部仍然使用COBOL语言
  17. WinHttp.WinHttpRequest.5.1
  18. MATLAB中不用循环生成圆盘(圆形)/圆环掩膜矩阵
  19. 新人必学必会的 Linux 命令!
  20. [AGC018F] Two Trees

热门文章

  1. bi产品有哪些,商业智能产品
  2. 如何用计算机巧记英语词汇,小学英语单词巧记法
  3. CSS浮动-5.1浮动比较重要-使用folat属性来设置元素的浮动-left-right-none
  4. Windows PowerShell 使用SDKMAN
  5. windows防火墙是干什么的_请教个人防火墙是做什么用的,
  6. GitHub 又一黑科技项目面世!网友惊呼:这也太强了
  7. Android应用开发编译框架流程与IDE及Gradle概要
  8. 安装Tomcat 9
  9. 漫画:设计模式六大原则(上)
  10. linux连接小米随身wifi密码忘记了,小米路由器无线密码(wifi密码)忘记了怎么办?...