zhyue12 发表于 2018-11-22 10:10:21

stm32f1 DSP库做FFT变换 结果不正确

用stm32f103 的dsp库做FFT,当频率为浮点数时结果不正确。


#define NPT   (256)//采样点数
#define PI2   (6.28318530717959)
#define Fs    (256)   //采样频率



模拟输入为
fx = 1500 * sin(PI2 * i * 52 / Fs);
计算出的第53点幅值为1496;

模拟输入为:
fx = 1500 * sin(PI2 * i * 52.6 / Fs);

计算结果第54点为1130,附近幅值如下:
101
129
178
288
760
1130
321
186
131
100
81

请问各位大神结果为啥差别这么大呢?
还是说输入频率不能为浮点数?


wenyangzeng 发表于 2018-11-22 10:31:22

楼主好像不是用浮点小数运算。怎么都没有小数点?

zhyue12 发表于 2018-11-22 10:44:24

wenyangzeng 发表于 2018-11-22 10:31
楼主好像不是用浮点小数运算。怎么都没有小数点?

是模拟输入的频率为浮点数时,结果不正确,一个是50HZ,一个是52.6HZ

wenyangzeng 发表于 2018-11-22 11:58:05

zhyue12 发表于 2018-11-22 10:44
是模拟输入的频率为浮点数时,结果不正确,一个是50HZ,一个是52.6HZ

整个FFT运算应该都是浮点运算,结果也是浮点小数而非整数,一楼的输出显示是整数的。

zhyue12 发表于 2018-11-22 12:59:09

wenyangzeng 发表于 2018-11-22 11:58
整个FFT运算应该都是浮点运算,结果也是浮点小数而非整数,一楼的输出显示是整数的。 ...

输出那个是最后复数求模后得到的幅值
页: [1]
查看完整版本: stm32f1 DSP库做FFT变换 结果不正确