问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

FFT数据点数处理:是否必须为2的n次方?补零处理的影响分析

创作时间:
作者:
@小白创作中心

FFT数据点数处理:是否必须为2的n次方?补零处理的影响分析

引用
CSDN
1.
https://m.blog.csdn.net/m0_57407372/article/details/144135983

FFT(快速傅里叶变换)是信号处理领域的重要工具,其数据点数是否必须为2的n次方?不补零处理会带来什么影响?本文将通过具体案例,深入分析不同处理方法的效果和适用场景。

一般来说,FFT的数据点个数为以2为基数的整数次方(采用以2为基的FFT算法,可以提升运算性能),但是并没有要求FFT的数据点个数一定为2的n次方。
因此针对数据点数不是以2为基数的整数次方,有两种处理方法:①在原始数据开头或者末尾补零,将数据补到以2为基数的整数次方;②采用以任意数为基数的FFT算法。
那接下来就两种处理方法进行说明,分析优点与缺点。
举例:假设输入一个信号
,可以看出该信号中包含了两个不同频率的余弦信号,
,
。假设采样频率

  1. 不补零FFT
    如果采1000个点,那么时域信号的时长就为
    ,如下图左所示。直接对1000个点进行FFT,不进行补零操作,就可得到如下图右所示。
    由上图可知,频谱点较为稀疏 ,在1MHz附近根本无法将1 MHz 和1.05 MHz 的两个频率分开。这是由于频率分辨率不够。那么,如何提高频率分辨率呢?
    频率分辨率分为两种,一种是波形分辨率,另外一种为视觉分辨率(FFT分辨率)
    ①波形分辨率:原始数据的时间长度决定
    ②视觉分辨率(FFT分辨率):采样频率参与FFT的数据点数决定
    注意:当不进行补零操作时,上述两种分辨率是相等的,如下公式所示。
  2. 补零FFT
    在上述1000个数据点个数的基础上补零至7000个,那么该信号如下图左所示。那么进行补零后的FFT结果如下图右所示。
    由上图可知,频谱点密集了,但是还是无法把在1MHz附近的1 MHz 和1.05 MHz 的两个频率分开。这是因为波形分辨率为100kHz(
    ),大于1 MHz 和1.05 MHz之间距离的50kHz,且波形分辨率只与原始数据的时长T有关,与参与FFT的数据点数无关,因此补多少零都无用。
    但是补零的频谱图相比于不补零的频谱图,其频域曲线更加光滑,即增加另外一个分辨率,即FFT分辨率。因此“时域补零相当于频域插值”,时域补零相当于在频域增加了插值点数。
  3. 增加采样数据点数不补零
    因此为了进一步区分1MHz附近的1 MHz 和1.05 MHz 的两个频率,需要改变原始数据的时长T。在采样频率不变(
    )的情况下,如果采7000个点,那么时域信号的时长就为
    ,如下图左所示。对其进行FFT处理后得到的结果为下图右所示。
    波形分辨率为:
    ,小于1 MHz 和1.05 MHz之间距离的50kHz,因此可以区分两者。
    解决了区分两种频率的问题,又出现了一个新的问题。
    上图中可以清晰地看出,1MHz对于的幅值为1,与原始信号中该频率成分的幅值一致,但是1.05MHz对应的幅值和原始信号的幅值不一致,明显低于1,但是其周边的点却有较大的幅值,这就是频谱泄露
  4. 增加采样数据点数并补零
    频谱泄露: 因为数据点的个数,使得在1MHz处有谱线存在,而在1.05MHz处却没有,使得测量结果偏离实际值,同时在实际频率点的能量分散在两侧的其他频率点上,并出现一些幅值较小的假谱。
    因此,我们需要设法让谱线同时经过1MHz和1.05MHz,找到两者的公约数,1MHz=80×12.5kHz;1.05MHz=84×12.5kHz,为两个频率的公约数。FFT分辨率为
    ,因此进行补零操作,在原始数据7000个的基础上补零至8000个数据点数,如下图左所示。对其FFT后,结果如下图右所示。

    这时 1MHz和1.05MHz 对应的幅值都为1,与原始信号一致。这也是一种补零操作带来的好处影响。
  5. 进一步增加采样数据点数不补零
    上图中会有一些旁瓣出现,这是因为补零影响了原始信号,如果,直接采8000个点作为原始数据,如下图左所示。 FFT结果为如下图右所示。
    因此补零或不补零需要根据具体的信号特性和分析需求进行决定。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号