3

我正在寻找一种将复数数组转换为极坐标表示的快速方法。

例如,给定一个复数 XI 想把它变成这样的极坐标表示:

  Q.phase    = atan2 (X.imag / X.real);
  Q.magniude = sqrt  (X.imag * X.imag + X.real * X.real);

我需要在定点 DSP 上每秒进行大约 40 万次的转换。我的号码是 1.15.16 定点格式,我想保持这种格式。

当我在无条件循环中执行操作时,DSP 非常快,例如,当循环计数预先知道时。当它必须进行子程序调用和分割时,它会爬行。缓存未命中也很慢,所以如果可能的话,我不想使用大型查找表(4k 就可以了。我可以为该任务留出一点片上内存)。

目前,我将 atan2 处理为多项式近似,并使用众所周知的按位算法来计算整数平方根。这还不够快。

我觉得应该有一种更有效的方法来获得结果。也许可以共享来自 sqrt 和 atan 的一些计算?或者有没有一种迭代的方式来获得我的结果?

4

1 回答 1

2

看看这个 CORDIC DSP optimization很难说它是否对你有帮助。

于 2009-11-22T15:53:36.780 回答