📄 rjiance.m
字号:
function Rjiance()
load string1.mat
fs=sfreq;
M=length(x);
t=1:M;
x=x';
for i=5:1000
dif(i)=2*(x(i)-x(i-4))+x(i-1)-x(i-3); %微分阈值法
dif=abs(dif);
end;
[ymax,p]=max(dif); %计算第一个最大阈值
yuzhi=ymax*0.7;
s=zeros(1,M);
j=1;
k=1;
flag=0;
i=5;
while i<=M
dif(i)=2*(x(i)-x(i-4))+x(i-1)-x(i-3);
dif=abs(dif);
if dif(i)>yuzhi
s(i)=1;
if s(i-1)==0
rr(j)=x(i-4); %考虑延时
rr_x(j)=i-4;
maxy=dif(i);
j=j+1;
else
maxy=max(maxy,dif(i));
end;
else
if s(i-1)==1
R(k)=x(i-4);
R_x(k)=i-4;
yuzhi=0.4*yuzhi+0.4*maxy; %自适应修改阈值
flag=1;
end;
if flag==1
t=i-10;
r(k)=0;
while t<i %时域加窗定位R波幅度
if x(t)>r(k)
r(k)=x(t);
r_x(k)=t;
end;
t=t+1;
end;
if k>1
h=r_x(k)-r_x(k-1);
hratek=h\fs*60; %计算心率
end;
i=i+144;
k=k+1;
flag=0;
end;
end;
i=i+1;
end;
%计算RR间期、平均间期、平均幅值
RL=length(r_x);
sum_rrinteval=0;
sum_rscope=0;
for rtemp=1:RL
sum_rscope=sum_rscope+r(rtemp);
end;
avg_rscope=sum_rscope/RL;
for l=1:RL-1
rr_inteval(l)=r_x(l+1)-r_x(l);
sum_rrinteval=sum_rrinteval+rr_inteval(l);
end;
avg_rr_inteval=sum_rrinteval/(RL-1);
plot(r_x,r,'rx')
hold on
save rr_inteval;
save avg_rr_inteval;
save avg_rscope;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -