【问题标题】:MATLAB filter not attenuating enoughMATLAB 滤波器衰减不够
【发布时间】:2014-07-28 10:34:15
【问题描述】:

目前,我正在努力消除心电图信号中的 50 Hz 电源线干扰。在尝试陷波滤波器之前,我决定尝试一个截止频率小于 50 Hz 的简单低通滤波器。这是我用来制作过滤器的 MATLAB 代码:

Fs=500; %Sampling rate in Hz
Ast = 120; %Stopband attenuation
Ap = 1; %Passband ripple
Fp = 30; %Passband end
Fst = 45; %Stopband beginning
Hd=fdesign.lowpass('Fp,Fst,Ap,Ast',Fp,Fst,Ap,Ast,Fs);
d=design(Hd,'butter'); % Design a butterworth filter with the given characteristics
fvtool(d);

滤波器的幅度响应为:

如您所见,滤波器在 50 Hz 时衰减约为 180 dB,在更高频率时衰减更大。

现在,我对我的数据运行此过滤器。这是时域和频域的原始数据:

这是应用过滤器后的数据:

如您所见,50 Hz 处的衰减远不及滤波器宣传的 180 dB。为了更好看,下面是通过取信号的 FFT 比率计算的幅度响应图:

显然,衰减远未达到应有的水平。这是它应该的方式还是我在实施中做错了什么?

提前感谢所有帮助!

【问题讨论】:

    标签: matlab filter filtering signal-processing


    【解决方案1】:

    由于情节缩放,这很难说,但看起来你的问题只是你估计 PSD 的方式。您使用的窗口函数可以允许从高能频率泄漏到相邻频率区间: https://en.wikipedia.org/wiki/File:Window_functions_in_the_frequency_domain.png

    Hann 窗口是一个很好的默认选择(在 pwelch.m 中使用)。如果您在同一图上绘制滤波前后信号的 pwelch 输出,您应该会看到滤波操作。从 Wikipedia 图中,您可以看到,即使是 Hann 窗口,您也必须使用至少 10 秒的 FFT 窗口才能看到 50 Hz 处的大量衰减。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多