?? xindianzyj1.m
字號:
clear all
close all;
load('xindian1.txt');
y=xindian1(:,1);
n=(0:0.004:60)';
y=y(1:1:1000);
n=n(1:1:1000);
subplot(8,1,1)
%subplot(2,4,1)
plot(n,y);
title('心電信號')
wn=0.3;
N=3;
[b,a]=butter(N,wn,'low');
m=filter(b,a,y);
subplot(8,1,2)
%subplot(2,4,2)
plot(n,m);
title('巴特沃思濾波');
[c,l]=wavedec(m,2,'rbio6.8');
a4=wrcoef('a',c,l,'rbio6.8',2);
subplot(8,1,3)
%subplot(2,4,3)
plot(n,a4);
title('小波濾波');
for i=1:(length(a4)-1)
c1(i)=a4(i+1)-a4(i);
end
c2=abs(c1);
size(c2)
n=n(1:(length(n)-1));
for j=2:(length(c2)-1)
c3(j)=[c2(j-1)+c2(j)+c2(j+1)]/3;
end
size(c3)
length(n)
n=n(1:(length(n)-1));
subplot(8,1,4)
%subplot(2,4,4)
plot(n,c3);
title('差分三點平滑');
for i=1:(length(c3)-1)
c4(i)=c3(i+1)-c3(i);
end
c5=abs(c4);
size(c5)
length(n)
n=n(1:(length(n)-1));
for j=2:(length(c5)-1)
c6(j)=[c5(j-1)+c5(j)+c5(j+1)]/3;
end
n=n(1:(length(n)-1));
subplot(8,1,5)
%subplot(2,4,5)
plot(n,c6);
title('再差分三點平滑');
size(c5)
size(c6)
for j=1:(length(c6))
c7(j)=c5(j)+c6(j);
end
for j=2:(length(c7)-1)
c8(j)=[c7(j-1)+c7(j)+c7(j+1)]/3;
end
n=n(1:(length(n)-1));
subplot(8,1,6)
%subplot(2,4,6)
plot(n,c8);
title('和三點平滑');
p=c8;
d1=0.22*p;
d2=0.15*p;
for i=1:(length(p))
if p(i)>d1
p(i)=1;
else
p(i)=0;
end
end
for i=1:(length(p))
if p(i)>d2
p(i)=1;
else
p(i)=0;
end
end
subplot(8,1,7)
%subplot(2,4,7)
plot(n,p);
axis([0,4,0,1.1]);
title('閾值');
s=1;
for i=1:(length(p)-1)
if((p(i+1)-p(i))>0)
s=s+1;
fh(s)=1;
fi(s)=i+1;
Flag=0;
else
s=s+1;
fh(s)=-1;
fi(s)=i+1;
Flag=1;
end
if s>2
if (fi(s)-fi(s-1))<0.2
p(fi(s-1):fi(s))=Flag;
end
end
end
subplot(8,1,8)
%subplot(2,4,8)
plot(n,p);
axis([0,4,0,1.1]);
title('閾值');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -