matlab中值滤波问题

2019-07-17 14:10发布

做脉象信号 基线纠漂,用中值滤波,现在出现的问题是滤波后出现负数,波形整体与-1为基线,理论上应该是以0为基线,求大神指点,这是什么问题?
function 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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。