|
血氧饱和度的c程序和matlab程序
- clear,clc;
- t=0:1/500:5;
- s_sin=sin(2*pi*1.5*t);
- s_940nm=s_sin*0.2+0.75;
- s_660nm=s_sin*0.1+0.8;
- plot(t,s_sin);axis([0 5 0 1]);
- figure,plot(t,s_940nm);axis([0 5 0 1]);
- figure,plot(t,s_660nm);axis([0 5 0 1]);
- max_total=0;
- max_num=0;
- min_total=0;
- min_num=0;
- b_value=0;
- b_f=0;
- n_value=0;
- n_f=0;
- for i=1:2500
- b_value=n_value;
- b_f=n_f;
- n_value=s_940nm(i);
- if n_value>b_value
- n_f=1;
- elseif n_value<b_value
- n_f=-1;
- end
-
- if(n_f==-1)&&(b_f==1)
- max_total=max_total+s_940nm(i);
- max_num=max_num+1;
- end
-
- if(n_f==1)&&(b_f==-1)
- min_total=min_total+s_940nm(i);
- min_num=min_num+1;
- end
- end
- max_940nm=max_total/max_num;
- min_940nm=min_total/min_num;
- max_total=0;
- max_num=0;
- min_total=0;
- min_num=0;
- b_value=0;
- b_f=0;
- n_value=0;
- n_f=0;
- first_p=0;
- last_p=0;
- f_p=0;
- for i=1:2500
- b_value=n_value;
- b_f=n_f;
- n_value=s_660nm(i);
- if n_value>b_value
- n_f=1;
- elseif n_value<b_value
- n_f=-1;
- end
-
- if(n_f==-1)&&(b_f==1)
- max_total=max_total+s_660nm(i);
- max_num=max_num+1;
- if f_p==0
- f_p=1;
- first_p=i;
- else
- last_p=i;
- end
- end
-
- if(n_f==1)&&(b_f==-1)
- min_total=min_total+s_660nm(i);
- min_num=min_num+1;
- end
- end
- max_660nm=max_total/max_num;
- min_660nm=min_total/min_num;
- heart_beat=60/((last_p-first_p)/(max_num-1)/500);
- spo2=110-25*(max_660nm-min_660nm)/max_660nm/((max_940nm-min_940nm)/max_940nm);
复制代码
|
|