2014.04.17,转帖,关于FFT的结果为什么要除以N
关于这个问题,我看到的书好像都没有进行解释,这里我试着解释下:
首先,离散付立叶变换的定义本身比连续付立叶变换少了一个dt(采样时间间隔);
然后,对于单频率成分的信号来说,经过矩形窗截断后的频谱在其信号频率处将放大T(做谱时间长度)倍,同样,对于相隔较远的多频率成分信号来说,相应的频率成分的幅值均将因截断而被放大T倍。
综合考虑这两种原因的话,也就是说我们用FFT做出的谱实际上是放大了T/dt=N(做谱点数)倍,因此,必须将此结果除以N。
以上是对于单频率或相隔较远的多频率成分信号而言的,其他的情况得具体问题具体分析了,如加的是其他窗,就要考虑幅值恢复系数。密集频率成分的考虑等等。
--------------------------------
解释的有道理,不过我感觉之所以除以个N,是因为我们在进行离散傅立叶变换时,是连加的,将所有采样的点都加在了一起,所以最后要除以N,不知说得对不对。
-----------------------------
一开始也是这么想的,可后来觉得这样解释不对.
因为有时这样解释是不对的,例如你构造一个低通滤波器序列,照这样解释的话它的频谱同样得除以N,但事实上并不需要,这主要的原因就是它本身是一个连续频率成分.
------------------------------
对于单频率的信号,经过矩形窗截断后,在频谱上为什么要乘以2/N来求得该信号的幅值,这可以经严格的数学推导得出的,它是由sinc函数产生的。现把它的推导过程列于下:---图片见原帖
--------------------------
FFT是个算法,至于点数N的处理,有些教科书上是除在FFT上,有些是除在IFFT上,因为FT是个变换,所以要保证 x=IFFT( FFT(x) )成立。
具体的计算公式还是要去研究DFT的一些东东,请楼主不妨参考一下这篇文献: 严普强等,动态测试信号处理中时-频域变换算法的讨论,振动测试与诊断,23(2),2003:120-124。 对傅氏变换,傅立叶级数等一些基本概念做了比较详细的讨论
---------------------------
除以N,是为了傅立叶逆变换的时候在数值上相应,其实对于分析来说意义并不是很大,所以除跟不除以N关系不是很大
------------------------------------------------
怎么一会N一会N/2??
----------------------
“2”是做单边谱的时候用。
---------------------
当输入样点数据为实数时除以2/N
当输入样点数据为复数时除以N
-----------------------
求有效值必须除以N
----------------------
不要先想DFT,先看看原始的傅里叶级数和傅里叶变换的公式,自己动手推导一下DFT就知道为什么要除以N了,注意,除以N得到的是双边谱幅值
----------------------
根据楼上的说法,除以N得到的双边谱,除以N同时乘以2得到的是单边谱,是这个意思吗??
是的。双边谱意味着有正负频率,只有数学意义,一般可以叫做数学谱;单边谱只有正频率,叫物理谱,一般具体工程问题的谱,都是指物理谱。
-------------------
下面是另一个关于功率谱和功率谱密度的讨论的帖子:
http://www.chinavib.com/forum/thread-26594-1-123.html
对信号加汉宁窗是为了截取1024个样值,再做DFT变换成幅度谱,取绝对值再平方是求频率线上的能量(还是功率?搞不清),为什么要除以1/N?最后为什么会产生512条频率线?请指教!
-------------------------------
加汉宁窗不仅是为了截取,同时还是为了减少泄露和干涉.
为什么要除以N,和为什么产生512条谱线,可参看本版其他帖.
还有这个公式求功率谱有问题,应该再乘上汉宁窗的能量恢复系数1.633
-------------------------------
看了论坛上的其他帖子,可是依然很混乱,资料上给出的这个公式说是求功率谱密度的,可是对它的意义还是不十分了解。
先结合我在论坛上看的功率谱方面的帖子,总结以下几点吧:
1,功率谱密度==功率谱;
2,分析功率有限信号采用功率谱,能量有限信号采用能量谱;
3,分析确定信号用频谱,分析随机信号用功率谱;
4,我们所说的“频谱”大部分指的是幅度谱(双边谱),是对信号做了DFT或FFT后得到的;
5,对幅度谱(双边谱)平方后乘2可转化为单边谱;
6,求功率谱(功率谱密度)是将DFT或FFT后的结果平方;
问题是:
1,对于确定信号,幅度谱是否等同于功率谱(即直接作DFT或FFT变换就可得到)?
2,对于随机信号,功率谱采用直接法是做DFT或FFT后绝对值得平方除以N?
3,功率谱求出的幅度是相对值,转化为绝对幅度的方法到底是除以采样频率还是频率分辨率?
以下问题针对附件给出的公式:
4,若用fft函数怎样求出512条谱线?
5,对于用1024点DFT变换作出的512条谱线的含义,为什么不作成1024条?
请大家来指点一下,如果有不对的地方希望提出!
----------------------------------------
回答:1 功率谱是幅度谱的平方(会相差一个系数)
2 可以这样做
3 取决于你功率谱的求法,不好回答,方法很多的.
4 512条是你具体问题中的出现的,不是必然
5 1024点DFT后关于原点对称,是双边谱,而我们只用单边谱,故只有一半的点数
---------------------------------------
但是对于式子里出现的1/N还是不清楚,查了一些资料,功率谱密度是DFT,FFT后绝对值的平方,那1/N的出现是什么意思呢?
------------------------------
这里给出的功率谱(密度)都是相对值,功率谱计算的方法之一是由FFT后的谱线平方来得到。但作FFT时,有的在FFT的公式中乘以(1/N),因此在你的式子中就有了(1/N)这因子,也有人把这因子放在IFFT中,这时表示出的功率谱计算中便没有这个因子。
2014.04.17,转帖,关于FFT的结果为什么要除以N的更多相关文章
- mini2440移植uboot 2014.04(三)
我修改的代码已经上传到github上,地址:https://github.com/qiaoyuguo/u-boot-2014.04-mini2440.git 参考文档: s3c2440手册(下载地址) ...
- centos下Spin Version 6.3.2及ispin安装(2014.9.17)
centos下Spin Version 6.3.2及ispin安装(2014.9.17) 前言:windos下首先安装虚拟机,再安装linux系统(centos版) 一.本帖来源于官网http://s ...
- ApexSql Log 2014.04.1133破解版&补丁
已上传最新的2016版本,请移步: http://www.cnblogs.com/gsyifan/p/ApexSql_Log_2016_Crack.html 状态不好,鬼使补差的跑到服务器上updat ...
- SAP-MM:收货转储时提示 M7053“只能在公司代码 **** 的期间 2014/04 和 2014/03 中记账”
错误信息 消息号M7053 解决方法 Step 1.使用MMPV进入"关闭账期"界面. Step 2.输入"公司代码"."期间".& ...
- 关于asp.net执行exe程序时权限不够的解决办法(2015.04.17更新)
一,本文背景 长话短说:asp.net项目中需要用到PDF转换成SWF文件,用户上传后自动调用pdf2swf.exe转换. 但有个问题,执行时权限不够,导致一直报错(滚动条一直在往下滚,刷屏中),见下 ...
- new Date('2014/04/30') 和 new Date('2014-04-30') 的区别
new Date('2014/04/30') Wed Apr 30 2014 00:00:00 GMT+0800 (中国标准时间) new Date('2014-04-30'); Wed Apr 30 ...
- mini2440移植uboot 2014.04(七)
上一篇博文:<mini2440移植uboot 2014.04(六)> 代码已经上传到github上: https://github.com/qiaoyuguo/u-boot-2014.04 ...
- mini2440移植uboot 2014.04(六)
上一篇博文:<mini2440移植uboot 2014.04(五)> 代码已经上传到github上:https://github.com/qiaoyuguo/u-boot-2014.04- ...
- mini2440移植uboot 2014.04(五)
代码上传到github上:https://github.com/qiaoyuguo/u-boot-2014.04-mini2440 前几篇博文: <mini2440移植uboot 2014.04 ...
随机推荐
- HTML网页做成ASP.NET后台的方法以及.NET后台控制前台样式的方法
之前一直不知道,写好的纯HTML网页怎么做成ASP.NET后台的呢,因为之前使用别人的HTML模板写过一个自己的个人博客 果冻栋吖个人博客 当时用的PHP写的.一直在考虑怎么做成.NET的. 今天自己 ...
- VirtualBox 5.1.14 获取VirtualBox COM对象错误
Oracle VM VirtualBox 5.1.14 安装完成之后显示错误, Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, but C ...
- Hadoop MapReduce编程 API入门系列之计数器(二十七)
不多说,直接上代码. MapReduce 计数器是什么? 计数器是用来记录job的执行进度和状态的.它的作用可以理解为日志.我们可以在程序的某个位置插入计数器,记录数据或者进度的变化情况. Ma ...
- hiho一下 第172周
题目1 : Matrix Sum 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 You are given an N × N matrix. At the beginn ...
- Java中从控制台输入数据的几种常用方法(转转)
原文博客地址:https://www.cnblogs.com/SzBlog/p/5404246.html 一.使用标准输入串System.in //System.in.read()一次只读入一个字节 ...
- Windows Server2008上安装VS2008出错及解决办法
作者:朱金灿 来源:http://blog.csdn.net/clever101 win server 2008安装vs2008后报错,如下图: 然后到网上找了一种解决办法: (1)打开服务器管理器 ...
- MySQL 5.6 Reference Manual-14.6 InnoDB Table Management
14.6 InnoDB Table Management 14.6.1 Creating InnoDB Tables 14.6.2 Moving or Copying InnoDB Tables to ...
- 【Oracle】DG中 Switchover 主、备切换
操作系统:OEL 5.6 数据库版本:Oracle11gR2 11.2.0.4.0 Switchover切换要求主库和备库在数据同步情况下进行,是主备之间的正常切换,主要用于日常维护.灾备演练等.切 ...
- 【Oracle】管理还原数据(undo)
1. 查看undo相关参数 SYS@LGR> show parameter undo NAME TYPE VALUE ------------------------------------ - ...
- boost_1_63_0在Win10上VS2015编译
装了个最新版的boost库,各种尝试,各种看网上的文章,然而就是没有编译成功.我真是哭晕在厕所. 最后还是自己老老实实啃官方文档.终于编出来了.下面记录下方法. 一·最简单的一种方法. 1.直接打开命 ...