去除基线漂移有多种方法。
1.matlab内置函数detrend
不适合非线性的复杂信号
2.小波变换去除基线漂移wavelet
定义一个函数DeBaseline_Wavelet为去基漂函数
function y = DeBaseline_Wavelet(x)
s=x; %获取要处理的信号,x是在上面.mat里的一个参数
%整个信号的长度
N = numel(s);
%小波分解;
maxlev=7; %分解6尺度7层
wavename = 'db6'; %小波函数名称(需根据信号定)
[C,L] = wavedec(s,maxlev,wavename);
%提取分解后逼近系数和细节系数
A7=appcoef(C,L,wavename,7);
D1=detcoef(C,L,1);
D2=detcoef(C,L,2);
D3=detcoef(C,L,3);
D4=detcoef(C,L,4);
D5=detcoef(C,L,5);
D6=detcoef(C,L,6);
D7=detcoef(C,L,7);
D1= zeros(1,length(D1))'; %去掉高频噪声
D2= zeros(1,length(D2))';
A7=zeros(1,length(A7));
C2 = [A7,D7',D6',D5',D4',D3',D2',D1']; %新的系数
y = (waverec(C2,L