2024-04-25 13:09:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个心电信号,我想删除漂移噪声。 在Matlab中,这段代码运行良好:

[c, l]=wavedec(ecgsignal,8,'coif5'); 
a9=wrcoef('a',c,l,'coif5',8);

其中ecgsignal是带噪声的原始信号,a9是滤波信号。 我试图用python代码实现同样的效果:

^{pr2}$

但是重构信号renc有噪声。 有人能帮我理解什么是不正确的吗?我使用了PyWavelet库的错误命令?在


Tags: 代码信号噪声a9电信号matlab效果滤波
2条回答

你只是解构信号然后重建信号。您还没有完成键阈值化步骤,该步骤实际上执行您正在寻找的信号滤波。在

用python绘制了所需步骤的基本轮廓:

// DWT
coeffs = pywt.wavedec(ecgsignal,'coif5', level=8); 
// Compute threshold something like this.  You need an estimate
// of the noise sigma.
threshold=noiseSigma*sqrt(2*log2(ecgsignal.size)); 
// Apply the threshold.  Pseudocode here.
newcoeffs = pywt.thresholding.soft( coeffs , threshold);
// IDWT
renc = pywt.wavedec(newcoeffs , 'coif5');              

目前,pywt还没有实现wrcoef等价函数。但您仍然可以分解一维多电平信号,然后分别重建其分量。在

https://stackoverflow.com/a/47591523/2845274

相关问题 更多 >