function POS=posmat(ann) % function POS=posmat(ann) generates a Waveform Limit MATRIX with annotation ann % Input parameters: % ann: annotation structure % Output parameters: % POS: matrix with waveform limits % Salvador Olmos. olmos@posta.unizar.es ann=iswfl(ann); q=isqrs(ann); beats=length(q.time); %%%%%%%%% % Removing annotations before the first complete beat %%%%%%%%% ai=find(ann.anntyp=='(' & ann.num=='0' & ann.timemax(POS(:,5))) ai(end)=[]; end if length(ai)==beats POS(:,4)=ann.time(ai); else for i=1:length(ai) p=min(find((ann.time(ai(i))-POS(:,5))<0)); POS(p,4)=ann.time(ai(i)); end end ai=find(ann.anntyp==')' & ann.num=='1'); % QRS offset %while (max(ann.time(ai))>max(POS(:,5)+60)) ai(end)=[]; end if length(ai)==beats POS(:,6)=ann.time(ai); else for i=1:length(ai) p=max(find((ann.time(ai(i))-POS(:,5))>0)); POS(p,6)=ann.time(ai(i)); end end ai=find(ann.anntyp=='(' & ann.num=='0'); while (max(ann.time(ai))>max(POS(:,4))) ai(end)=[]; end if length(ai)==beats POS(:,1)=ann.time(ai); % P wave onset else for i=1:length(ai) p=min(find((ann.time(ai(i))-POS(:,5))<0)); POS(p,1)=ann.time(ai(i)); end end ai=find(ann.anntyp=='p'); while (max(ann.time(ai))>max(POS(:,4))) ai(end)=[]; end if length(ai)==beats POS(:,2)=ann.time(ai); % P wave else for i=1:length(ai) p=min(find((ann.time(ai(i))-POS(:,5))<0)); POS(p,2)=ann.time(ai(i)); end end ai=find(ann.anntyp==')' & ann.num=='0'); while (max(ann.time(ai))>max(POS(:,4))) ai(end)=[]; end if length(ai)==beats POS(:,3)=ann.time(ai); % P wave offset else for i=1:length(ai) p=min(find((ann.time(ai(i))-POS(:,5))<0)); POS(p,3)=ann.time(ai(i)); end end ai=find(ann.anntyp=='(' & ann.num=='2'); %while (max(ann.time(ai))