我正在研究一种控制系统,用来测量振动机械臂的运动。因为有一些死区,所以我需要考虑这个有点嘈杂的信号的未来。我的想法是使用采样信号中的频率,并产生一个可用于外推的傅立叶函数。
我的问题:我已经有了信号向量的FFT (包含60-100个值,例如)并且可以看到振幅谱中的主要频率。现在我想要有一个函数f(t),它适合信号,去除一些噪声,并且可以用来预测信号的不久的将来。如何从复杂的FFT数据中计算正弦/余弦函数的系数?
非常感谢!
发布于 2011-10-29 17:58:55
AFAIR FFT本质上产生的输出是具有不同频率的正弦函数的和。每个频率的重要性在于每个峰值的高度。所以你真正想要做的是过滤掉一些频率(即,手臂轻轻移动的高频),然后返回到时域。
在matlab中,这应该像是遍历从fft得到的向量,将一些值设置为0(或对其执行更复杂的操作),然后使用ifft返回时域,并根据得到的结果进行预测。
在这样做的时候,你还应该考虑一件事-奈奎斯特频率-这意味着你在fft上得到的最高频率是采样频率的一半。
发布于 2011-10-30 03:41:04
如果你对FFT孔径长度内不是周期性的数据使用FFT,那么你可能需要使用一个窗口来减少由于“频谱泄漏”而产生的杂散频率。频率估计技术更好地估计“在bin之间”的频率内容也可能是适当的。每个余弦正弦波相对于窗口边缘的相位通常是atan2(imagi,reali)。该频率取决于采样速率和相对于FFT长度的二进制数。
您可能还希望考虑使用卡尔曼滤波器而不是FFT。
添加:如果您的信号在FFT长度中不是精确的整数周期,那么您可能需要在FFT之前执行fftshift,以将产生的相位测量参考点移动到数据矢量的中心,而不是可能不连续的圆形边缘。
https://stackoverflow.com/questions/7938043
复制相似问题