Sync from remote server: 2025-10-12 18:56:41
This commit is contained in:
92
Tilt/filtro.m
Executable file
92
Tilt/filtro.m
Executable 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
|
||||
Reference in New Issue
Block a user