我需要在 ECG 信号中定位 R 峰。我正在使用小波提取 QRS 复合波:
首先,我使用带有 Symlet 4 小波的最大重叠离散小波变换分解信号。这个小波类似于我想要检测的 QRS 复合波。然后我复制标度 4 和 5,因为这个波段最大化 QRS 能量。1-3 级小波系数和 5 级近似系数设置为零。然后我对这些修改后的系数执行小波逆变换。结果是时域中的信号主要包含 QRS 复合波,并且在 R 峰处具有非常高的幅度。
我只是在这个信号上使用一个峰值检测器来定位 R 峰值。
一切都在这里得到很好的解释:https ://mathworks.com/help/wavelet/ug/r-wave-detection-in-the-ecg.html
这是我使用的代码:
wt = modwt(rawECGsignal_buffer,5);
wtrec = zeros(size(wt));
wtrec(4:5,:) = wt(4:5,:);
filtered = imodwt(wtrec,'sym4');
据我了解,Symlet 4 是一个双正交小波,这意味着分解和重构可以实现为一组高通和低通 FIR 滤波器。
现在,我将实时心电图数据读入一个 5 秒的缓冲区,然后对缓冲区执行小波滤波(如上所述)。这似乎相当低效,因为当新数据进入时我必须再次过滤整个缓冲区。
是否有可能以允许实时过滤 ECG 信号而无需缓冲的方式实现这一点?
(即单个值输入→小波“过滤器”→单个过滤/重构值输出)