meanfilter.m

来自「计算脑电信号非线性参数」· M 代码 · 共 37 行

M
37
字号
%本程序采用中值滤波实现去心电信号基线漂移%
%林宛华  中南大学生物医学工程医学图像与信号处理实验室   %
%E-mail: wanhualin01@163.com%
%2008年3月10日%
function ECG=meanfilter(L,k,n)%心电数据系列的长度,窗宽为2*k+1,n为滤波次数
load ECG2;
data2 = data2';
subplot(4,1,1),plot (data2, 'DisplayName', 'data2', 'YDataSource', 'data2'),title('原始信号'); figure(gcf);
tic
for i=1:n
data_extend_init = zeros(1,k); %初始化延拓函数
BL = zeros(1,L);%初始化基线
processed_data = zeros(1,L);%初始化处理结果
data_extend_left = data_extend_init+data2(1);
data_extend_right = data_extend_init+data2(L);
data_extend = [data_extend_left data2 data_extend_right];%得延拓函数
subplot(4,1,2),plot (data_extend, 'DisplayName', 'data_extend', 'YDataSource', 'data_extend'),title('延拓信号'); figure(gcf);
for i=1:L
    sort_data = data_extend(:,i:i+2*k);
    for m=1:2*k
        for n=m+1:2*k
            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(i)=sort_data(k);%取中间值
     processed_data(i)=data2(i)-BL(i);
end
subplot(4,1,3),plot (BL, 'DisplayName', 'data2', 'YDataSource', 'BL'),title('基线信号'); figure(gcf);
subplot(4,1,4),plot (processed_data, 'DisplayName', 'processed_data', 'YDataSource', 'processed_data'),title('滤波信号'); figure(gcf);
data2=processed_data;
end
toc

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?