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