傅里叶分析中几个容易混淆的概念

傅里叶分析可以说是信号处理最重要的基石之一。但傅里叶级数、傅里叶变换、离散时间傅里叶变换、离散傅里叶变换等几个有点像又有点不像的概念,不仅经常搞得初学者晕头转向,有时候让老手也有点糊涂。

在开篇之前,先简要介绍一下傅里叶分析有关的八卦旧闻。早在19世纪初,法国数学家、物理学家傅里叶在研究热传导问题的时候,就提出周期信号可以分解为许多个正弦函数的叠加。1807年,他把这个想法写成一篇论文投给了法兰西科学院。当时负责这篇文章审稿的有两位世界著名的法国数学家:拉普拉斯和拉格朗日。审稿的结果是拉普拉斯认为可以发表,拉格朗日认为不连续的信号如方波信号不能用三角函数分解。法国科学院慑于拉格朗日的威名,最后拒绝了这篇论文。由于随后傅里叶先是忙于政治活动,后来又随拿破仑远征埃及,在法国大革命后又设法免遭上断头台之苦,傅里叶根本无暇顾及这篇论文。在论文被拒绝15年之后,法兰西科学院又刊出了这篇论文,因为当时不同意论文发表的拉格朗日去世了。正是这篇论文,奠定了傅里叶分析在信号处理历史上的地位。

1、  傅里叶级数

在高等数学中就已经知道,在满足一定的条件下,任何一个周期信号都可以分解为正弦信号的叠加。在高等数学中,这种分解就叫傅里叶级数。在信号处理学习的最初阶段,也是从这个概念出发,开始输入到信号处理的傅里叶世界。在信号处理中,周期连续信号的傅里叶分析称为傅里叶级数。此时,在傅里叶分析之前,信号是周期,连续的,在之后,结果是离散的。

2、  傅里叶变换

对于连续信号,如果信号不是周期的,其傅里叶分析结果又是如何呢?非周期信号可以等效为周期为无穷大的周期信号。于是,由傅里叶级数出发,利用极限的有关概念,可以推导出非周期信号的傅里叶分析结果,这就是傅里叶变换。再啰嗦一句,非周期连续信号的傅里叶分析称为傅里叶变换。在傅里叶分析之前,信号是非周期的,连续的,在之后,结果也是连续的。

3、  离散时间傅里叶变换

傅里叶级数和傅里叶变换都是针对连续信号而言的,那么对于数字信号而言,是否有对应的傅里叶分析呢?答案是肯定的,这就是离散时间傅里叶变换(DTFT)和离散傅里叶变换(DFT)。

对非周期离散信号的傅里叶分析称为离散时间傅里叶变换。在傅里叶分析之前,信号是非周期的,离散的,在之后,结果是连续的。

4、  离散傅里叶变换

对周期离散信号的傅里叶分析称为离散傅里叶变换。在傅里叶分析之前,信号是周期的,离散的,在之后,结果是离散的。如果按照前面三种分析的命名,离散傅里叶变换叫离散傅里叶级数似乎更为妥当。但由于历史的原因,大家习惯把这种傅里叶分析称为离散傅里叶变换。当然,关于DFT是否隐含着信号周期性的问题,也有一些争论。有的认为进行DFT分析就意味着默认离散信号是周期的,有的则认为离散信号不一定要看成是周期的。此处采取默认离散信号周期性的说法,主要是基于如下理由:如果把DFT看做是对DTFT结果在频域的采样的话,那么根据信号系统的有关理论可知,频域的采样等效于时域的周期延拓,这样,离散信号自然变成周期的了。在实际分析中,将DFT看做是对DTFT结果在频域的采样是合乎情理的。

这上面的四个与傅里叶分析有关的概念,最重要的是DFT。因为前面三种分析都需要假定信号的时域及频域都是无限长的。从概念上讲,虽然DFT也需要时域频域无限长,但由于时域频域都是周期的,因此只需要一个周期的信息即可。另外,由于计算机等数字设备只能处理数字信号,也即是要求无论是时域还是频域,都要是离散的。因此,DFT在实践中占有最重要的地位。傅里叶级数,傅里叶变换,离散时间傅里叶变换这三个概念则更多的用于理论分析中。

时间: 2024-12-26 04:28:55

傅里叶分析中几个容易混淆的概念的相关文章

js中几个容易混淆的概念

1. var name = "The Window";var object = {name : "My Object",getName: function(){return this.name;}};这里的getName()方法只简单地返回this.name 的值.以下是几种调用object.getName()的方式以及各自的结果.object.getName(); //"My Object"(object.getName)(); //"

微软BI 之SSIS 系列 - 对于平面文件中 NULL 值处理过程中容易极易混淆的几个细节

最近有人问我 OLE DB Destination 中的 Keep Nulls 如何控制 NULL 值的显示,为什么选中了 Keep Nulls 但是数据库中没有 NULL 值? 为什么在 Flat File Source 中勾选上了 Retain null values from the source as null values in the data flow 但是为什么目标表上显示的是一个当前日期,而不是 NULL 值等等,单开此文来解释这些非常容易混淆的概念. 在比较纯粹的 ETL 项

c++中的一些容易混淆的研究

(1).TRUE/FALSE与ture/false以及NULL与null的区别是什么? 1.首先我们要了解true/false是标准c++中定义的关键字,在c语言中是没有bool类型的. 所以为了弥补C与C++中环境的差异,使代码方便移植(主要是为了c++编写的代码移植到C环境中),故在标准C++中定义了TRUE/FALSE宏.定义如下: #define TRUE  1 #define FALSE 0 故TRUE/FALSE是宏(类型为int类型),而ture/false是标准c++的bool类

C和OC的基础语法(易混淆的概念知识)

List 0. 深复制与浅复制, NSObject万能指针.id指针.instancetype区别,单例import.include.@class的区别 strong 与 weak 区别 #define  和  typedef的区别, static 与  extern 区别,@required与@optional 区 别,@private.@protected .@public.@package区别 变量的命名规则以及规范(4规则,2规范) 数据类型转换 printf与scanf,自增自减,逻辑

理解嵌入式开发中的一些硬件相关的概念

做嵌入式系统开发,经常要接触硬件.做嵌入式开发对数字电路和模拟电路要有一定的了解.这样才能深入的研究下去.下面我们简单的介绍嵌入式开发中的一些硬件相关的概念. 电平(Level) 在数字电路中,分为高电平和低电平,分别用1和0表示.一个数字电路的管脚,总是存在一个电平的,要么高要么低,或者说要么1要到0(其实,还有另一种状态,后面会提到). 总线(Bus) 在嵌入式系统中一定会有一块处理器芯片,此外,还有其它的芯片作为外部设备(后面简称外设),这些芯片与处理器协作实现产品的功能.复杂的产品往往是

SQL中的Filter, join, semi-join等概念的释义

经常在工作中用到,虽然当年在数据库原理课程中学习过,不过基本已经还给老师了.工作这么多年,感觉自己在学习上倒退了很多,惭愧.这篇帖子,作为SQL相关知识的整理贴. 1.semi-join(半连接)(来自:http://wiki.answers.com/Q/What_is_semi_join_in_SQL) 半连接返回表中能够与另一表中连接的记录(并不执行一次全连接),它并没有一个明确的语法格式. A semi-join returns rows from one table that would

js和java中正则表达式的易混淆点

js中正则表达式的使用 对表单中的值进行正则表达式匹配一般有两种方法: var reg = new RegExp(regStr); reg.test(value); 如下: var reg = new RegExp("\\d{3}"); reg.test("abc123def"); 结果:true 注:new RegExp中传的是正则表达式的字符串,\需要用\转义. str.match(regex);      如"abc123def".matc

Dotfuscator VS中自带的混淆器和压缩器简单介绍以及用法

Dotfuscator是VS里面一个自带的.NET混淆器和压缩器,它可以帮助您防止您的应用程序被反编译.同时,它还可以使得您的应用程序更加小巧以及高效. 闲话不多少了,下面介绍它的基础用法,从此让你编译后的程序变得更贱更神秘,大牛自行绕过啦,小虾可以看看学一下... 1:安装 下载并安装混淆器,这里有一个4.9破解版的(该软件来源于网络) 点击下载 提取码:a435 2:安装完毕后打开,如下图 3:选择你要加密混淆的DLL或EXE文件,我这里就直接用一个exe文件举例啦,如下图 \ 4:下边就开

07.30《JavaScript》——JS中的函数没有重载的概念

JS中的函数没有重载的概念 js中不像是java,拥有重载的概念,所以函数名相同的函数,js会认为是同一个函数,所以会输出写在最后的一个函数的结果. function test(){ alert(arguments[0]); } function test(x){ alert(x) } function test(x,y){ alert(x+" "+y) } test(7); 结果是: 原文地址:https://www.cnblogs.com/justlive-tears/p/9393