【问题标题】:calculate res[i+j] = a[i]*b[j] in Nlg(N) [duplicate]计算 Nlg(N) 中的 res[i+j] = a[i]*b[j] [重复]
【发布时间】:2012-11-12 02:33:30
【问题描述】:

可能重复:
Fast convolution algorithm

我有两个长度为 N 的数组 a 和 b。我想将结果数组计算为

res[i+j] += a[i]*b[j]

是否可以使用 FFT 或类似的东西在时间上比 N^2 更快地计算出来。我已经在1D Fast Convolution without FFT 看到过这个问题,但我不确定如何使用 FFT。

EG: A=[1,2,3],B[2,4,6]
res[3] = A[1]*B[2]+A[2]*B[1]

提前致谢

【问题讨论】:

  • 你能举个例子来澄清这个问题吗?假设有几对索引 (i,j),使得 a[i]+b[j] 为 10。res[10] 的正确值是多少?
  • 按要求完成。很抱歉之前的错误。
  • @HOTPOW2:你知道我该如何概括我的情况吗?

标签: algorithm fft convolution


【解决方案1】:

据我了解,您需要 FFT 算法。 here你有这个算法的实现,也很好地解释了如何实现 FFT 算法。

【讨论】:

  • 有没有机会告诉我如何在我的情况下使用它?谢谢
  • 我很乐意给你一个 100% 确定正确的答案。但我猜你使用了这个链接cs.sjsu.edu/faculty/smithj/oldclass/155f07/solutions/a4/…的public double[] multiply(double[] p1, double[] p2)。你必须做类似 res multiply(a,b);但是您必须阅读并尝试理解才能确定。
猜你喜欢
  • 2021-04-09
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 2019-04-19
  • 2017-09-10
相关资源
最近更新 更多