Sync from remote server: 2025-10-12 18:56:41
This commit is contained in:
211
RSN/elaborazione_RSNHR.m
Executable file
211
RSN/elaborazione_RSNHR.m
Executable file
@@ -0,0 +1,211 @@
|
||||
%% 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)<now-30);
|
||||
if isempty(RawDate3) == 0
|
||||
[rDati,~] = size(Dati);
|
||||
if RawDate3(end) == rDati
|
||||
else
|
||||
Dati = Dati(RawDate3(end)+1:end,:);
|
||||
end
|
||||
end
|
||||
if isfile(FileTemperature) == 1
|
||||
delete(FileTemperature);
|
||||
end
|
||||
Dati(:,1) = Dati(:,1) - 730000;
|
||||
csvwrite(FileTemperature,Dati);
|
||||
|
||||
TempDef_RSNHR = TempDef_RSNHR';
|
||||
angRSNHR = angRSNHR';
|
||||
fileID = fopen(FileName,'a');
|
||||
fmt = '%s \r';
|
||||
fprintf(fileID,fmt,textT);
|
||||
fclose(fileID);
|
||||
|
||||
% azzeramenti di alcuni nodi in particolare
|
||||
angRSNHR = azzeramenti_RSNHR(conn,IDcentralina,DTcatena,angRSNHR,...
|
||||
NodoRSNLinkHR,ARRAYdateRSNHR,FileName);
|
||||
|
||||
%% Definizione dati
|
||||
NnodiHR = rRSNHR;
|
||||
[Ndate,~] = size(ARRAYdateRSNHR);
|
||||
|
||||
AlfaX_HR = zeros(Ndate,NnodiHR);
|
||||
AlfaY_HR = zeros(Ndate,NnodiHR);
|
||||
|
||||
for i = 1:NnodiHR
|
||||
a = angRSNHR(:,(i-1)*2+1); % aHRx
|
||||
AlfaX_HR(:,i) = a;
|
||||
b = angRSNHR(:,(i-1)*2+2); % aHRy
|
||||
AlfaY_HR(:,i) = b;
|
||||
end
|
||||
|
||||
% Inizio del ciclo di elaborazione
|
||||
text = 'Elaboration of RSN Link HR started';
|
||||
fileID = fopen(FileName,'a');
|
||||
fmt = '%s \r';
|
||||
fprintf(fileID,fmt,text);
|
||||
fclose(fileID);
|
||||
|
||||
% Approssimo i dati con il corretto numero di cifre decimali
|
||||
[AlfaX_HR,AlfaY_HR,TempDef_RSNHR] = approx_RSNHR(AlfaX_HR,AlfaY_HR,TempDef_RSNHR,FileName);
|
||||
|
||||
[r,~] = size(ErrRSNLinkHR);
|
||||
Matrice_err = zeros(r,rRSNHR);
|
||||
clear j
|
||||
for i = 1:r % date
|
||||
d = 1;
|
||||
for n = 1:rRSNHR % nodi
|
||||
j = 1;
|
||||
err = ErrRSNLinkHR(i,d:d+2);
|
||||
while j <= 3
|
||||
if err(1,j) == 1
|
||||
Matrice_err(i,n) = 1;
|
||||
elseif err(1,j) == 0.5 && Matrice_err(i,n) == 0
|
||||
Matrice_err(i,n) = 0.5;
|
||||
end
|
||||
j = j+1;
|
||||
end
|
||||
d = d+3;
|
||||
end
|
||||
end
|
||||
ErrRSNLinkHR = Matrice_err';
|
||||
|
||||
text = 'RSN Link HR elaboration executed correctly. elaborazione_RSNHR function closed';
|
||||
fileID = fopen(FileName,'a');
|
||||
fmt = '%s \r';
|
||||
fprintf(fileID,fmt,text);
|
||||
fclose(fileID);
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user