需要为延迟时间计算编写的算法

时间:2013-11-05 14:37:38

标签: c++ algorithm math signal-processing core-audio

假设我们有一个变量x(采样率),并且对于并行梳状滤波,将使比率为1:1.5的4个延迟时间(在采样中)。在下面的示例中,梳状滤波器时间从30到45毫秒不等。 x / 1000 = a a * 30 = i a * 35 = j a * 40 = k a * 45 = n 第一个数字我应该四舍五入到最接近的整数。第二个数字j应该向上舍入到与i没有任何公因子的整数,并且k应该向上舍入为与i和j都没有任何公因子的整数,依此类推。所以我正在寻找一种算法,它将所有数字j,k和n四舍五入,与i没有公约数。

我们遇到的真正问题是没有找到一种简单的方法来找到两个数字的常见NONE除数,就像你在谷歌这个结果都是常见除数的解释等...如果有人可以解释那一点其余的就是一块无论如何,蛋糕。

非常感谢你提前

1 个答案:

答案 0 :(得分:5)

您可以简单地为每个素数计算下一个素数,这可能比尝试找到没有公因子的任意数字更快。我不知道您的应用程序中的比例x是多少,但如果它相当小,那么计算下一个素数三次几乎不需要时间。

在0到1,000,000之间只有78,500个素数。您可以轻松生成所有这些并将它们存储在表中。然后,给定一些值,二进制搜索将为您提供大于该值的下一个素数。因此,如果您从未期望a*45大于1,000,000,您可以快速获得下一个数字。当然,存储素数会花费一点时间。

或者,您可以生成从0到* 45之后的所有素数。这样做需要一点时间,但如果你不经常这样做,那可能是一个完全可以接受的解决方案。特别是如果您之后要进行的处理比计算几个素数要贵得多。

有关详情,请参阅Optimizing the wrong thing