我有一个高频运行的控制回路,需要在每个周期计算一个平方根。典型的平方根函数可以正常工作,但会花费过多的时间。由于我取平方根的值在每个循环中变化不大,我想找到一个迭代平方根,它会收敛,然后跟踪正确的结果。这样我可以在每个时间步进行一次迭代,而不是多次。
问题是当输入发生变化时,我见过的所有迭代平方根方法都可能会失败。特别是当输入变为零然后再次增加时,看起来会有问题——这些方法不喜欢从猜测零开始。
我的输入范围是 0-4.5,我需要大约 0.01 的精度,因此使用 0.01 的增量/减量可能需要很长时间 - 我希望它大部分在 10 个周期或更短的时间内收敛。
仅供参考,我使用的是 16/32 位定点,输入是 16 位 q12。它在微控制器上,所以我对使用 1K 查找表不感兴趣。代码也是从 simulink 模型生成的,它们的查表功能相当多的开销。
有一个很好的解决方案吗?