Sync from remote server: 2025-10-12 18:56:41

This commit is contained in:
2025-10-12 18:56:59 +02:00
commit 7e8ee264aa
553 changed files with 161447 additions and 0 deletions

92
Tilt/filtro.m Executable file
View File

@@ -0,0 +1,92 @@
% Filtro che considera 2 deviazioni standard in una finestra centrata di
% due settimane (una in avanti e una all'indietro) e mette a zero lo
% spsotamento se è inferiore a tale valore
% E' previsto un secondo filtro forfettario se lo spostamento è minore di
% un determinato valore
function [dNS,dEO,dZ] = filtro(dNS,dEO,dZ,Ndevst,Wdevst,FileName)
fileID = fopen(FileName,'a');
fmt = '%s \r';
text = 'filtro function started';
fprintf(fileID,fmt,text);
dNS = dNS';
dEO = dEO';
dZ = dZ';
calcoloNS = dNS;
calcoloEO = dEO;
calcoloZ = dZ;
[r,c]=size(dNS); % riga date, colonna nodi
filtroNS = zeros(r,c);
filtroEO = zeros(r,c);
filtroZ = zeros(r,c);
finestra = Wdevst;
N_dev_st = Ndevst;
contN = 0;
contE = 0;
contZ = 0;
for j = 1:c % nodi
for i = 1:r
if r <= finestra/2 - 0.5
varNS = 0;
varEO = 0;
varZ = 0;
else
if i <= finestra/2 - 0.5
varNS = calcoloNS(1:i+(finestra/2-0.5),j);
varEO = calcoloEO(1:i+(finestra/2-0.5),j);
varZ = calcoloZ(1:i+(finestra/2-0.5),j);
elseif i >= (finestra/2+0.5) && i <= (r-(finestra/2-0.5))
varNS = calcoloNS((i-(finestra/2-0.5)):(i+(finestra/2-0.5)),j);
varEO = calcoloEO((i-(finestra/2-0.5)):(i+(finestra/2-0.5)),j);
varZ = calcoloZ((i-(finestra/2-0.5)):(i+(finestra/2-0.5)),j);
elseif i > (r-(finestra/2-0.5))
varNS = calcoloNS((i-(finestra/2-0.5):r),j);
varEO = calcoloEO((i-(finestra/2-0.5):r),j);
varZ = calcoloZ((i-(finestra/2-0.5):r),j);
end
end
% Nord Sud
filtroNS(i,j) = N_dev_st*std(varNS);
if abs(dNS(i,j)) <= filtroNS(i,j)
if abs(dNS(i,j)) ~= 0
contN = contN+1;
end
dNS(i,j) = 0;
end
% Est Ovest
filtroEO(i,j) = N_dev_st*std(varEO);
if abs(dEO(i,j)) <= filtroEO(i,j)
if abs(dEO(i,j)) ~= 0
contE = contE+1;
end
dEO(i,j) = 0;
end
% Z
filtroZ(i,j) = N_dev_st*std(varZ);
if abs(dZ(i,j)) <= filtroZ(i,j)
if abs(dZ(i,j)) ~= 0
contZ = contZ+1;
end
dZ(i,j) = 0;
end
end
end
dNS = dNS';
dEO = dEO';
dZ = dZ';
textN = [num2str(contN) ' data filtered along North-South direction'];
textE = [num2str(contE) ' data filtered along East-West direction'];
textD = [num2str(contZ) ' data filtered along Down direction'];
fprintf(fileID,fmt,textN);
fprintf(fileID,fmt,textE);
fprintf(fileID,fmt,textD);
text = 'filtro function closed';
fprintf(fileID,fmt,text);
fclose(fileID);
end