如何从复数 FFT 中获取正弦/余弦函数的系数?

信息处理 傅里叶变换 fft
2022-02-04 14:48:28

我正在开发一个控制系统来测量振动机器人手臂的运动。因为有一些死区时间,我需要看看有点嘈杂的信号的未来。我的想法是使用采样信号中的频率并产生可用于外推的傅立叶函数。

我的问题:我已经有了信号矢量的 FFT(例如包含 60-100 个值),并且可以看到幅度谱中的主要频率。现在我想要一个适合信号的函数 f(t),去除一些噪声,并且可以用来预测信号的近期未来。如何从复杂的 FFT 数据中计算正弦/余弦函数的系数?

1个回答

对于任何研究过信号处理的人来说,这都是一件容易的事(我想知道为什么它已经被回答了这么久)

傅里叶变换本身就是一个函数,它告诉您需要将什么正弦曲线加在一起来创建这个连续信号。(对于更复杂的信号,它类似于傅里叶级数)

FFT 算法为您提供 COMPLEX 系数 (a+bj)(其中 j 是虚数...看起来像和 i 但倒数...)

计算每个系数的大小 A(n) = sqrt(a(n)^2 + b(n)^2) 计算每个系数的相位 phi(n) = inverse_tan(b(n)/a(n)) ; (记得使用 atan2 以便它产生正确的象限)

现在请记住,根据您的采样率,每个 coeff 代表频率的“bin”,但是您应该将它们视为均匀分布的频率:

因此,如果您有 N 个 bin,它们代表的每个 frequency_bin 为 f = Fs/(2*N)

然后你的信号变成

f(x)=Σ0NA(n)cos(2πf(n)+ϕ(n))

还有:预测功能:不可能。那将要求一个非因果系统。