Sync from remote server: 2025-10-12 18:56:41
This commit is contained in:
101
Tilt/CalcoloSnow.m
Executable file
101
Tilt/CalcoloSnow.m
Executable file
@@ -0,0 +1,101 @@
|
||||
function [Snow,SnowCum,ARRAYdateSL,ErrSnowLink] = CalcoloSnow(DatiSnowLink,...
|
||||
DatiElabSnowLink,NuovoZeroSL,NdatiMedia,ErrSnowLink,rSL,margine,Unit,...
|
||||
IDcentralina,conn,FileName)
|
||||
|
||||
text = 'CalcoloSnow function started';
|
||||
fileID = fopen(FileName,'a');
|
||||
fmt = '%s \r';
|
||||
fprintf(fileID,fmt,text);
|
||||
|
||||
ARRAYdateSL = DatiSnowLink(:,1);
|
||||
Dati_SL = DatiSnowLink(:,2);
|
||||
|
||||
if NuovoZeroSL == 1
|
||||
if NdatiMedia == 1
|
||||
ini = 2;
|
||||
Snow_Rif = Dati_SL(2,:) - Dati_SL(1,:);
|
||||
else
|
||||
ini = round(NdatiMedia/2);
|
||||
if rem(NdatiMedia,2) == 0
|
||||
ini = ini+1;
|
||||
end
|
||||
ini = ini + margine;
|
||||
if ini < 6
|
||||
ini = 6;
|
||||
end
|
||||
Snow_Rif = Dati_SL(ini,:) - Dati_SL(ini-1,:);
|
||||
end
|
||||
ErrSnowLink = ErrSnowLink(ini:end,:)';
|
||||
Dati_SL = Dati_SL(ini:end,:);
|
||||
DatiElabSnowLink = DatiElabSnowLink(ini:end,:);
|
||||
ARRAYdateSL = ARRAYdateSL(ini:end,1);
|
||||
else
|
||||
ErrSnowLink = ErrSnowLink';
|
||||
[rR]=size(Dati_SL);
|
||||
if rR > 1
|
||||
Snow_Rif = Dati_SL(2,:) - Dati_SL(1,:);
|
||||
else
|
||||
Snow_Rif = Dati_SL(1,:);
|
||||
end
|
||||
end
|
||||
|
||||
[r,c] = size(Dati_SL);
|
||||
Snow = zeros(r,c);
|
||||
|
||||
comando = ['select type_id from units where name = ''' IDcentralina ''' '];
|
||||
curs = exec(conn,comando);
|
||||
curs = fetch(curs);
|
||||
Type = cell2mat(curs.Data);
|
||||
if Type == 7 % NESA
|
||||
Snow = Dati_SL;
|
||||
else
|
||||
if strcmp(Unit,'SwissMetNet')
|
||||
Snow = Dati_SL;
|
||||
else
|
||||
var = diff(Dati_SL',1,2);
|
||||
varT = var';
|
||||
[a,b] = size(varT);
|
||||
for ii = 1:a
|
||||
for jj = 1:b
|
||||
if varT(ii,jj) <0
|
||||
varT(ii,jj) = 0; % in questo modo tengo conto degli eventuali azzeramenti del contatore
|
||||
end
|
||||
if ii == 1 && Snow_Rif(1,b) < 0
|
||||
Snow_Rif(1,b) = 0;
|
||||
end
|
||||
end
|
||||
end
|
||||
Snow(1,:) = Snow_Rif;
|
||||
for ii = 2:r
|
||||
Snow(ii,:) = varT(ii-1,:);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if NuovoZeroSL == 0
|
||||
SnowCum = cumsum(Snow);
|
||||
else % se ho dati precedenti, devo sommarli a quelli
|
||||
[~,cE] = size(DatiElabSnowLink);
|
||||
Rif_Rain = zeros(1,rSL);
|
||||
cont = 4;
|
||||
n = 1;
|
||||
while cont<=cE
|
||||
Rif_Rain(1,n) = cell2mat(DatiElabSnowLink(1,cont)); % ultimo valore di cumulata definitivo su DB
|
||||
cont=cont+4;
|
||||
n = n+1;
|
||||
end
|
||||
RainCum_p = cumsum(Snow)-Snow(1,:); % cumulata dei nuovi dati
|
||||
[row,col] = size(Snow);
|
||||
SnowCum = zeros(row,col);
|
||||
for i = 1:row
|
||||
for j = 1:col
|
||||
SnowCum(i,j) = RainCum_p(i,j) + Rif_Rain(1,j);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
text = 'Single and cumulated snow values calculated correctly. CalcoloSnow function closed';
|
||||
fprintf(fileID,fmt,text);
|
||||
fclose(fileID);
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user