设计高通滤波器以消除信号中的直流偏移

信息处理 过滤器设计 频率 高通滤波器
2022-01-14 06:11:00

我想设计一个高通滤波器 (f0*S/1+f0*S) 以消除信号中的直流偏移?(即如何选择频率f0)。

谢谢, 哈森

Ps:过滤器是用于 MATLAB 实现的,这就是为什么我想在连续时间内拥有它。

4个回答

如果DFT是从 02π 的均匀抽样,那么第一个 bin 由下式给出:

x[k]=n=0N1x[n]

即它是所有样本的总和。
因此,为了去除 DC(平均值),您只需要一个在其 DC bin 中为零的滤波器。因为,滤波后的信号是输入信号的 DFT 和滤波器的卷积(循环),在第一个 bin 处将为零,这意味着输出之和为零,这意味着它的均值也为零,正如所愿。

简单直观的 FIT 将是一个具有信号长度的 FIR,它从当前样本中移除所有样本的平均值:

y[m]=x[m]1Nn=0N1x[n]

这是一个简单的 FIR。

注意我假设你有所有的样本。如果你不这样做,你只需要通过“计算”给定样本的总和来使这个 FIR 变得随意。

这应该是一条评论,但我的声誉太低,无法留下评论。

无论如何,如果您只需要删除 DC 分量,您可以通过以下方式从信号中删除平均值:

y = x-mean(x);

在这里您可能会找到有用的信息https://stackoverflow.com/questions/5591278/high-pass-filtering-in-matlab

您编写它的方式,1/f0 定义了 -3dB 截止频率。如果让 s = 1/f0,这很容易看出。分子变为 1,分母变为 2。1/2 的增益为 -3dB。

由于它是高通的,频率 > 1/f0 将通过滤波器,而频率 < 1/f0 将被衰减(频率越低,衰减越大)。

使用 MATLABdetrend()函数从频域的角度移除平均值或 DC 偏移。如果您的信号是X,则尝试在 MATLAB 命令窗口中执行以下命令,

Y = detrend(X,'constant');