傅立叶变换帮助

时间:2011-02-22 23:12:49

标签: c# math image-processing

我想在傅里叶变换方面做一些工作,我仍然很困惑。

我有一个信号(在这种情况下,它是f [t] = sin(2 pi s t / N),其中s = 8且N = 128)

我想要找到真实,想象,相位和数量。

我理解如何获得真实和想象,但相位和幅度超出了我...

获取Real和Imaginary的sudo代码是:

for u = 0 to M-1 do
F[u].real = 0
F[u].imag = 0
for x = 0 to M-1 do
    F[u].real += f[x] * cos(- 2 * pi * u * x / M)
    F[u].imag += f[x] * sin(- 2 * pi * u * x / M)
end do
F[u].real /= M
F[u].imag /= M
end do

现在某处有相位和幅度,但在哪里?!

谢谢!

此外,一些程序员 - 相当于对FT的基础知识的探索也会很棒!

2 个答案:

答案 0 :(得分:3)

来自http://en.wikipedia.org/wiki/Complex_number#Absolute_value_and_argument

  • 幅度为sqrt(real^2 + imag^2)(其中^表示“平方”)。
  • 阶段为atan2(imag, real)(其中atan2()表示双参数arctan函数)。

维基百科的文章解释为什么比我在这里做得更好。

答案 1 :(得分:3)

如果您将实部和虚部作为XY平面中的坐标,则相位是矢量和X +轴之间的角度,幅度是矢量的长度。 要计算,那么你只需要

magnitude = sqrt(real*real + imag*imag)
phase = atan2(imag, real)