资源简介

心电滤波处理的简单示例,包括hanning滤波,5点多项式拟合,1/3 fs陷波,50Hz陷波,中值滤波,求导算法

资源截图

代码片段和文件信息

%Bme_signal_eecgp01
fr=fopen(‘170227068820170308092718.icg‘‘r‘);
[Als]=fread(fr‘double‘);
fclose(fr);

Length=10000;%length is the length of every channel
for i=1:Length
        ecg(i)=A(5*(24000+i-1)+2);
end

%hanning滤波
N = length(ecg);
for j = 1:N-2
    y_hanning(j) = (ecg(j)+2*ecg(j+1)+ecg(j+2))/4;
end
y_hanning(N)=ecg(N-2);
y_hanning(N-1)=ecg(N-2);

figure(1)
subplot(211);plot(ecg);title(“orginal ECG signal“);
subplot(212);plot(y_hanning);title(“Hanning 滤波“);


b=[1 2 1];
a=[4];
w=0:0.001:pi;
figure(2)
freqz(baw);
title(“Hanning 滤波器频谱特性“);

%多项式拟合,5点
for j = 1:N-4
    y_parbola(j) = (-3*ecg(j)+12*ecg(j+1)+17*ecg(j+2)+12*ecg(j+3)-3*ecg(j+4))/35;
end
figure(3)
subplot(211);plot(ecg);title(“orginal ECG signal“);
subplot(212);plot(y_parbola);title(“5点多项式拟合滤波“);

b1=[-3 12 17 12 -3];
a1=[35];
figure(4)
freqz(b1a1w);
title(“多项式拟合滤波器幅频特性“)

%1/3 fs陷波器
ecg=y_hanning;%处理目标信号
fs = 1000;
f=1/3*1000;
t=1/fs:1/fs:10;
x=sin(2*pi*f*t);%1/3fs正弦波
sig_noise=ecg+x;
for j = 3:N
    y_trapper(j)=(ecg(j)+ecg(j-1)+ecg(j-2))/3;
end
figure(5)
subplot(411);plot(ecg);title(“orginal ECG signal“);
subplot(412);plot(x);title(“noise signal“);
subplot(413);plot(sig_noise);title(“noise and oringinal signal“);
subplot(414);plot(y_trapper);title(“1/3 fs trap signal“);

figure(6)
b2=[1 1 1];
a2=[3];
freqz(b2a2w);
title(“1/3 fs陷波器幅频特性“);

%50Hz数字滤波器
fs=1000;
f=50;%陷波频率
downsample=fs/(3*f);%降采样选择
downsig=ecg(1:downsample:10000);%降采样后信号
t=1/(fs/downsample):1/(fs/downsample):10;
x=sin(2*pi*50*t);%50Hz正弦信号
sig_50=downsig+x;%添加噪声
for i=3:length(sig_50)
y_com(i)=1/3*(sig_50(i)+sig_50(i-1)+sig_50(i-2));
end
figure(7)
subplot(411);plot(downsig);title(“orginal ECG signal“

评论

共有 条评论