FFT快速傅里叶变换(Fast Fourier Transform)是数字信号处理中的核心算法,用于将时域信号转换为频域表示。
核心库主要特性:
提供快速傅里叶变换(FFT)和逆快速傅里叶变换(IFFT)功能;
支持Q15定点和F32浮点两种FFT实现方式;
满足不同应用场景的性能和精度需求。
典型应用场景:
频谱分析:分析信号的频率成分和能量分布;
音频处理:音调识别、音频特征提取;
振动监测:机械设备故障诊断和状态监测等。
本文将以Air780EPM开发板为例,分享FFT应用示例要点。
01. FFT示例功能
本demo是FFT(快速傅里叶变换)测试,支持Q15定点和F32浮点两种实现方式。
主要功能:
生成200Hz正弦波测试信号;
使用Q15定点FFT算法处理数据;
使用F32浮点FFT算法处理相同数据;
计算并输出两种实现方式的性能对比(执行时间);
分析频谱结果,定位并显示主峰频率。
02. FFT示例代码
数据格式及test_fft.lua核心测试代码如下,完整demo详见源码仓库最新文件。
Q15定点格式:
表示范围:-1.0到0.999969482421875
存储格式:16位有符号整数
优势:在无浮点单元的MCU上高效运行
F32浮点格式:
表示范围:标准单精度浮点数
精度:更高的计算精度
适用场景:对精度要求较高的应用
03. FFT功能验证
Air780EPM开发板通过LuaTools烧录内核固件和demo脚本代码,烧录成功后开机运行,即可查看日志。
通过LuaTools可以观察到:
频率准确性:
检测到的主峰频率接近200Hz;
性能对比:
Q15 FFT(耗时10ms)比F32 FFT(耗时24ms)更快。