【问题标题】:Fast Fourier Transform using a Vandermonde Matrix - Evaluation of Co-efficients?使用 Vandermonde 矩阵的快速傅立叶变换 - 系数评估?
【发布时间】:2009-04-24 12:45:31
【问题描述】:

假设我正在尝试评估多项式:

x^2 + 1

使用快速傅里叶变换方法评估系数。现在我可以使用 co-effcient 作为快速傅立叶变换的输入将其更改为矩阵/向量形式:

所以:

x^2 + 1 = <1, 0, 1, 0>

这是通过使用系数值来完成的,例如 1 = 1、0x^1 = 0、X^2 = 1 等等

现在我们进入了我完全困惑的地方。我打算使用范德蒙德矩阵:Vandermonde matrix ~ Wiki 使用矩阵将这些值评估为 FFT 形式:

1 1 1 1  
1 i-1-i
1-1 1-i
1-i 1 i

输出

fft(1,0,1,0)

(2,0,2,0)

现在这一步我不太明白,我们如何使用该矩阵得到 (2,0,2,0)?

【问题讨论】:

  • “快速傅里叶变换如何使用 Vandermonde 矩阵工作?”是一个更好的标题?
  • 这个编程有什么关系?这是一个 mtah 的理论问题...
  • @Mitch:我承认我对 FFT 了解不多,只能推测 keval 问题的答案,但我确实在使用 FFT 仪器的科学家周围工作了几年。我的理解是,如果没有计算机,您将无法合理地对现实世界的问题进行 FFT。因此,我认为这是与编程相关的,而不是在 SO 上获得很多支持的很多内容。
  • 它的编程相关——因为有一个算法可以做到!

标签: math matrix fft


【解决方案1】:

首先,您的 Vandermonde 矩阵不正确。 (4,3) 条目应该是 -1,而不是 1,因为第四行应该是 (-i)0, (-i)1, (-i )2、(-i)3。特别注意

(-i)*(-i) = (-1)2 * i2 = i2 = -1。

通过此校正,结果是 Vandermonde 矩阵乘以列向量 (1,0,1,0)。

【讨论】:

  • 啊,是的,我很粗心!我不敢相信我花了很长时间这样看它,但现在我终于明白了。现在进入下一部分:)
【解决方案2】:

也许您可以在这里解释一下您的总体目标。我从未听说过 FFT 用于评估多项式。它们用于多项式,或对信号进行卷积(等效任务),但除非多项式/信号具有大量项,否则我不会打扰。 x2 + 1 不大。 16 项并不大,甚至 64 或 256 项也可能通过简单的 O(N2) 技术更好地完成。

Discrete Fourier Transforms 使用矩阵 Mij = ωij 其中 ω 是 1 的第 N 个复数根,列/行编号从 0 到 N-1。

快速傅里叶变换从不直接使用此矩阵,它们经过大量优化以使用分而治之的技术 (Cooley-Tukey algorithm) 通过串联和并联的 2x2 DFT 阶段计算最终结果。

如果你把你的向量写成 [0,1,0,1] 而不是 [1,0,1,0],我想你会看到如果你把它乘以你给出的矩阵,你会得到[0,2,0,2]。 (虽然你有一个错误,它是

1 1 1 1  
1 i-1-i
1-1 1-1
1-i-1 i

) 您正在使用的程序中必须有一些约定可以颠倒向量系数的顺序。

【讨论】:

  • 谢谢,我现在明白了。我也想知道,如果我想把 [0,2,0,2] 转回 [0,1,0,1]?我知道你打算使用某些东西的倒数..但我不太确定!
  • 查看 DFT 上的维基百科页面:en.wikipedia.org/wiki/… 你取矩阵的复共轭并除以 N = 向量长度。
猜你喜欢
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
相关资源
最近更新 更多