【发布时间】:2012-10-16 05:11:24
【问题描述】:
我正在尝试优化一个音频算法,它必须在每一步中计算如下两种算法。现在我读到,没有在多项式时间内运行的对数算法。 我的问题是,如果通过查找表来计算所有对数是否有意义,因为它们总是相同的,尽管有大量内存访问的缺点?
for(int f=1;f<11000;f++){
for(int fk=1;fk<1000;fk++){
int k = ceil(12 * log2f((f - 0.5) / fk));
}
}
我正在用 C++ 编程。
非常感谢!
【问题讨论】:
-
你在用k做什么?您发布的代码没有副作用或输出。
-
在你开始做复杂的事情之前请注意:log((f-0.5)/fk) = log(f-0.5)-log(fk) 这样你就可以分别计算这些,从而将问题减少到 1000 +11000 日志计算。这将日志计算量减少了大约 1000 倍。
-
@Bitwise,不久前我发布了一个答案。 (比您的评论早 13 秒。)
-
@jwpat7 aww...你抢了我;)
标签: algorithm optimization lookup-tables logarithm