我们可以在固定点转换每个算法吗?

时间:2015-03-13 13:05:40

标签: algorithm overflow fixed-point

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

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

1 个答案:

答案 0 :(得分:1)

答案是肯定而且不是。它取决于处理的数据动态范围

  • 如果您正在处理指定范围内的数字/信号,那么是
  • 但如果数字/信号具有非常高的动态范围,那么NO

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

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

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

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

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

  • 包含数字范围
  • 以及使用过的操作列表
  • 矩阵运算和积分/求和很棘手,因为它们可以显着改变动态范围

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

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