【 1. CTFT 】
【 2. DTFT 】
【 3. DFT 】
【 4. CTFT、DTFT、DFT 之间的关系 】
【 5. FFT 】
5.1 Matlab 对 fft 函数的阐述
5.2 FFT运算点数对结果的影响
为了更好的分析单一变量对结果的影响,本例不考虑频谱泄漏。
采样频率、采样点数固定时,随 FFT运算点数增大,精度不断提高 。
图1、图2和图3
:FFT运算点数M < 采样点数N,此时由由 fft() 函数对信号 xn 进行截断操作即只取N个采样点中的前M个点进行分析。随着FFT运算点数的增大,精度逐渐提高。幅度的关系式为 X=X*2/M。
图4、图5和图6
:FFT运算点数M > 采样点数N,此时由 fft() 函数对信号 xn 进行尾补零操作即在该信号尾部添加多个值为0的数据点以使信号总点数N增至FFT运算所需点数M。随着FFT运算点数的增大,精度逐渐提高。幅度的关系式为 X=X*2/N。
5.3 采样点数对结果的影响
采样频率、FFT运算点数 固定时,随着 采样点数 的提高,精度逐渐提高直至不变。
图1、图2和图3
:采样点数N < FFT运算点数M,此时由 fft() 函数对信号 xn 进行尾补零操作即在该信号尾部添加多个值为0的数据点以使信号总点数N增至FFT运算所需点数M。而随着采样点数的提高,原信号的点数增多,分析时所包含的信息也相应增多,精度逐渐提高。幅度的关系式为 X=X*2/N。
图4、图5和图6
:采样点数N > FFT运算点数M,此时由 fft() 函数对信号 xn 进行截断操作即只取N个采样点中的前M个点进行分析。因此,随着采样点数的提高,精度不变。幅度的关系式为 X=X*2/M。
【 6. 分辨率 】
6.1 时间分辨率
6.2 频率分辨率
频率分辨率是指将两个相邻谱峰分开的能力,在实际应用中是指分辨两个不同频率信号的最小间隔。
反映在FFT中,频率分辨率可以理解为在频率轴上的所能得到的最小频率间隔。
所以,当被采样信号长度一确定,信号的最大周期就是该长度,信号的最小频率(即频率分辨率)就是原始信号时间长度的倒数。
6.3 频率分辨率和准确度的关系
【 7. 信号补零 】
FFT运算点数M > 采样点数N 时,fft(xn,M) 函数对信号 xn 进行尾补零操作即在该信号尾部添加多个值为0的数据点以使信号总点数N增至FFT运算所需点数M。
补1次零相当于在原始频谱图中每两个频率之间插入1个频率值,补2次零相当于在原始频谱图中每两个频率之间插入2个频率值,并且原始频率值的位置及其幅值保持不变。因此,
补零会使频谱图中的频率点的数量增加,从而使得频谱图更加的光滑连续,但是补零不能对频谱图中的 频率分辨率、频率值以及幅值有所改善
。
在补零操作中,所补的零值点的数量所占分析信号比例越大,分析结果中的幅度越小。
补零的好处:
① 使数据N为2的整次幂,便于使用 FFT。
② 补零后,其实是对DFT结果做了插值,克服“栅栏"效应,使谱外观平滑化。我把“栅栏"效应形象理解为,就像站在栅栏旁边透过栅栏看外面风景,栅栏会挡住比较多风景,此时就可能漏掉较大频域分量,但是补零以后,相当于你站远了,风景就看的越来越清楚了。
③ 由于对时域数据的截短必然造成频谱泄露,因此在频谱中可能出现难以辨认的谱峰,补零在一定程度上能消除这种现象。
【 8. 频谱泄漏 】
对频率为 f0 的原信号 xt 以 Fs 的采样频率进行采样,采样点数为 N ,得到离散序列值 xn ,FFT 运算点数为M,由于 M≠N 时,fft() 函数会进行尾补零或截断操作,因此
令 fft() 函数经过上述操作后所得分析信息中原信号 f0 的周期数为 k,若 k 为非整数,则相当于对信号进行非整周期截断,此时会造成严重的频谱泄露现象,造成频率值和幅度值的偏差。
通过增加 FFT 所分析信息中原信号 f0 的周期数 k 可以改善频谱泄露的现象,减小偏差
。当周期数增多时,非整周期部分占整体信号的比例逐渐减少,对整个信号的影响也逐渐变小,频谱泄露逐渐减少,频率值逐渐靠近真实频率值;当周期数足够多时能够得到较准确的频率值,幅值会收敛到一个常数。
【 9. 信号的周期延拓 】
有时我们采集到的信号比较短,这样得到的频率分辨率比较低,这时可能会想如果将信号进行周期延拓可以增加信号的长度。
整周期延拓时两段信号之间是连续的。 非整周期截断会导致频谱中的频率及其幅值不准确,对信号进行延拓后相邻两段信号之间会出现间断点,使得信号之间的连接不连续。
综合整周期截断和非整周期截断后的延拓次数对频谱的影响情况来看,
对信号进行延拓相当于增加了采样时间,能够提高频率分辨率,但是不会改善频谱中频率及其幅值的准确性。