当前位置:   article > 正文

FFT算法的频率准确性问题_傅里叶 频率准确

傅里叶 频率准确

FFT算法的频率准确性问题

1、问题描述

做项目需要对采样的正弦波数据进行幅值解析,因为不需要考虑相位关系,所以直接用FFT算法比较简单,而且matlab有封装好的函数,网上也有很多基于C和C++的源代码,学习起来也非常的方便。但是在计算频率时出现了得不到目标信号频率的准确值,而在频率周围的幅值比较大的问题。

eg目标信号为1kHz幅值为10与1.9khz幅值为20的正弦波,FFT后的2khz信号幅值在1.8kHz和2kHz比较大,而1.9kHz的值明显误差较大,如图1、图2:

在这里插入图片描述

图1:对1kHz与2KHz叠加后的曲线进行傅里叶分析

图2:FFT曲线在2kHz位置明显有误差

2、问题原因

采样数据在经过FFT算法之后可以得到离散信号在对应频率上的幅值。但是由于采样频率和采样点数量的选择问题,导致不能显示出对应频率点的幅值。

上面所提供示例只能列出1.8k与2kHz频率点,而无法列出1.9kHz目标频率点。

在这里插入图片描述

图3:图像无法标注出1.9kHz频率,导致计算有误差

3、解决方案

选择合适的采样频率和采样点数进行分析,使得可以计算出目标曲线的对应频率值即可得到非常高的FFT结果

另:

采样频率为 fs

采样点有 n

FFT后第 m 个点的频率为 m*fs/n ,则 m 必然为整数

若需要分析的信号包含两个频率的正弦波,其频率分别为 f1f2

则需要满足:

m1*fs/n=f1

m2*fs/n=f2

即:m1=f1*n/fsm2=f2*n/fs 均为整数

满足以上关系即可以获得比较准确的FFT结果。

以上举例中,将第二个频率改成 2kHz 即可满足以上关系,得到的FFT图像如下:

在这里插入图片描述

图4:图像可以标注出2kHz频率,计算准确
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号