如何在 MatLab 的滤波器中指定振幅阈值

How to specify amplitude threshold in a filter in MatLab

您好,我想澄清一下如何在椭圆滤波器上指定振幅阈值。

这是我目前所做的

fmin  = 20;  % minimum passband frequency in Hz (High Gamma)
fmax  = 30;  % maximum passband frequency in Hz (High Gamma)
Rs    = 20; % stopband attenuation in dB
Rp    = 1;  % passband ripples in dB



% for High gamma band 
[order, Wn] = ellipord([fmin/(fs/2), fmax/(fs/2)], [(fmin-1)/(fs/2), (fmax+1)/(fs/2)], Rp, Rs);
[B,A] = ellip(order, Rp, Rs, [fmin/(fs/2), fmax/(fs/2)]);

我是新手,但我假设 Rs 和 Rp 是允许通过的振幅阈值是否正确?或者我有做其他事情吗?目前,在对数据进行平均以去除常见噪声并使用 ranksum 获取能量数据后,我的绘图看起来像图像。

如您所见,出现了一个巨大的尖峰,我想降低阈值,这样就可以忽略这样的尖峰。

RpRs分别表示频域中的通带纹波和阻带衰减。用 freqz(B,A) 绘制滤波器的频率响应会给你一个看起来像这样的图:

如您所见,指定的 fmin (20Hz) 和 fmax (30Hz) 之间的通带响应略有不同。这种变化是通带纹波 Rp.

在通带之外(低于 20Hz 和高于 30Hz),响应会发生变化但不会超过 -20dB。这是阻带衰减 Rs.

因此,这些参数不代表阈值 time-domain 振幅,尽管您可以通过增加阻带衰减 Rs 来稍微降低大脉冲的总体振幅。但是请注意,更好地改善信号通常需要考虑输入以及所需的输出特性。