各位高手,现在用
STM32F0的ADC采样一组不规则信号,128个点,200HZ采样;采样数据经过MTLAB验证,FFT转换结果跟keil运行输出结果一致,说明FFT程序正确。现在经过FFT转换输出的128个模数(x
.real=sqrt(x.real*x.real+x.img*x.img);),取了64个数据转换功率来分析(根据FFT对称性),把64个功率数据由串口输出,从串口数据来看,在不规则信号幅度低的时候,输出数据如下:(35 10 15 18 20 0F 00 0C 19 1F 15 12 10 0F 06 0C 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00);
在不规则信号幅度高的时候,输出数据如下:(35 1C 25 19 29 23 19 16 1B 26 2B 28 2D 29 20 28 13 22 24 18 21 10 21 1B 1C 24 1A 19 1F 13 1A 17 17 18 18 18 1A 14 13 15 17 1A 19 1B 14 13 16 15 16 0D 09 10 14 15 0C 1A 17 10 13 0C 09 06 09);
观察数据发现:输入信号幅度低时,在64个点对应频率0-25HZ以后,各个频点对应功率全部为0;而信号强的输出数据,64个频点对应的功率都大于0。 对于这64个数据,是不是输入信号幅度越高,FFT转换后的对于功率就越大?要分析原始波形的幅度,是不是看这64点功率就可以一一对应判断了?对这64个数据还需要进行什么分析才知道原始波形高点的频率和幅度?
//5ms采1个点,128个点,采样频率F=200Hz
//FFT结果的128个数据对应频率点是:0,1*200Hz/128,2*200Hz/128,3*200Hz/128, 。。。 ,127*200Hz/128 (0->127)
//N=128
//频率点表:
// 0.00-> 1.5625 -> 3.125- > 4.6875 -> 6.25 -> 7.8125 -> 9.375 -> 10.9375-> //8PCS
// 12.5 -> 14.0625-> 15.625-> 17.1875-> 18.75-> 20.3125-> 21.875-> 23.4375-> //8pcs
// 25.00-> 25.5626-> 28.125-> 29.6875-> 31.25-> 32.8125-> 34.375-> 35.9375-> //8PCS
// 37.5 -> 39.0625-> 40.625-> 42.1875-> 43.75-> 45.3125-> 46.875-> 48.4375-> //8pcs
不知道楼主有没有对采样数据*2呢?
因为,采样频率要大于信号频率的两倍,才能恢复出实际波形。
以下提供圈圈大神的详细解释:
http://www.eeworld.com.cn/Test_a ... /article_12114.html
再提供一份:FFT后的物理意义
http://www.xuebuyuan.com/539160.html
刚发现,这个解释才牛:
https://zhuanlan.zhihu.com/wille/19763358
一周热门 更多>