function [Rain,RainCum,ARRAYdateRL,ErrRainLink] = CalcoloRain(Dati_RL,ARRAYdateRL,... DatiElabRainLink,NuovoZeroRL,NdatiMedia,ErrRainLink,rRL,margine,Unit,... IDcentralina,conn,FileName) text = 'CalcoloRain function started'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); if NuovoZeroRL == 1 if NdatiMedia == 1 ini = 2; Rain_Rif = Dati_RL(2,:) - Dati_RL(1,:); else ini = round(NdatiMedia/2); if rem(NdatiMedia,2) == 0 ini = ini+1; end ini = ini + margine; if ini < 6 ini = 6; end Rain_Rif = Dati_RL(ini,:) - Dati_RL(ini-1,:); end ErrRainLink = ErrRainLink(ini:end,:)'; Dati_RL = Dati_RL(ini:end,:); DatiElabRainLink = DatiElabRainLink(ini:end,:); ARRAYdateRL = ARRAYdateRL(ini:end,1); else ErrRainLink = ErrRainLink'; [rR]=size(Dati_RL); if rR > 1 Rain_Rif = Dati_RL(2,:) - Dati_RL(1,:); else Rain_Rif = Dati_RL(1,:); end end [r,c] = size(Dati_RL); Rain = 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 Rain = Dati_RL; else if strcmp(Unit,'SwissMetNet') Rain = Dati_RL; else var = diff(Dati_RL',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 && Rain_Rif(1,b) < 0 Rain_Rif(1,b) = 0; end end end Rain(1,:) = Rain_Rif; for ii = 2:r Rain(ii,:) = varT(ii-1,:); end end end if NuovoZeroRL == 0 RainCum = cumsum(Rain); else % se ho dati precedenti, devo sommarli a quelli [~,cE] = size(DatiElabRainLink); Rif_Rain = zeros(1,rRL); cont = 4; n = 1; while cont<=cE Rif_Rain(1,n) = cell2mat(DatiElabRainLink(1,cont)); % ultimo valore di cumulata definitivo su DB cont=cont+4; n = n+1; end RainCum_p = cumsum(Rain)-Rain(1,:); % cumulata dei nuovi dati [row,col] = size(Rain); RainCum = zeros(row,col); for i = 1:row for j = 1:col RainCum(i,j) = RainCum_p(i,j) + Rif_Rain(1,j); end end end text = 'Single and cumulated rain values calculated correctly. CalcoloRain function closed'; fprintf(fileID,fmt,text); fclose(fileID); end