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

[复制链接]
4734|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、现在经过串口打印出来数据如下:
TM截图未命名.png
可以看出来,第一次转换出来的数据是有误的,后面的数据都正常。
4、然后我在fft一直转换的过程中,改变输入频率为800HZ,可以算出是第21个点为幅度
但是效果依然如下:
TM截图未命名2.png
第二个数据就是我换频率后转换出来的。
所以从这个结果来看:换频率后的第一次采样都得丢掉
不知道大家遇到过这个问题没有,还是哪里有说明我没有找到?


 楼主| 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转换,出来的频谱就漂亮了[ ...

请问楼主加窗处理是怎样的?
 楼主| KC_CEC 发表于 2015-4-29 22:29 | 显示全部楼层
Zacking 发表于 2015-4-28 16:05
请问楼主加窗处理是怎样的?

就是在对数据做FFT变化之前,对数据进行加窗。
然后这样FFT出来的数据更加利于分析,窗的种类很多的
Zacking 发表于 2015-4-30 09:01 | 显示全部楼层
KC_CEC 发表于 2015-4-29 22:29
就是在对数据做FFT变化之前,对数据进行加窗。
然后这样FFT出来的数据更加利于分析,窗的种类很多的 ...

哦,加窗是为了 让数据更准确些吗,一般用什么加窗种类呢?比较实用的
caicaii 发表于 2016-1-26 15:19 来自手机 | 显示全部楼层
请问楼主,是在ADC之后FFT之前做的加窗么?不应该在FFT之后么?能否详细讲解下,多谢多谢
yuanzuo 发表于 2016-6-27 12:47 | 显示全部楼层
KC_CEC 发表于 2015-4-29 22:29
就是在对数据做FFT变化之前,对数据进行加窗。
然后这样FFT出来的数据更加利于分析,窗的种类很多的 ...

楼主能共享一下加窗的代码么,谢谢~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

169

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部