近40年来,自适应滤波已经发展成为一种最佳的滤波方法,它是基于卡尔曼滤波、维纳滤波等线性滤波发展起来的。自适应滤波拥有更优的滤波性能和更强的适应性,因此在工程实际应用中,尤其是在信息处理领域中获得了广泛的应用。
具有不确定特性的系统或者信息过程是自适应滤波的研究对象。所谓的"不确定"指的是所要研究的处理信息过程与其环境的数学模型并不是完全确定的。其中包含一些未知因数和随机因数。
任意的一个实际信息过程都具备不同程度上的不确定性,这种不确定性有时候会表现在过程的内部,有时候则表现在过程的外部。从过程内部来说,信息动态过程中构建的数学模型的结构和参数是用来描述研究对象的,这是我们事先不知道的。外部环境对信息过程产生的影响,可以等效地用某种扰动来表示,通常这些扰动是不可测的,它们可能是随机的,也可能是确定的。另外,一些测量噪音通过不同的途径对信息过程产生影响。一般而言,这些噪声和扰动的统计特性是未知的。针对这种客观存在的各种各样的不确定性,如何适当地综合处理信息过程,并且确保某些指定的性能指标能够达到最优或者近似最优,这些问题都能够通过自适应滤波得到解决。
鉴于此,采用LMS,RLS,NLMS等方法对心电信号进行噪声消除,噪声类型包括Powerline Interference Noise,White Gaussian Noise,baseline wander noises,electrode movement noise,muscle artifacts,运行环境为MATLAB 2018。
clc
clear all
load('ECG_database.mat') % load data
% Clean ECG
figure
Data1 = Data1/200;
plot(Data1);
xlabel('Samples(n)');
ylabel('Amplitude(mV)'); ylim([-1 1]);
title('Clean ECG Signals');
% Set the scale to mV
WN_data = WN_data/200;
wn = wn/200;
BWN_data = BWN_data/200;
bwn = bwn/200;
EMN_data = EMN_data/200;
emn = emn/200;
MAN_data = MAN_data/200;
man = man/200;
% Generate PLI noise
datalength = 5000;
fs = 500;
fn = 50;
pli(:)=0;
for i=1:datalength
pli(:,i) = 0.1*sin(2*pi*fn*i/fs);
end
%完整代码可通过知乎学术咨询获得:https://www.zhihu.com/consult/people/792359672131756032?isMe=1
% Generate corrupted ECG signals with PLI noise
PLI_data = (Data1 + pli);
工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。