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 ...
随机推荐
- 读入图片显示scipy.misc module has no attribute imread?
>>> import scipy >>> scipy.misc <module 'scipy.misc' from 'C:\Python27\lib\site ...
- pythonOCC版 瓶子代码
#!/usr/bin/env python # -*- coding:utf-8 -*- ##Copyright 2009-2015 Thomas Paviot (tpaviot@gmail.com) ...
- 在量化金融中15个最流行的Python数据分析库
Python是当今应用最广泛的编程语言之一,以其效率和代码可读性著称.作为一个科学数据的编程语言,Python介于R和java之间,前者主要集中在数据分析和可视化,而后者主要应用于大型应用.这种灵活性 ...
- Web启动,停止Windows服务
When you grow stronger,the world become more dangerous.当你变得越强大,这个世界反而会变得越危险. ServiceModel.cs代码: publ ...
- java exception 异常错误记录
//异常:Could not obtain transaction-synchronized Session for current thread 做定时器的时候用ApplicationContext ...
- 更换WordPress后台登录地址
在后台找到wp-content—themes—twentyfifteen(当前的网站主题)—functions.php 在代码的最下面加入以下代码: //后台唯一登录地址 add_action('lo ...
- Spring aop(实验写法)
1. 创建通知:定义一个接口 Public interface Sleepable { voidsleep(); }然后写一个Human类,他实现了这个接口 publicHuman implement ...
- UVa修改版02
#include<stdio.h> int main() { int i,k=-1,t; char a[100]; scanf("%d",&t); while( ...
- 『MicroPython』Hello uPy
官网买了几乎全套.一路曲折:7月10号下单,13号发货,14号法兰克福过关,23号到北京,25号到上海,27号到沪C:沪C邮局投3次未果,中彩票一样终于打通了投递部电话才在次日28号“妥投”:又因出差 ...
- gulp给文件后添加md5时间戳
这里为总的方法,实际项目中拷贝出来的,底下有详细的总结以及只针对添加时间戳的方法 1 // 引入 gulp及组件 var gulp = require('gulp'), autoprefixer = ...