FFT Demo#
简介#
本示例展示了如何使用 K230 的 FFT API 进行快速傅里叶变换(FFT)和逆快速傅里叶变换(IFFT)的计算。通过该示例,用户可以学习如何调用相关 API 来执行 FFT 和 IFFT 操作,并验证其正确性和性能。
该 demo 首先进行 FFT 计算,然后进行 IFFT 计算,以验证 FFT 功能的准确性和效率。具体来说,demo 对不同点数(如 64、128、256 等)的数据进行 FFT 和 IFFT 操作,并记录每个点的最大差异和计算时间。输出结果包括以下信息:
每个点数的 FFT 和 IFFT 操作的最大差异。
每个点的具体差异值,包括实部和虚部的差异。
每个点数的 FFT 和 IFFT 操作所用的时间(以微秒为单位)。
最终结果是否正确(通过比较差异值来判断)。
通过这些信息,用户可以评估 FFT 和 IFFT 操作的准确性和性能。
功能说明#
FFT功能#
FFT计算:对时域信号进行快速傅里叶变换
IFFT计算:对频域信号进行逆快速傅里叶变换
多点数支持:支持64、128、256、512、1024、2048、4096等多种点数
精度验证:通过IFFT恢复后比较验证精度
性能测试:测量FFT/IFFT操作的耗时
代码位置#
Demo 源码位置:src/rtsmart/examples/mpp/sample_fft
使用说明#
编译方法#
在 K230 RTOS SDK 根目录下使用 make menuconfig 配置编译选项,选择将FFT示例编译进固件,然后编译固件。
运行示例#
./sample_fft.elf <test_type>
参数说明#
参数名 |
说明 |
参数范围 |
|---|---|---|
test_type |
测试类型 |
1=运行所有测试, 其他=运行指定测试 |
查看结果#
启动开发板后,进入 /sdcard/elf/examples 目录,运行 sample_fft.elf 进行测试。
运行后,您将看到类似以下的输出结果:
-----fft ifft point 0064 -------
max diff 0003 0001
i=0045 real hf 0000 hif fc24 org fc21 dif 0003
i=0003 imag hf ffff hif 0001 org 0000 dif 0001
-----fft ifft point 0064 use 133 us result: ok
-----fft ifft point 0128 -------
max diff 0003 0002
i=0015 real hf 0001 hif fca1 org fc9e dif 0003
i=0031 imag hf 0001 hif fffe org 0000 dif 0002
-----fft ifft point 0128 use 121 us result: ok
-----fft ifft point 0256 -------
max diff 0003 0001
i=0030 real hf 0000 hif fca1 org fc9e dif 0003
i=0007 imag hf ffff hif 0001 org 0000 dif 0001
-----fft ifft point 0256 use 148 us result: ok
-----fft ifft point 0512 -------
max diff 0003 0003
i=0060 real hf 0000 hif fca1 org fc9e dif 0003
i=0314 imag hf 0001 hif fffd org 0000 dif 0003
-----fft ifft point 0512 use 206 us result: ok
-----fft ifft point 1024 -------
max diff 0005 0002
i=0511 real hf 0000 hif fc00 org fc05 dif 0005
i=0150 imag hf 0000 hif fffe org 0000 dif 0002
-----fft ifft point 1024 use 328 us result: ok
-----fft ifft point 2048 -------
max diff 0005 0003
i=1022 real hf 0000 hif fc00 org fc05 dif 0005
i=1021 imag hf 0000 hif 0003 org 0000 dif 0003
-----fft ifft point 2048 use 574 us result: ok
-----fft ifft point 4096 -------
max diff 0005 0002
i=4094 real hf 027b hif 041f org 0424 dif 0005
i=0122 imag hf 0000 hif 0002 org 0000 dif 0002
-----fft ifft point 4096 use 1099 us result: ok
通过这些输出,您可以验证 FFT 和 IFFT 操作的准确性和性能。
提示
FFT是数字信号处理中的基础算法,常用于音频、图像等信号分析。有关FFT模块的具体接口,请参考 FFT API 文档。
