function [p,th,w,s,md,mx,Y1,Y2,Y3,g,alfa] = detqrs(x,Fs,n,Ft,pth)

% Funzione che effettua la detezione dei punti fiduciari dei complessi QRS
% presenti in un segnale ECG in ingresso
% x segnale ecg di cui effettuare la detezione dei complessi qrs
% Fs freq. di campionamento del segnale
% n ordine del filtro passa - basso
% Ft freq. di taglio del filtro passa - basso
% pth percentuale dell'ampiezza del qrs con ampiezza max, su cui viene
% definita la soglia

wt = Ft/(Fs/2);   % blocco filtraggio passa - basso
B = fir1(n,wt);
Y1 = filter(B,1,x);
plot(Y1)
alfa = Y1;
pause

for i=1:4
    Y1(i) = mean(Y1);
end
plot(Y1);
pause

%md1 = mean(x);   % blocco normalizzazione
%Y1 = Y1-md1;
%plot(Y1);
%pause

%mx1 = max(Y1);   % blocco normalizzazione
%Y1 = Y1/mx1;
%plot(Y1);
%pause

for i = 2:1:length(x)
    Y2(i) = (Y1(i)-Y1(i-1))*100;
end
for i = 1:1:length(Y2)
    if Y2(i) > 0
        Y3(i) = Y2(i)^2;
    else Y3(i) = 0;
    end
end
subplot(311), plot(Y1), subplot(312), plot(Y2), subplot(313), plot(Y3)
pause
close

%Y1 = Y1+2000;
%Y2 = Y2+2000;
%Y3 = Y3+2000;
%subplot(311), plot(Y1), subplot(312), plot(Y2), subplot(313), plot(Y3)
%pause

th = max(Y3)*pth/100;
mx = max(Y3);
md = mean(Y3);
p = zeros(1,length(Y1));
w = floor(0.16*Fs);
s = floor(0.3*Fs);
for i = w+1:1:length(Y1)-w
    if i > w+1
        if Y1(i) > Y1(i-w:i-1)
            if Y1(i) > Y1(i+1:i+w)
                if i <= s  
                    if p(i-w:i) == 0
                        if max(Y3(i-w:i+w)) > th
                            p(i) = 1;
                        end
                    end
                elseif i > s
                    if p(i-s:i) == 0
                        if max(Y3(i-w:i+w)) > th
                            p(i) = 1;
                        end
                    end
                end
            end
        end
    elseif i == w+1
        if Y1(i) > Y1(i-w:i-1)
            if Y1(i) > Y1(i+1:i+w)
                if p(i-w:i) == 0
                    if Y3(i-w:i+w) > th
                        p(i) = 1;
                    end
                end
            end
        end
    end
end
        
%subplot(311), plot(Y1), subplot(312), stem(p), subplot(313), plot([Y3; stem(p)])
subplot(211), plot(Y1), subplot(212), stem(p)
pause
close

g = zeros(1,length(p));
for i = 1:length(p)
    if p(i) == 1
        g(i) = 3/2*max(Y1);
    end
    if p(i) == 0
        g(i) = min(Y1);
    end
end

t=1:length(Y1);
plot(t,Y1,'b',t,g,'r:')

