【发布时间】:2011-05-30 14:49:25
【问题描述】:
如果输入数组是 {0,1,2,3,4,5,6,7},谁能告诉我快速 Furier 变换后的正确结果是什么。
我得到了 {28,0,0,0,0,0,0,0}。不对吧?
只想测试 C 中的 FFT 实现。
谢谢, 安德烈
【问题讨论】:
标签: fft
如果输入数组是 {0,1,2,3,4,5,6,7},谁能告诉我快速 Furier 变换后的正确结果是什么。
我得到了 {28,0,0,0,0,0,0,0}。不对吧?
只想测试 C 中的 FFT 实现。
谢谢, 安德烈
【问题讨论】:
标签: fft
{0,1,2,3,4,5,6,7} 的 FFT 的正确答案是
{28.0000 + 0.0000i,
-4.0000 + 9.6569i,
-4.0000 + 4.0000i,
-4.0000 + 1.6569i,
-4.0000 + 0.0000i,
-4.0000 - 1.6569i,
-4.0000 - 4.0000i,
-4.0000 - 9.6569i}
【讨论】:
不,这是不正确的(单个非零输出元素意味着您的输入由常数值或单个复指数分量组成)。
为什么不使用现有的 FFT 实现,例如 FFTW 来提供参考结果?或者只是实现一个简单的 DFT?
【讨论】:
根据Wolfram Alpha是:
请注意,没有单一的“正确答案”,因为 DFT/FFT 的定义不止一个,每个定义之间的差异是您为正向和逆变换所包含的比例因子。 (此答案与之前接受的答案之间的差异只是sqrt(8) 的比例因子)。
【讨论】:
Divij 答案假定输入 {0,1,2,3,4,5,6,7} 的大小为 8,即:
{0,0i},{1,0i},{2,0i},{3,0i},{4,0i},{5,0i},{6,0i}
对于被认为是 size=4 的二进制复数的输入,即:
{0,1i},{2,3i},{4,5i},{6,7i}, 结果是:
{12, 16i}
{-8, 0i}
{-4, -4i}
{0, -8i}
【讨论】: