我想知道对于精度很重要的Q31应用来说,使用定点DSP是否比使用浮点(单精度)更好。更多细节,我目前正在使用ARM Cortex-M7微控制器,我需要使用CMSIS库执行高精度的FFT。我知道SP的尾数是24位,而Q31的尾数是31位,所以Q31的精度应该会好一些,但我在很多地方都看到,如果要进行乘法等运算,便应该采用浮点表示,我不明白为甚麽会这样。
提前谢谢。
发布于 2020-04-28 00:15:07
要获得固定点的最大值(尾数精度的额外6或7位),以及避免大量可能的下溢和溢出问题,需要精确了解CMSIS算法中每个有效输入数据集的每个算术操作的界限(最小和最大值)。
在实践中,完整的误差分析被证明是困难的,以及将所有中间值重新调整到最佳范围所需的添加操作都会极大地降低性能,以至于只有较窄的一组情况似乎值得付出努力,而不是使用M7在硬件中支持的IEEE信号或双精度,并且浮点指数范围隐藏了大量(但不是全部!)中间结果的数值缩放问题。
但对于一些更简单的DSP算法,有时分析和修复缩放并不是问题。如果不分解你所需要的算法中每个算术运算的数值范围,就很难分辨出是哪一个。有时需要完成使用整数运算所需的工作,因为可用的处理器不能很好地或根本不支持浮点运算。
https://stackoverflow.com/questions/61461367
复制相似问题