做脉象信号 基线纠漂,用中值滤波,现在出现的问题是滤波后出现负数,波形整体与-1为基线,理论上应该是以0为基线,求大神指点,这是什么问题?
func
tion Data_m=medianfilter(data,k,n)
% 此函数为中值滤波函数
% 待处理数据
% 窗宽为2*k+1,k为奇数
% n为滤波次数
sig=data;
v=(k-1)/2;%待处理数据左右数据个数
data_extend= zeros(1,v); %初始化延拓函数
data_extend_left = data_extend;
data_extend_right = data_extend;
for i=1:n
data_extend = [data_extend_left sig' data_extend_right];%得延拓函数
L=length(data_extend );%信号长度
processed_data = zeros(1,L);%初始化处理结果
for i=v+1:L-v
sort_data = data_extend(i-v:i+v);
for m=1:2*v+1 %数据排序
for n=m+1:2*v+1
if(sort_data(m)>sort_data(n))
p=sort_data(m);
sort_data(m)=sort_data(n);
sort_data(n)=p;
end
end
end
BL=sort_data(v+1); %取中间值
processed_data(i)=data_extend(i)-BL;
end
sig=processed_data(v+1:L-v);
end
Data_m=sig';
return
一周热门 更多>