counter=0;
endif
counter=counter+1;
endif
case 3
if (vNewIRed<vIRed)
if(counter<stepCheck)
if (vIRed>errorVIRed)
counter=0;
errorVRed=vRed;
errorVIRed=vIRed;
tK4=k-1;
endif
else
if (v2IRed<errorVIRed)
v4Red=errorVRed;
v4IRed=errorVIRed;
flag=0;
nakR=[nakR v1Red v2Red v3Red v4Red];
nakIR=[nakIR v1IRed v2IRed v3IRed v4IRed];
tK=[tK tK1 tK2 tK3 tK4];
else
v1Red=v3Red;
v1IRed=v3IRed;
v2Red=errorVRed;
v2IRed=errorVIRed;
tK1=tK3;tK2=tK4;flag=2;
endif
counter=0;
endif
counter=counter+1;
endif
endswitch
vRed=vNewRed;
vIRed=vNewIRed;
endfor
%Удаляемпервыйвычесленныйотчет
nakR=nakR(5:end-8);nakIR=nakIR(5:end-8);tK=tK(5:end-8);
RedDc=nakR(1:4:end);
RedAc=nakR(4:4:end)-RedDc;
IRedDc=nakIR(1:4:end);
IRedAc=nakIR(4:4:end)-IRedDc;
Ratio=(RedAc./RedDc)./(IRedAc./IRedDc);
SpO2=104-17*Ratio;
mean_Spo2=sum(SpO2)/length(SpO2);
%Heart rate measurement
HRM_time=tK(8:4:(end-8));
HRM=[];
for m=1:length(HRM_time)-1
HRM=[HRM 60/(HRM_time(m+1)-HRM_time(m))*Fs];
endfor
HRM_mean=mean(HRM);
figure;
plot(0:length(HRM)-1,[HRM],'-ob'),grid,title('HRM')
xlabel('interval,n'),ylabel('HR, beats/min')
legend(['HRM mean=' num2str(HRM_mean)])
figure;
hold on
plot(1:length(ppgIRed30s),fliplr(ppgIRed30s),'-r')
plot(1:length(ppgRed30s),fliplr(ppgRed30s),'-b'),grid
%legend('Red light','IR light')
legend('IR light')
xlabel('t'),ylabel('Light reflection coefficient')
hold off
figure;
hold on
plot(1:length(ppgIRed30s),fliplr(ppgIRed30s),'-r')
plot(length(ppgRed30s)-tK+1,(nakIR),'-ok')
plot(1:length(ppgRed30s),fliplr(ppgRed30s),'-b'),grid
plot(length(ppgRed30s)-tK+1,(nakR),'-ok')
xlabel('t'),ylabel('Light reflection coefficient')
%legend('Red light PPG','Max and Min of func ','IR light PPG')
legend('IR light PPG','Max and Min of func ')
hold off
if 1
figure;
plot(Ratio),grid
endif
if 0
figure;
hold on
plot(nakR),grid
plot(nakIR),grid
title('nakr')
hold off
endif
if 1
figure;
plot(0:length(SpO2)-1,SpO2,'-ob'),grid
xlabel('T,n'),ylabel('Spo2,%')
legend(['mean value Spo2 = ' num2str(mean_Spo2) '%'])
%title('SpO2')
endif
endif
ppgData.ppgRed30s=ppgRed30s;
ppgData.ppgIRed30s=ppgIRed30s;
ppgData.nakR=nakR;
ppgData.nakIR=nakIR;
save -mat7-binary 'ppg_data.mat' 'ppgData';