% Filtro che considera N deviazioni standard in una finestra centrata di
% input dati (una in avanti e una all'indietro) e mette a zero lo
% spostamento se è inferiore a tale valore
% E' previsto un secondo filtro forfettario se lo spostamento è minore di
% un determinato valore

function [dY_PCL,dZ_PCL,text] = filtro_PCL(dY_PCL,dZ_PCL,Ndevst,Wdevst)

dY_PCL = dY_PCL';
dZ_PCL = dZ_PCL';
calcoloY_RL = dY_PCL;
calcoloZ_RL = dZ_PCL;

[r,c] = size(dY_PCL); % riga date, colonna nodi
filtroY = zeros(r,c);
filtroZ = zeros(r,c);
N_dev_st = Ndevst;
finestra = Wdevst;
contY = 0;
contZ = 0;

for j = 2:c % nodi
    for i = (finestra/2+0.5):(r-(finestra/2-0.5)) % date
        % Y
        var = calcoloY_RL((i-(finestra/2-0.5)):(i+(finestra/2-0.5)),j);
        filtroY(i,j) = N_dev_st*std(var);
        if abs(dY_PCL(i,j))<filtroY(i,j)
           dY_PCL(i,j) = 0;
           contY = contY+1;
        end
        % Z
        var = calcoloZ_RL((i-(finestra/2-0.5)):(i+(finestra/2-0.5)),j);
        filtroZ(i,j) = N_dev_st*std(var);
        if abs(dZ_PCL(i,j))<filtroZ(i,j)
           dZ_PCL(i,j) = 0;
           contZ = contZ+1;
        end
    end
    
    for i = (r-(finestra/2-1.5)):r % date
        var = zeros(finestra-1,1); % Prolungo l'ultimo dato per il trend che non ho
        delta = r-i+1;
        % Y
        var(1:delta,1) = calcoloY_RL(i:end,j);
        var(delta+1:end-1) = calcoloY_RL(end,j);
        filtroY(i,j) = N_dev_st*std(var);
        filtroY(end,j) = filtroY(end-1,j);
        if abs(dY_PCL(i,j))<filtroY(i,j)
           dY_PCL(i,j) = 0;
           contY = contY+1;
        end
        % Z
        var(1:delta,1) = calcoloZ_RL(i:end,j);
        var(delta+1:end-1) = calcoloZ_RL(end,j);
        filtroZ(i,j) = N_dev_st*std(var);
        filtroZ(end,j) = filtroZ(end-1,j);
        if abs(dZ_PCL(i,j))<=filtroZ(i,j)
           dZ_PCL(i,j) = 0;
        end
    end 
end

dY_PCL(1:(finestra/2-1.5),:) = 0;
dZ_PCL(1:(finestra/2-1.5),:) = 0;

dY_PCL = dY_PCL';
dZ_PCL = dZ_PCL';

text = ['' num2str(contY) ' Y data, ' num2str(contZ) ...
    ' Z data, data filtered for PreConv Link - Statistic filter!'];
end