当前位置 :
Matlab中fft后的频谱幅度为什么要乘以2/N?RT,在网上看了很多这方面的解释还是不明白,什么直流分量除以N,谐波分量除以N/2的什么采样点不同,幅值也不同,还有一些不是除以N/2而是除以f
2人问答
更新时间:2024-05-17 18:31:10
问题描述:

Matlab中fft后的频谱幅度为什么要乘以2/N?

RT,在网上看了很多这方面的解释还是不明白,什么直流分量除以N,谐波分量除以N/2的什么采样点不同,幅值也不同,还有一些不是除以N/2而是除以fs(采样频率)等等这些问题究竟是为什么,还有我自己也验证了直接fft后的频谱不用除以任何系数,它是满足帕塞瓦尔定理的,也就是说其频谱幅度根本不需要乘以2/N什么的,fft变化后取幅值abs(fft())就是其频谱的实际幅值!我是通过帕塞瓦尔定理来验证的,而如果乘以2/N后反而不满足帕塞瓦尔定理了,这个问题困惑我一两天了,其各位高手指点一下问题的真正原因,跪谢!

邓玉福回答:
  其实除以N或除以N/2   来源于将连续的运算化为离散的运算   积分的时候一般积分符号后面的表达式是f(x)dx,   就是某个函数f(x)和自变量微分dx的乘积   而写成离散求和的时候通常只写f[n]的求和,略去了与dn相乘   可以遇见的是,某个函数f(x),如果我们用离散的办法去求其积分   随着采样点的则加,离散的和就会增大   实际上正确的办法是求和时要乘上采样的间隔,就是积分区间/N   对于很多离散的积分算法,例如卷积,最后结果都要除以采样点数N才能得到正确结果   而傅立叶变化也是一种积分变换,所以得到的结果就要除以N,才是正确的   而变换后的频谱通常将0频移到中间,分为对称的为正负频率(模对称,幅角反对称)   有时表示频谱的时候只需要用其一半正频率部分就够了   所以除以N之后还要乘以2,表示把正负频率的加在一起   而0频的直流分量,本身在对称点,已经是正负相加过的,所以只用除以N
丁成回答:
  不知道你现在弄明白没。   MATLAB里面的FFT函数,用的是复数形式的fourier公式计算方法,返回的值是Cn。但是注意,这个Cn跟三角函数形式的fourier公式里的Cn意义不一样。前者中的Cn表示的直接就是振幅,即an与bn的平方和开平方,后者与模(an与bn的平方和开平方)相差2/N倍数。所以你如果用三角形式的fourier公式直接编程,返回Cn,能直接得到振幅,而用MATLAB自带函数FFT得到的要*2/N。。。可能几句话也讲不明白,就这样给你个思路,如果非要弄明白,你自己可以仔细看看高数里面两个Cn与an、bn的关系,自己试着推导一下。   如果有什么看法,可以再交流。
最新更新
PC端 | 移动端 | mip端
问答网(wenda2.com)汇总了汉语字典,新华字典,成语字典,组词,词语,在线查字典,中文字典,英汉字典,在线字典,康熙字典等等,是学生查询学习资料的好帮手,是老师教学的好助手。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

邮箱:联系方式:

Copyright©2009-2021 问答网 wenda2.com 版权所有 闽ICP备2022000227号-1