去除方波脉冲伪影

信息处理 过滤器
2022-02-02 15:20:33

如何从信号中去除双相方波状伪影,以便尽可能多地在伪影“下方”保留信息?以下是带有伪影的信号:

在此处输入图像描述

伪影是那两个大的尖峰状脉冲。它们是由施加在记录电极附近的皮肤上的方波脉冲引起的。

2个回答

也许你觉得这很有用:

N=500;                          %signal length  
t=0:N-1;
s=20*randn(size(t));
x=s;
p=200*[ones(1,5) -ones(1,5)];   %square artifact template
x(:,101:110)=x(:,101:110)+p;    %add artifact to signal at two random points
x(:,401:410)=x(:,401:410)+p;
figure;plot(x)
threshold = 1e5;                %peak detection threshold
c=xcorr(p,x);                   %cross-correlation
[pk l]=findpeaks(c,'MinPeakHeight',threshold);
l=N-l+1;                        %find the actual lag
y=x;
for j=1:numel(l)                %remove artifact
y(:,l(j):(l(j)+length(p)-1))=y(:,l(j):(l(j)+length(p)-1))-p;
end
hold on;
plot(y,'r--')
legend('corrupted signal','recovered signal')

在此处输入图像描述

由于其简单性而可能有用的另一个答案:如果尖峰以一致的速率发生,则长度为 T 的移动平均滤波器,其中 1/T 是尖峰的基本重复率,将在频率上方便地在尖峰频率和尖峰的每个谐波(考虑到尖峰将有许多整数谐波,这很方便)。此外,出于同样的原因,请选择一个为尖峰频率整数倍的采样率,以最大限度地减少折叠伪影(如果您有这种奢侈)。移动平均滤波器也会衰减信号内容(作为 Sinc 滤波器),因此这可能不是理想的解决方案。可选地,内插指数滤波器可以与相同的策略一起使用,除了在尖峰频率和谐波位置附近提供一个狭窄的零点,同时最小化其他频率的衰减。如果有兴趣,我可以提供具体细节。两种方法都假定峰值出现的频率一致。

更新:我在这篇文章中详细介绍了“插值指数滤波器”:我应该使用哪种滤波器来消除这个自相关函数中的振荡?显示以下示例谐波归零滤波器,如果它们确实以一致的重复率发生,我相信它可以很好地消除噪声尖峰。这是一个示例响应,但在实际实现中,零点将放置在噪声尖峰的重复率处,因此信号需要具有与尖峰相称的采样率,这可以在实现此滤波器之前通过重新采样来完成.

谐波归零滤波器响应