98 lines
2.7 KiB
Matlab
Executable File
98 lines
2.7 KiB
Matlab
Executable File
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 |