我在几篇论文中读到,ECG 信号中的噪声可以通过中值滤波器去除。我发现的一个这样的例子是在 stackoverflow 上,其中建议了多种方法,其中一种是中值滤波器。下图取自 stackoverflow 上的帖子。

中值滤波器的主要思想是逐个遍历信号条目,用相邻条目的中值替换每个条目。邻居的模式被称为“窗口”,它在整个信号上逐项滑动。
我不明白的是,为什么 QRS 复合体也没有被移除?当我使用matlab尝试时,我设置的窗口越大,信号过滤得越好,不应该是相反的吗?
我在几篇论文中读到,ECG 信号中的噪声可以通过中值滤波器去除。我发现的一个这样的例子是在 stackoverflow 上,其中建议了多种方法,其中一种是中值滤波器。下图取自 stackoverflow 上的帖子。

中值滤波器的主要思想是逐个遍历信号条目,用相邻条目的中值替换每个条目。邻居的模式被称为“窗口”,它在整个信号上逐项滑动。
我不明白的是,为什么 QRS 复合体也没有被移除?当我使用matlab尝试时,我设置的窗口越大,信号过滤得越好,不应该是相反的吗?
你肯定做错了什么。您应该上传您的数据以获得更好的响应。实际上,您可以将数据上传到您希望的任何上传站点,并在此处提供其链接。
中值滤波器是一个高度非线性的滤波器(它重新排序样本位置!)。位置处的中值滤波器的输出是驻留在窗口范围内的值的中值;即,当样本按顺序排序时,它是位于中间的值。因此中值滤波需要对每个计算进行排序。这也让它变得很慢(一个详细的答案实际上取决于架构......)
中值滤波器主要用于散斑或椒盐噪声去除,本质上这些是局部噪声样本,在不降低整个信号的情况下无法进行频域滤波。这种局部(及时)峰值将具有宽带频谱,抑制频域攻击以将其移除,因此,仅保留时域(或时频域)方法是可能的。
中值滤波器倾向于保留边缘,因此在某些图像增强操作中非常受欢迎。然而,它也有褪色结果的副作用(纹理细节丢失,只保留强边缘),这表明应该小心使用它们。
原则上,窗口尺寸越长,褪色效果越强。因此习惯上使用尽可能短的窗口大小(除非特定应用程序另有规定)
来到你的示例情节。使用大于 50 个样本的窗口大小会洗掉可能对您很重要的局部细节,所以我猜您应该使用小于 50 的窗口大小(根据您提供的图)。