%% Funzione che calcola gli angoli assoluti per i RSN Link HR (ampolle) function [AlfaX_HR,AlfaY_HR,TempDef_RSNHR,ARRAYdateRSNHR,ErrRSNLinkHR] = ... elaborazione_RSNHR(conn,IDcentralina,DTcatena,rRSNHR,angRSNHR,Tmax,Tmin,... TempDef_RSNHR,NodoRSNLinkHR,ARRAYdateRSNHR,NuovoZeroRSNHR,NdatiMedia,... Ndatidespike,datainiRSNHR,ErrRSNLinkHR,FileName) % Inizio del ciclo di elaborazione text = 'elaborazione_RSNHR function started'; fileID = fopen(FileName,'a'); fmt = '%s \r'; fprintf(fileID,fmt,text); fclose(fileID); if NuovoZeroRSNHR == 1 if NdatiMedia > Ndatidespike Ndati = NdatiMedia; else Ndati = Ndatidespike; end ini = round(Ndati/2)+1; if rem(Ndati,2) == 0 ini = ini+1; end clear NDati angRSNHR = angRSNHR(ini:end,:); TempDef_RSNHR = TempDef_RSNHR(ini:end,:); ARRAYdateRSNHR = ARRAYdateRSNHR(ini:end,1); ErrRSNLinkHR = ErrRSNLinkHR(ini:end,:); end %% Temperatura cont3 = 0; % contatore FileTemperature = ['' IDcentralina '-' DTcatena '-RSNHR-Therm.csv']; if isfile(FileTemperature) == 1 DatiRaw = csvread(FileTemperature); [rDR,cDR] = size(DatiRaw); DatiRaw(:,1) = DatiRaw(:,1) + 730000; else rDR = 1; cDR = 1; end [Ndate,~] = size(ARRAYdateRSNHR); Nnodi = rRSNHR; TempDef_RSNHR = TempDef_RSNHR'; angRSNHR = angRSNHR'; textT = 'No correction needed for RSN Link HR - Temperature filter'; for b = 1:Ndate % Data nodo = 1; for a = 1:Nnodi % Nodo % NON considero i dati al di sopra dei 80 °C o al di sotto dei -30 °C! if TempDef_RSNHR(a,b) > Tmax || TempDef_RSNHR(a,b) < Tmin cont3 = cont3+1; if b == 1 if isfile(FileTemperature) == 1 RawDate = find(DatiRaw(:,1)<=datenum(datainiRSNHR)); if isempty(RawDate) == 1 cc = 2; while cc <= c if TempDef_RSNHR(a,cc) > Tmax || TempDef_RSNHR(a,cc) < Tmin cc = cc+1; else break end end TempDef_RSNHR(a,b) = TempDef_RSNHR(a,cc); angRSNHR(nodo:nodo+1,b) = angRSNHR(nodo:nodo+1,cc); else if isnan(DatiRaw(RawDate(end),a+1)) == 0 TempDef_RSNHR(a,b) = cellstr(num2str(DatiRaw(b+1,RawDate(end)))); angRSNHR(nodo:nodo+1,b) = cellstr(num2str(DatiRaw(1+a*2:2+a*2,RawDate(end)))); if ErrRSNLinkHR(b,a) == 0 ErrRSNLinkHR(b,a) = 0.5; end wardat = 'Temperature data of RSN Link HR nodes corrected using Raw Data of reference Csv file.'; fprintf(fileID,fmt,wardat); else cc = 2; while cc <= c if TempDef_RSNHR(a,cc) > Tmax || TempDef_RSNHR(a,cc) < Tmin cc = cc+1; else break end end TempDef_RSNHR(a,b) = TempDef_RSNHR(a,cc); angRSNHR(nodo:nodo+1,b) = angRSNHR(nodo:nodo+1,cc); end end else cc = 2; while cc <= c if TempDef_RSNHR(a,cc) > Tmax || TempDef_RSNHR(a,cc) < Tmin cc = cc+1; else break end end TempDef_RSNHR(a,b) = TempDef_RSNHR(a,cc); end else TempDef_RSNHR(a,b) = TempDef_RSNHR(a,b-1); angRSNHR(nodo:nodo+1,b) = angRSNHR(nodo:nodo+1,b-1); if ErrRSNLinkHR(b,a) == 0 ErrRSNLinkHR(b,a) = 0.5; end end textT = ['' num2str(cont3) ' correction executed for RSN Link HR - Temperature filter!']; end nodo = nodo+2; end end if rDR~=1 && cDR~=1 && isempty(DatiRaw) == 0 RawDate1 = find(DatiRaw(:,1)<=ARRAYdateRSNHR(1)); if isempty(RawDate1) == 1 RawDate2 = 1; elseif RawDate1(end) == rDR RawDate2 = find(ARRAYdateRSNHR(:,1)>DatiRaw(end,1)); else RawDate2 = find(ARRAYdateRSNHR(:,1)>DatiRaw(RawDate1(end)+1,1)); end else RawDate1 = []; RawDate2 = 1; end if isempty(RawDate1) == 0 && isempty(RawDate2) == 0 Dati = [DatiRaw(1:RawDate1(end),:); ARRAYdateRSNHR(RawDate2(1):end) TempDef_RSNHR(:,RawDate2(1):end)' angRSNHR(:,RawDate2(1):end)']; elseif isempty(RawDate1) == 1 && isempty(RawDate2) == 0 Dati = [ARRAYdateRSNHR TempDef_RSNHR' angRSNHR']; else Dati = DatiRaw; end % Elimino appoggio più vecchio di un mese RawDate3 = find(Dati(:,1)