用 FFT 过滤正弦波

Filtering a sinusoidal wave with FFT

我正在尝试在 Matlab 中编写一个代码,该代码采用一个或多个带有噪声的正弦波,并尝试使用以下算法对其进行过滤:

但是我得到的最后一个波即使是正弦波也是异相的(见图表)。是因为我将 abs() 应用于 fft 吗?
但是我从中得到这个算法的 material 没有讨论这个。
我是否需要应用任何其他过滤器才能获得实际的波浪?

这是两个波的图:一个是我从上面的过程中得到的,另一个是实际的波,它是一个没有噪声的正弦波: my graph

看看我的过滤波和实际波是如何反相的如何纠正??

如果你不明白问题或有什么想问我的,请评论我会尽力解释。

您将 FFT 结果的绝对值分配给 y,因此您得到了 REAL 值。对其执行 ifft() 只是假设虚部为零,因此相移。