打印

stm32f4 用DSP库做FFT变化,第一次数据有误?

[复制链接]
3835|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
KC_CEC|  楼主 | 2013-11-12 14:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我做的FFT数据输出有误,请大家分析一下:
1、现在设定采样频率Fs=40.96k,采样点数N为1024个点,那么采样分辨率P就是40HZ。
2、音频输入一个400HZ的信号,那么在fft内存中取出来对应采样点数:M=Fin/P+1=11,
就是第11点是对应400HZ的幅度了
3、现在经过串口打印出来数据如下:

可以看出来,第一次转换出来的数据是有误的,后面的数据都正常。
4、然后我在fft一直转换的过程中,改变输入频率为800HZ,可以算出是第21个点为幅度
但是效果依然如下:

第二个数据就是我换频率后转换出来的。
所以从这个结果来看:换频率后的第一次采样都得丢掉
不知道大家遇到过这个问题没有,还是哪里有说明我没有找到?


沙发
KC_CEC|  楼主 | 2013-11-12 16:50 | 只看该作者
刚开始以为是fft转换函数的问题,于是每次运行两次fft转换,发现结果还是一样的。
所以就想到了是ADC的问题,然后把ADC的转换时间和两次转换间隔时间都调到了最大,
这样得出的结果和实际值就很接近了。但总是比实际值小,所以还得再看看。

使用特权

评论回复
板凳
KC_CEC|  楼主 | 2013-11-22 16:10 | 只看该作者
找到原因了,自己程序逻辑错误。
修改之后,采样进来的数据经过加窗处理再进行fft转换,出来的频谱就漂亮了
那么,结贴了

使用特权

评论回复
地板
Zacking| | 2015-4-28 16:05 | 只看该作者
KC_CEC 发表于 2013-11-22 16:10
找到原因了,自己程序逻辑错误。
修改之后,采样进来的数据经过加窗处理再进行fft转换,出来的频谱就漂亮了[ ...

请问楼主加窗处理是怎样的?

使用特权

评论回复
5
KC_CEC|  楼主 | 2015-4-29 22:29 | 只看该作者
Zacking 发表于 2015-4-28 16:05
请问楼主加窗处理是怎样的?

就是在对数据做FFT变化之前,对数据进行加窗。
然后这样FFT出来的数据更加利于分析,窗的种类很多的

使用特权

评论回复
6
Zacking| | 2015-4-30 09:01 | 只看该作者
KC_CEC 发表于 2015-4-29 22:29
就是在对数据做FFT变化之前,对数据进行加窗。
然后这样FFT出来的数据更加利于分析,窗的种类很多的 ...

哦,加窗是为了 让数据更准确些吗,一般用什么加窗种类呢?比较实用的

使用特权

评论回复
7
caicaii| | 2016-1-26 15:19 | 只看该作者
请问楼主,是在ADC之后FFT之前做的加窗么?不应该在FFT之后么?能否详细讲解下,多谢多谢

使用特权

评论回复
8
yuanzuo| | 2016-6-27 12:47 | 只看该作者
KC_CEC 发表于 2015-4-29 22:29
就是在对数据做FFT变化之前,对数据进行加窗。
然后这样FFT出来的数据更加利于分析,窗的种类很多的 ...

楼主能共享一下加窗的代码么,谢谢~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

169

帖子

1

粉丝