深度学习开源框架基础算法之傅立叶变换的概要介绍

傅立叶变换时数字信号处理的重要方法之一,是法国数学家傅立叶在1807年在法国科学学会上发表的一篇文章中所提出的,在文章中使用了正弦函数描述温度分布,而且提出了一个著名的论断:任何连续性的周期信号都可以由一组适当的正弦曲线组合而成。而这个论断被当时审查论文的著名数学家拉格朗日所否定,拉格朗日认为正弦函数无法组合成一个个带有棱角的信号,但是从无限逼近的角度考虑,可以使用正弦函数来非常逼近期直到表示方法不存在明显差异,这篇论文最终在在拉格朗日死后15年之久才得以发表。

傅立叶变换的分类

根据信号是是周期性以及连续还是离散的特点,将傅立叶变换进行延伸,变换分为如下四种

另外,根据使用的是实数还是复数,有分为实数傅立叶变换和复数傅立叶变换。

主要特点:FS

用于分析连续周期信号。时域上任意连续的周期信号可以分解为无限多个正弦信号之和,在频域上就表示为离散非周期的信号,即时域连续周期对应频域离散非周期的特点。

主要特点:FT

主要用于分析连续非周期信号,由于信号是非周期的,它必包含了各种频率的信号,所以具有时域连续非周期对应频域连续非周期的特点。

FS和FT 都是用于连续信号频谱的分析工具,都以傅立叶级数理论问基础推导出的。时域上连续的信号在频域上都有非周期的特点,但对于周期信号和非周期信号又有在频域离散和连续之分。

主要特点:DTFT

它用于离散非周期序列分析,根据连续傅立叶变换要求连续信号在时间上必须可积这一充分必要条件,那么对于离散时间傅立叶变换,用于它之上的离散序列也必须满足在时间轴上级数求和收敛的条件;由于信号是非周期序列,它必包含了各种频率的信号,所以DTFT对离散非周期信号变换后的频谱为连续的,即有时域离散非周期对应频域连续周期的特点。

主要特点:DFT

假设了序列的周期无限性,但在处理时又对区间作出限定(主值区间),以符合有限长的特点,这就使DFT带有了周期性。另 外,DFT只是对一周期内的有限个离散频率的表示,所以它在频率上是离散的,就相当于DTFT变换成连续频谱后再对其采样,此时采样频率等于序列延拓后的周期N,即主值序列的个数。

离散傅立叶变换DFT

DFT用于将信号从时域变换为频域,而且时域与频域都是离散的,可以确认出一个信号是由哪些正弦波叠加而成,而这些结果者反应为正弦波的振幅和相位等信息。而至于时域与频域,前者表示的是信号随时间动态变化的关系,在这种分析方式下,往往会随着时间的不同信号呈现不同的状态变化。而频域可以理解为正弦波的振幅,从傅立叶的论断中我们了解到,任何周期函数,都可能是由不同振幅和不同相位与角频率的正弦波的叠加,频域分析的一个主要结果是频谱,常见的频谱有两种:振幅相关的频谱与相位相关的频谱。比如正弦曲线可表示为y=Asin(ωx+φ)+k,具体的实际意义如下所示:

理解辅助:变形的谐波函数

谐波(harmonic wave)是指电流中所含有的频率为基波的整数倍的电量,一般是指对周期性的非正弦电量进行傅里叶级数分解,其余大于基波频率的电流产生的电量。如下可以看出动态的三角函数的图形变换,可以加深对傅立叶论断的理解。

理解辅助:振幅的频谱

而至于如何求取频谱,由于三角函数具有正交性,相互之间不具影响,根据此特性结合下图,对于振幅的频谱则可有直观的了解。而至于初相相关的频谱,可以以此为基础,不难理解。

快速傅立叶变换FFT

FFT(Fast Fourier Transform)实际只是DFT的改善。是1965年由库利和图基共同提出的一种快速计算DFT的方法。这种方法充分利用了DFT运算中的对称性和周期性,从而将DFT运算量从N2减少到N*log2N。当N比较小时,FFT优势并不明显。但当N大于32开始,点数越大,FFT对运算量的改善越明显。比如当N为1024时,FFT的运算效率比DFT提高了100倍。

应用领域和局限

傅立叶变化在很多领域都有很好的应用,比如图像优化和音频降噪等等,但是由于傅立叶变换的模型建立在平稳信号基础上的,对于非平稳信号的分析具有很大的局现性。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 15个顶级开源JavaScript框架和库

    JavaScript 这种语言得到了许多技术领袖的支持,其中一位是WordPress的创始人马特·马伦韦格,他暗示WordPress开发人员应该学习它,清楚地向WordPress社区传递关于它未来重要性的信息.提到这件事很受欢迎.向更好的技术过渡将使WordPress能够跟上未来的挑战. JavaScript的开源立场也是最好的之一.与流行的观点相反,JavaScript不是一个项目,而是一个具有开放标准的规范,在这个规范中,语言是由其核心团队进化和维护的.ECMAScript,JavaScri

  • C语言数据结构算法之实现快速傅立叶变换

    C语言数据结构算法之实现快速傅立叶变换 本实例将实现二维快速傅立叶变换,同时也将借此实例学习用c语言实现矩阵的基本操作.复数的基本掾作,复习所学过的动态内存分配.文件操作.结构指针的函数调用等内容. 很久以来,傅立叶变换一直是许多领域,如线性系统.光学.概率论.量子物理.天线.数字图像处理和信号分析等的一个基本分析工具,但是即便使用计算速度惊人的计算机计算离散傅立叶变换所花费的时间也常常是难以接受的,因此导致了快速傅立叶变换(FFT)的产生. 本实例将对一个二维数组进行正.反快速傅立叶变换.正傅

  • 25个实用酷炫的Android开源UI框架

    最近找了一些合适开源控件,这样在日常工作中会更加省时,再此分享给大家,希望能对大家有帮助,此博文介绍的都是UI上面的框架,接下来会有其他的开源框架(如:HTTP框架.DB框架). 1.Side-Menu.Android 分类侧滑菜单,Yalantis 出品. 项目地址:https://github.com/Yalantis/Side-Menu.Android 2.Context-Menu.Android 可以方便快速集成漂亮带有动画效果的上下文菜单,Yalantis出品. 项目地址:https:

  • Apache Commons Math3探索之快速傅立叶变换代码示例

    上一篇文章中我们了解了Apache Commons Math3探索之多项式曲线拟合实现代码,今天我们就来看看如何通过apache commons math3实现快速傅里叶变换,下面是具体内容. 傅立叶变换:org.apache.commons.math3.transform.FastFourierTransformer类. 用法示例代码: double inputData = new double[arrayLength]; // ... 给inputData赋值 FastFourierTran

  • Android中使用开源框架Citypickerview实现省市区三级联动选择

    1.概述 记得之前做商城项目,需要在地址选择中实现省市区三级联动,方便用户快速的填写地址,当时使用的是一个叫做android-wheel 的开源控件,当时感觉非常好用,唯一麻烦的是需要自己整理并解析省市区的xml文件,思路很简单,但是代码量相对大了些.偶然期间发现了另外一个开源组件,也就是今天要介绍的citypickerview. github地址:crazyandcoder/citypicker 2. 实现效果 下面给大家演示下实现效果: 3.   实现方法 (1)添加依赖 dependenc

  • JavaScript中七种流行的开源机器学习框架

    如果你是一位想要深入机器学习的 JavaScript 程序员或想成为一位使用 JavaScript 的机器学习专家,那么这些开源框架也许会吸引你. 开源工具的涌现使得开发者能够更加轻松地开发应用,这一点使机器学习领域本身获得了极大增长.(例如,AndreyBu,他来自德国,在机器学习领域拥有五年以上的经验,他一直在使用各种各样的开源框架来创造富有魅力的机器学习项目.) 虽然 Python 是绝大多数的机器学习框架所采用的语言,但是 JavaScript 也并没有被抛下.JavaScript 开发

  • 深度学习开源框架基础算法之傅立叶变换的概要介绍

    傅立叶变换时数字信号处理的重要方法之一,是法国数学家傅立叶在1807年在法国科学学会上发表的一篇文章中所提出的,在文章中使用了正弦函数描述温度分布,而且提出了一个著名的论断:任何连续性的周期信号都可以由一组适当的正弦曲线组合而成.而这个论断被当时审查论文的著名数学家拉格朗日所否定,拉格朗日认为正弦函数无法组合成一个个带有棱角的信号,但是从无限逼近的角度考虑,可以使用正弦函数来非常逼近期直到表示方法不存在明显差异,这篇论文最终在在拉格朗日死后15年之久才得以发表. 傅立叶变换的分类 根据信号是是周

  • Python深度学习TensorFlow神经网络基础概括

    目录 一.基础理论 1.TensorFlow 2.TensorFlow过程 1.构建图阶段 2.执行图阶段(会话) 二.TensorFlow实例(执行加法) 1.构造静态图 1-1.创建数据(张量) 1-2.创建操作(节点) 2.会话(执行) API: 普通执行 fetches(多参数执行) feed_dict(参数补充) 总代码 一.基础理论 1.TensorFlow tensor:张量(数据) flow:流动 Tensor-Flow:数据流 2.TensorFlow过程 TensorFlow

  • python深度学习tensorflow入门基础教程示例

    目录 正文 1.编辑器 2.常量 3.变量 4.占位符 5.图(graph) 例子1:hello world 例子2:加法和乘法 例子3: 矩阵乘法 正文 TensorFlow用张量这种数据结构来表示所有的数据. 用一阶张量来表示向量,如:v = [1.2, 2.3, 3.5] ,如二阶张量表示矩阵,如:m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]],可以看成是方括号嵌套的层数. 1.编辑器 编写tensorflow代码,实际上就是编写py文件,最好找一个好用的编辑器

  • Python深度学习之简单实现猫狗图像分类

    一.前言 本文使用的是 kaggle 猫狗大战的数据集 训练集中有 25000 张图像,测试集中有 12500 张图像.作为简单示例,我们用不了那么多图像,随便抽取一小部分猫狗图像到一个文件夹里即可. 通过使用更大.更复杂的模型,可以获得更高的准确率,预训练模型是一个很好的选择,我们可以直接使用预训练模型来完成分类任务,因为预训练模型通常已经在大型的数据集上进行过训练,通常用于完成大型的图像分类任务. tf.keras.applications中有一些预定义好的经典卷积神经网络结构(Applic

  • pycharm安装深度学习pytorch的d2l包失败问题解决

    目录 1.首先查看现在pycharm所在的环境 2.打开Anaconda Prompt 3.激活现在的虚拟环境 4.安装d2l包 5.原因分析和心得体会,可以不看. 总结 pycharm里边安装不上d2l包.按以下步骤操作即可成功解决. 1.首先查看现在pycharm所在的环境 File—> settings,然后如下图所示:主要看黄框里的.我这里是自己创建的pytorch虚拟环境.每个人创建的虚拟环境不一样,所以要看黄框里的你的是什么虚拟环境. 2.打开Anaconda Prompt 如下图所

  • 开源框架 Matrix-Dendrite 搭建聊天服务器的详细过程

    目录 开源框架Matrix-Dendrite搭建聊天服务器 关于Matrix 开始搭建 需要准备的'东西' PostgreSQL 01.创建PostgreSQL配置文件目录 02.创建databases文件夹存储数据库 03.配置Docker命令创建容器 04.连接数据库以确认初始化正常 Matrix-Dendrite 01.创建Dendrite文件夹存储配置文件 (1)生成matrix_key.pem服务器密钥文件 (2)修改Dendrite配置文件 02.创建数据存储目录 03.创建Dend

  • python人工智能深度学习算法优化

    目录 1.SGD 2.SGDM 3.Adam 4.Adagrad 5.RMSProp 6.NAG 1.SGD 随机梯度下降 随机梯度下降和其他的梯度下降主要区别,在于SGD每次只使用一个数据样本,去计算损失函数,求梯度,更新参数.这种方法的计算速度快,但是下降的速度慢,可能会在最低处两边震荡,停留在局部最优. 2.SGDM SGM with Momentum:动量梯度下降 动量梯度下降,在进行参数更新之前,会对之前的梯度信息,进行指数加权平均,然后使用加权平均之后的梯度,来代替原梯度,进行参数的

  • 深度学习tensorflow基础mnist

    软件架构 mnist数据集的识别使用了两个非常小的网络来实现,第一个是最简单的全连接网络,第二个是卷积网络,mnist数据集是入门数据集,所以不需要进行图像增强,或者用生成器读入内存,直接使用简单的fit()命令就可以一次性训练 安装教程 使用到的主要第三方库有tensorflow1.x,基于TensorFlow的Keras,基础的库包括numpy,matplotlib 安装方式也很简答,例如:pip install numpy -i https://pypi.tuna.tsinghua.edu

  • Python-OpenCV深度学习入门示例详解

    目录 0. 前言 1. 计算机视觉中的深度学习简介 1.1 深度学习的特点 1.2 深度学习大爆发 2. 用于图像分类的深度学习简介 3. 用于目标检测的深度学习简介 4. 深度学习框架 keras 介绍与使用 4.1 keras 库简介与安装 4.2 使用 keras 实现线性回归模型 4.3 使用 keras 进行手写数字识别 小结 0. 前言 深度学习已经成为机器学习中最受欢迎和发展最快的领域.自 2012 年深度学习性能超越机器学习等传统方法以来,深度学习架构开始快速应用于包括计算机视觉

  • 13个最常用的Python深度学习库介绍

    如果你对深度学习和卷积神经网络感兴趣,但是并不知道从哪里开始,也不知道使用哪种库,那么这里就为你提供了许多帮助. 在这篇文章里,我详细解读了9个我最喜欢的Python深度学习库. 这个名单并不详尽,它只是我在计算机视觉的职业生涯中使用并在某个时间段发现特别有用的一个库的列表. 这其中的一些库我比别人用的多很多,尤其是Keras.mxnet和sklearn-theano. 其他的一些我是间接的使用,比如Theano和TensorFlow(库包括Keras.deepy和Blocks等). 另外的我只

随机推荐