[应用相关] 单片机计算FFT很慢,在开启FPU后有没有其他办法更快点。

[复制链接]
 楼主| 风之呢喃 发表于 2025-2-28 16:01 | 显示全部楼层 |阅读模式
如何利用FPU加速卡尔曼滤波算法,将计算时间从500μs缩短至100μs以下?

评论

有调用CMSIS DSP库没有?  发表于 2025-3-10 14:37
modesty3jonah 发表于 2025-3-9 19:31 | 显示全部楼层
利用硬件加速模块              
jonas222 发表于 2025-3-9 20:08 | 显示全部楼层
如果单片机内置了专用的FFT硬件加速器,那么直接使用这些加速器将是最有效的方法。
chenci2013 发表于 2025-3-9 21:48 | 显示全部楼层
如果单片机没有FPU或者FPU性能不足,可以考虑使用定点运算来代替浮点运算。定点运算通常更快,因为它使用整数运算,不需要复杂的浮点数处理。
vivilyly 发表于 2025-3-10 11:53 | 显示全部楼层
汇编语言可以直接操作 CPU 的寄存器和指令集,能够更高效地完成计算任务。
backlugin 发表于 2025-3-10 15:05 | 显示全部楼层
可以在特定条件下显著提高计算速度。你可以根据具体需求选择合适的快速算法。
uiint 发表于 2025-3-10 18:18 | 显示全部楼层
虽然FPU可以加速浮点运算,但在某些情况下,使用定点运算可能会更高效。你可以将浮点数转换为定点数进行计算,最后再转换回浮点数。这可以减少浮点运算的开销。
我只会加减乘除 发表于 2025-3-11 11:47 | 显示全部楼层
用移位代替除法
uytyu 发表于 2025-3-11 13:13 | 显示全部楼层
合理安排数据的存储方式,减少内存访问时间。
tifmill 发表于 2025-3-11 15:11 | 显示全部楼层
在FFT计算过程中,尽量减少中断的发生,因为中断处理会打断FFT计算,增加额外的开销。
tabmone 发表于 2025-3-11 17:04 | 显示全部楼层
如果单片机支持,可以使用硬件加速器来加速FFT计算。
primojones 发表于 2025-3-11 20:05 | 显示全部楼层
通过代码优化,如减少不必要的计算、优化循环结构、使用更高效的算法等,可以进一步提高FFT的计算速度。
mattlincoln 发表于 2025-3-12 16:16 | 显示全部楼层
将FFT计算中的循环结构进行展开,减少循环控制的开销,提高指令执行的效率
jtracy3 发表于 2025-3-12 17:57 | 显示全部楼层
在进行FFT计算之前,对输入数据进行排序和分组,使得数据在计算过程中具有更好的局部性,便于处理器进行缓存优化,从而提高数据访问速度。
hudi008 发表于 2025-3-12 19:38 | 显示全部楼层
FFT计算中存在大量的对称性,充分利用这些对称性可以减少计算次数。
uptown 发表于 2025-3-12 21:41 | 显示全部楼层
FFT 计算通常需要大量的数据存储和访问。
febgxu 发表于 2025-3-14 10:32 | 显示全部楼层
预先计算并存储一些常用的三角函数值(如正弦、余弦值)在查找表中。在FFT计算过程中,直接通过查表获取所需的三角函数值,而不是实时计算,这样可以大大节省计算时间。
i1mcu 发表于 2025-3-14 12:15 | 显示全部楼层
通过降低采样率和FFT的大小              
benjaminka 发表于 2025-3-14 13:57 | 显示全部楼层
对于一些关键的计算函数,可以使用内联函数来减少函数调用的开销;对于性能要求极高的部分代码,可以使用汇编语言编写,以充分发挥单片机的硬件特性,提高代码的执行效率。
hilahope 发表于 2025-3-14 15:59 | 显示全部楼层
不同的 FFT 算法在计算复杂度和性能上有所差异。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

69

帖子

0

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