关于fft后信号幅值,求另一种直观解答
对于matlab做fft变换,本人一直有些不明白,虽然有很多帖子涉及到这方面,但是由于我对数学公式相当头疼,实在看不懂那些方程式表达的意思,所以在这里把我的困惑写下来,希望可以得到一种简单直观的理解。(1)拿正弦函数来说,设想:
h=0.01;t=0:h:1;x=12sin(2*pi*10*t+pi/4)+5*cos(2*pi*40*t);f=t/h;X=fft(x);
对于这样的程序,X为对两个正弦信号的叠加的结果进行fft变换得到的,在频谱图上X(11)点,其幅度为原信号在10Hz的频率处的幅度的N/2倍,在X(41)点,其幅度为原信号在40Hz的频率处的幅度的N/2倍,这个都可以理解,但问题是对应于f=0即直流分量来说,其信号幅度应为对应于原信号频率的幅度的N倍,那么在这个x中,对应于频率f=0的幅值,倒底是什么呢?对应于周期函数,可以分解为直流分量和正弦分量或者余弦分量的和的形式,成为傅里叶级数,对于非周期函数,等效于积分形式,成为傅里叶变换,而(1)中应该是没有直流分量的,那么f=0对应的幅值,表示什么意义?
(2)拿线性函数来说,设想:
h=0.01;t=0:h:1;x=5*t+10;f=t/h;X=fft(x);
对于这样的程序,其频率点处的幅度,理论上也应该为原信号幅度的N/2倍(去除直流分量除外),可是设想取f-0的频率点,那么这个直流分量的幅度,是原信号幅度的N倍,表示什么意思?对应于这101个频率点,各个频率点的幅值除f=0的点外,其应该为对应于原频率分量的幅值的N/2倍,那么这个一次方程中对应于原频率分量的幅度,是什么?
如果有懂的朋友老师,可以解释得简单点吗,或者用图形什么的直观一点表达也行,论坛里很多这方面的内容,可是实在看不懂。
(1)中应该是没有直流分量的,那么f=0对应的幅值,表示什么意义?
这个你FFT之后0处应该是没有幅值的,如果有很小的峰值也可以认为是0,有可能是因为频谱泄露或者变换中误差引起的。
(2)那么这个直流分量的幅度,是原信号幅度的N倍,表示什么意思?
因为傅里叶变换是把原信号分解为一系列正余弦函数的组合,每个正余弦函数都对应一个幅值,而且这个幅值都是唯一的。你可以理解为通过FFT之后,因为这种算法的原因,得到的每个频率对应的幅值都是它本应该对应的幅值(唯一的那个幅值)的N倍,但是由于变换后是关于F=0对称的双边谱,就是把每个频率对应的幅值一分为二,平均分配给了对称的正负频率,但是F=0处的幅值对称后并没有一分为二,所以FFT之后F=0处的幅值除以N,其他点处除以N/2才是真正的幅值。
(3)那么这个一次方程中对应于原频率分量的幅度,是什么?
这个幅度就可以理解为这个函数唯一的傅里叶分解之后对应的每个正弦波的幅度,也就是对应于傅里叶级数中的每阶谐波的系数
不知道对你的问题是否理解的对,希望能帮到你
本帖最后由 难渡秋心 于 2014-5-11 15:58 编辑
lissarlb 发表于 2014-5-11 11:12
(1)中应该是没有直流分量的,那么f=0对应的幅值,表示什么意义?
这个你FFT之后0处应该是没有幅值的,如 ...
谢谢你耐心的解答,不过我的困惑更多了,将上面的两个例子都用matlab运算,我这里附上相应的图,在不考虑FFT变换后的假频现象,认为求解精度偏差是由于频谱泄露造成的结果,以此来考虑下面的问题:
(1)f=0对应的成分,一定是直流分量成分吗?对于方程(1),由于无直流分量,所以fft后对应于0Hz处的能量也应该为0,确实结果是接近于0的,但这个f=0就是fourier变换中常说的直流分量吗?
(2)对于周期信号而言,可以分解成fourier级数,由直流分量和交流分量构成,对于非周期信号,刚视为周期无穷大时的极限情况,构成fourier变换,对于任意一个原函数点,都可以认为是由无穷多个频率成分构成的结果,考虑第二个方程,为一次函数,对于每一个时间点t,x都可以看作是由无穷多个频率成分构成的,这样的考虑对吗?如果正确,那么设想t=0.2和t=0.5,以这两个点为例,都包含了无穷多个频率成分,设都包含了f=50Hz的频率成分,是吧?考虑第一个方程,由于无直流分量,且原信号频率成分固定,为10Hz和40Hz,所以fft后其幅度在10Hz和40Hz处幅值为原频率幅值处的N/2倍,即50倍,而在其他点由于原x不包含其他频率成分,所以幅值也相应的为0,是这个意思吗?那么对于方程(2),这个一次函数,是不是没有交流分量,只有直流分量,所以fft后对应于f=0后的所有点,其幅值应该是0,而对应f=0这个点,其幅值为原信号幅值的N倍也就是100倍?那么这个原信号幅值,大小是多少呢?fft后的结果也确实显示f=0之后的频率,其幅值差不多为0。
谢谢热心的解答。
为什么我没办法看图片,呜呜
页:
[1]