我们可以将每个算法转换为定点吗?

Can we convert every Algorithm in fixed point?

我在 MATLAB 中使用浮点变量开发了一个算法。在我的算法中,我多次进行特征值分解、旋转、矩阵变换、矩阵逆、除法、加法和矩阵乘法。(所以这是对信号的一种处理)。我试图将它转换为不动点,但我做不到,因为我的变量和矩阵每次都会改变它的值。所以对我来说很难处理溢出问题,因为我无法制定任何例程来处理溢出问题。任何人都可以告诉我如何处理这个问题,或者无法将算法转换为定点。 我需要一个一致的理由来证明我不能将我的算法转换为不动点(因为这是我的硕士论文!)

P.S:- 该算法是为模数转换器的控制器开发的,它利用信号的统计数据并给出有效的决策阈值。我刚刚写了数学运算。

答案是肯定的,也不是。取决于处理后的数据动态范围

  • 如果您正在处理指定范围内的 numbers/signal 那么是
  • 但如果 numbers/signal 具有非常高的动态范围,则否

你应该为信号处理的不同阶段使用更多的定点格式

  • 例如 ADC 为您提供精确定义范围内的值
  • 因此您必须使用固定格式,这样才不会损失精度并且没有太多未使用的位
  • 之后你应用一些过滤器或者范围发生什么变化
  • 因此您需要限制每个阶段可能的数字范围,并使用您可以使用的最适合的定点格式

这意味着您需要一些定点格式

  • 以及它们之间的操作
  • 你可以有固定的位数,只改变小数点的位置...

更具体地说,您需要添加处理管道的框图

  • 包括数字范围
  • 和使用的操作列表
  • 矩阵运算和 integrals/sums 很棘手,因为它们可以显着改变动态范围

真正的问题总是存在,如果这样的实现比浮点更快...

  • 因为有时不同定点阶段之间的转换可能比直接浮点实现慢...