从 FFT 中过滤噪声,其中噪声已知是移位的 delta 函数

信息处理 fft 噪音 过滤
2022-02-02 06:53:21

我有一个实数的输入序列,其中对于某些我希望计算的 FFT 。x={x1,x2,...xn}n=2mmx

X=FFT(x)

然而,在我计算 FFT 之前,信号被噪声破坏,所以和计算的 FFT,的 FFT ,而不是 .xηx^=x+ηX^x^x

X^=FFT(x^)

我希望在以下假设下XX^

  1. x是带限信号;FFT 频谱迅速衰减。
  2. 噪声是一个移位的 delta 函数,具有未知的移位和幅度,即,其中分别为实数和整数。ηη(n)=Rδ(nl)R, l

我将如何以一种计算效率高的方式做到这一点?

2个回答

使用零相位滤波器对输入进行高通滤波,以消除感兴趣的信号,只留下高通噪声。如果信号是周期性的,您可以在频域中执行此操作并通过 IFFT 转换回时域。找出峰值的时间,并从滤波后的 delta 函数的大小(峰值或均方根)推导出未滤波的 delta 函数的大小。知道延迟和幅度,从原始输入信号中减去噪声。做 FFT。

有更有效的方法来决定您的问题。在计算 FFT 之前,尝试在时域中使用一些非线性滤波器。中值滤波器是用于降低脉冲噪声的简单而有效的滤波器 ( Median_filter )。您可以使用大小为 3 的最简单版本。

更新

是对zimbra314的评语的回答。

奇怪的约束。在时域中降低脉冲噪声很容易,但在频域中则不然。但是,这是你的功课吗?如果是这样,我可以给你一个提示。请做delta函数的FFT。请参阅此频谱的幅度和相位。δ函数的幅值谱形式非常简单,高频成分很多。您的信号是带限的,因此没有任何高频分量。因此,您可以轻松估计噪声的幅度谱。如您所知,2 个函数之和 ( ) 的 FFT 是该信号的 FFT 之和。所以你可以中减去噪声的幅度谱x+ηXX^

是否可以估计δ函数的相位谱。有关 delta 函数偏移的不同值,请参见相位...我想您会自己找到估计相位谱的方法。

更新 2

delta 函数的谱 ( ) 非常简单且众所周知。您的频带限制信号的频谱没有任何高频分量。所以 ( ) 的频谱的高频分量等于 \eta 的高频分量算法是:η(n)=Rδ(nl)xx+ηη

  1. 计算X^=FFT(x^)
  2. 的高频部分 估计谱 delta 函数ηX^
  3. 使用步骤 2 中的参数计算估计谱Θ
  4. 计算X=X^Θ