
%% AGGIUNTA SSEH -n=[10 50 100] normalizzato-
% aggiunge i campi dei risultati delle nuove identificazioni alla struttura Dati.mat
% alla fine non modifica Dati_Matrice.mat ma salva l'unione in una nuova
% struttura chiamata Dati_Matrice_ric.mat

clear all, clc


load Dati_Matrice_ricNEW.mat; % carico la struttura Dati a cui aggiungere i campi.

load Dati_sseh_ric4.mat; % carico la struttura con i campi da aggiungere.

% si aggiunge l'ident. sseh sulla temperatura con modello 'yy' e 'ny'
for i=1:length(Dati)
    Dati(i).sseh_t_yy_norm2 = Dati_id(i).id_t_sseh_yy;
    Dati(i).sseh_t_ny_norm2 = Dati_id(i).id_t_sseh_ny;
end

str=['Dati_Matrice_ric2'];
save(str,'Dati')

% per fondere altre strutture cambiare il codice soprastante con i nomi
% opportuni..


%% NORMALIZZAZIONE DATI PER L'IDENTIFICAZIONE VAR1 med0
% prendo i dati di Dati_Matrice e creo Dati_Matrice_norm che contiene i
% dati normalizzati per poter poi usare il parfor nelle simulazioni
% ! i dat_val ficcati nei sottocampi non li cambio. saranno da normalizzare
% in sede di validazione. ora cambio solo quelli per l'id


load Dati_Matrice_ric.mat;  % !!!

% si aggiunge l'ident. sseh sulla temperatura con modello 'yy' e 'ny'
for k=1:length(Dati)
  
    y = Dati(k).yhum; 
    U = Dati(k).Udati_per_h;   
    
    %%%%%%%%% tolgo media e varianza dai dati Udati_per_t e ytemp e li
    %%%%%%%%% risalvo aggiungendo i campi Udati_per_t_norm ed ytemp_norm 
    
    varU = var(U);
    meanU = mean(U);

    for i=1:size(U,2)
       u(:,i) = (U(:,i)-meanU(i))/sqrt(varU(i));    
    end
    Dati(k).Udati_per_h_norm2 = u(:,:); % <- aggiunta del campo

    varY = var(y);
    meanY = mean(y);
    
    Dati(k).yhum_norm2=(y(:,1)-meanY(1))/sqrt(varY(1));  % <- aggiunta del campo
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%
    

end

% ora salvo la Dati_Matrice a cui ho aggiunto i due campi.
str=['Dati_Matrice_ricTTT']; % qui c'è tutta la Dati_Matrice + i due campi
save(str,'Dati')


%% NORMALIZZAZIONE DATI PER L'IDENTIFICAZIONE MEDIA 0 VAR NO
% prendo i dati di Dati_Matrice e creo Dati_Matrice_norm2 che contiene i
% dati normalizzati per poter poi usare il parfor nelle simulazioni
% ! i dat_val ficcati nei sottocampi non li cambio. saranno da normalizzare
% in sede di validazione. ora cambio solo quelli per l'id
% SOLO PER UMIDITA'
load Dati_Matrice_ric.mat; 

% si aggiunge l'ident. sseh sulla temperatura con modello 'yy' e 'ny'
for k=1:length(Dati)
  
    y = Dati(k).yhum; 
    U = Dati(k).Udati_per_h;   
    
    %%%%%%%%% tolgo media dai dati Udati_per_t e ytemp e li
    %%%%%%%%% risalvo aggiungendo i campi Udati_per_t_norm ed ytemp_norm 
    
    meanU = mean(U);

    for i=1:size(U,2)
       u(:,i) = (U(:,i)-meanU(i));    
    end
    Dati(k).Udati_per_h_norm = u(:,:); % <- aggiunta del campo

    meanY = mean(y);
    
    Dati(k).yhum_norm=(y(:,1)-meanY(1));  % <- aggiunta del campo
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%
    

end

% ora salvo la Dati_Matrice a cui ho aggiunto i due campi.
str=['Dati_Matrice_ric']; % qui c'è tutta la Dati_Matrice + i due campi
save(str,'Dati')


%% AGGIUNTA N4SID
% con questa parte si aggiugono i riusultati ricavati da n4sid alla
% struttura finale. Ogni sensore avrà in più il campo n4sid_t_norm (e DA FARE
% n4sid_h) al cui interno ci sono tutti i dati relativi all'n4sid

% facciamo una prova di aggiungere tutti i campi di n4sid e poi aggiungere
% un'altra volta lo stesso baraccone ma con un campo in meno e vediamo se
% si fonde o si sostituisce. fatto.chiaramente si sostituisce e il campo
% sparisce.

load Dati_Matrice_ric.mat

load Dati_n4sid_norm.mat % contiene la struttura id_n4sid

% si aggiunge l'ident. n4sid 
for i=1:length(Dati)
    Dati(i).n4sid_t_norm = id_n4sid(i);

end

str=['Dati_Matrice_ric_n4sid']; % vediamo se contiene tutto e cosi posso sovrascrivere ..._ric
save(str,'Dati')

%% CANCELLAZIONE DATI IN PIU'
% attenzione qui cancello dalla struttura finale i dati in più relativi
% alle prime ident. sseh che non sono completi.


% DA FARE




%% AGGIUNTA SSEH -n=[200 300 400] normalizzato-
% aggiunge i campi dei risultati delle nuove identificazioni alla struttura Dati.mat
% alla fine non modifica Dati_Matrice.mat ma salva l'unione in una nuova
% struttura chiamata Dati_Matrice_ric.mat

clear all, clc


load Dati_Matrice_ric.mat; % carico la struttura Dati a cui aggiungere i campi.

load Dati_sseh_ric3.mat; % carico la struttura con i campi da aggiungere.

% si aggiunge l'ident. sseh sulla temperatura con modello 'yy' e 'ny'
for i=1:length(Dati)
    for j=1:4
        for k=1:3
            Dati(i).sseh_t_yy_norm(j,k+3) = Dati_id(i).id_t_sseh_yy(j,k);
            Dati(i).sseh_t_ny_norm(j,k+3) = Dati_id(i).id_t_sseh_ny(j,k);
        end
    end
end

str=['Dati_Matrice_ric2'];
save(str,'Dati')


%%
% riorganizzo dati_Matrice_ric. faccio una nuova struttura DAti2
% organizzatta bene che poi salverò con il nome Dati su un file che si
% chiama Dati_Matrice_ricNEW
% load Dati_Matrice_ric

for i=1:length(Dati)
    
    Dati2(i).name_of_y = Dati(i).name_of_y;
    
    % per temperatura
    Dati2(i).t.dati = Dati(i).dati_t;
    Dati2(i).t.Colonne_U = Dati(i).Colone_U_t;   
    
    Dati2(i).t.U_dati_org = Dati(i).Udati_per_t;
    Dati2(i).t.Udati = Dati(i).Udati_per_t_norm;
    Dati2(i).t.Udati_norm = Dati(i).Udati_per_t_norm2;    
    Dati2(i).t.y_org = Dati(i).ytemp;
    Dati2(i).t.y = Dati(i).ytemp_norm;
    Dati2(i).t.y_norm = Dati(i).ytemp_norm2;
    
    Dati2(i).t.sseh_yy = Dati(i).sseh_t_yy_norm;
    Dati2(i).t.sseh_ny = Dati(i).sseh_t_ny_norm;
  
    Dati2(i).t.sseh_yy_norm = Dati(i).sseh_t_yy_norm2;
    Dati2(i).t.sseh_ny_norm = Dati(i).sseh_t_ny_norm2;
    
    Dati2(i).t.n4sid = Dati(i).n4sid_t_norm;
    
    % per l'umidita'
    Dati2(i).h.Colone_U = Dati(i).Colone_U_h;
    Dati2(i).h.dati = Dati(i).dati_h;
     
    Dati2(i).h.U_dati_org = Dati(i).Udati_per_h;
    Dati2(i).h.U_dati = Dati(i).Udati_per_h_norm;
    Dati2(i).h.U_dati_norm = Dati(i).Udati_per_h_norm2;

    Dati2(i).h.y_org = Dati(i).yhum;
    Dati2(i).h.y = Dati(i).yhum_norm;
    Dati2(i).h.y_norm = Dati(i).yhum_norm2;
  
    
end
%%
for i=1:length(Dati)
    Dati2(i).t.Udati_norm = Dati(i).t.Udati;
    Dati2(i).t.Udati = Dati(i).t.Udati_norm;
    
    Dati2(i).t.y_norm = Dati(i).t.y;
    Dati2(i).t.y = Dati(i).t.y_norm;
    
    Dati(i).t.Udati_norm = Dati2(i).t.Udati_norm;
    Dati(i).t.Udati = Dati2(i).t.Udati;
    
    Dati(i).t.y_norm = Dati2(i).t.y_norm;
    Dati(i).t.y = Dati2(i).t.y;


end
%% ripristino dei nomi allo status quo

clear Dati

Dati = Dati2;
 
clear Dati2

str=['Dati_Matrice_ric']; % sovrascrivo
save(str,'Dati')

