

function [] = myprova()

% Demonstrate how to tell which button in a uibuttongroup is selected.  
% Similar to GUI_6 except that a uibuttongroup which enforces exclusivity 
% is used.
%
% Suggested exercise:  Make the editbox change the selected radiobutton.
% Be sure to check that user input is valid.  
clc
close all

global vett_str_pp_in;

x_Sfh=0;      %dovuto 0,0 in alto a sinistra
y_Sfh=0;
l_Sfh=1230;
l_Sfh=710;
h_Sfh=600;%750;
pos_Sfh=[x_Sfh y_Sfh l_Sfh h_Sfh];
%figura totale
S.fh = figure('units','pixels',...
              'position',pos_Sfh,...
              'menubar','none',...
              'name','Gruppo AMR',...
              'numbertitle','off',...
              'resize','off');
  
set(S.fh,'windowbuttonmotionfcn',{@fh_wbmfcn,S}) % Set the motion detector.
%% dichiarazine riguardanti la finestra principale

x_bg1=0;        %dovuto che 0,0 ï¿½ in basso a sinistra
l_bg1=700;
h_bg1=200;
y_bg1=h_Sfh-h_bg1;
pos_bg1=[x_bg1 y_bg1 l_bg1 h_bg1];
%cornice per disattivare parte selezione variabili
S.bg1 = uibuttongroup('parent',S.fh,'units','pix',...
                     'pos',pos_bg1);
                 
WB = waitbar(0,'loading...','position',[222,222,290,60]) ;

Dati_ch = getappdata(0,'Dati_ch'); 
Dati_id = getappdata(0,'Dati_id'); 
waitbar(0.5,WB) 
Dati=Dati_id;


 %% dichiarazioni bg1
%popmenu di selezione edificio
 tipo_edificio={ 'null' 'vicenza' 'chiuso'};

x_pp_ed=5;
h_pp_ed=20;
l_pp_ed=100;
y_pp_ed=h_bg1-h_pp_ed-30;
pos_pp_ed=[x_pp_ed y_pp_ed l_pp_ed h_pp_ed];                 
     
%popmenu di selezione metodo identificazione
metodi={ 'null' 'sseh_yy' 'sseh_ny' 'n4sid' 'ssglar' 'glar' 'pem_bic' 'pem_aicc' };
x_pp_met=x_pp_ed+l_pp_ed+5;
h_pp_met=h_pp_ed;
l_pp_met=l_pp_ed+10;
y_pp_met=y_pp_ed;
pos_pp_met=[x_pp_met y_pp_met l_pp_met h_pp_met];
%menu a tendina scelta del algoritmo
S.pp_met = uicontrol('parent',S.bg1,'style','pop',...
                  'units','pixels',...
                  'position',pos_pp_met,...
                  'string',metodi);



%veloce inizializzazione dei sensori
lun_dati=length(Dati)+1;
sign=zeros(1,50);
for i=1:lun_dati-1
    sign(i)=Dati(i).id;
end
vett_str_pp_in={ 'null' num2str(sign(1)) num2str(sign(2)) num2str(sign(3)) num2str(sign(4)) num2str(sign(5)) num2str(sign(6)) num2str(sign(7)) num2str(sign(8)) num2str(sign(9)) num2str(sign(10)) num2str(sign(11)) num2str(sign(12)) num2str(sign(13)) num2str(sign(14)) num2str(sign(15)) num2str(sign(16)) num2str(sign(17)) num2str(sign(18)) num2str(sign(19)) num2str(sign(20)) num2str(sign(21)) num2str(sign(22)) num2str(sign(23)) num2str(sign(24)) num2str(sign(25)) num2str(sign(26)) num2str(sign(27)) num2str(sign(28)) num2str(sign(29)) num2str(sign(30)) };

sensori=vett_str_pp_in(1:lun_dati);
x_pp_in=x_pp_met+l_pp_met+5;
y_pp_in=y_pp_ed;
h_pp_in=h_pp_ed;
l_pp_in=l_pp_ed;
pos_pp_in=[x_pp_in y_pp_in l_pp_in h_pp_in];
S.pp_in = uicontrol('parent',S.bg1,'style','pop',...
                  'units','pixels',...
                  'position',pos_pp_in,...
                  'string',sensori,'enable','off');

%tipo sogetto che viene identificato              
tipomis={ 'null' 'temperature' 'humidity'}; %umidità sviluppo futuro
tipomis={ 'null' 'temperature' };
l_pp_ht=l_pp_in+20;
x_pp_ht=x_pp_in+l_pp_in+5;
y_pp_ht=y_pp_in;
h_pp_ht=h_pp_in;
pos_pp_ht=[x_pp_ht y_pp_ht l_pp_ht h_pp_ht];
S.pp_ht = uicontrol('parent',S.bg1,'style','pop',...
                  'units','pixels',...
                  'position',pos_pp_ht,...
                  'string',tipomis);
              
% tipo_edificio={ 'null' 'vicenza' 'chiuso'};
% l_pp_ed=l_pp_in;
% x_pp_ed=x_pp_ht+l_pp_ht+5;
% y_pp_ed=y_pp_in;
% h_pp_ed=h_pp_in;
% pos_pp_ed=[x_pp_ed y_pp_ed l_pp_ed h_pp_ed];

%scritte sopra i menu

%scritta selezione edificio
S.pp_ed = uicontrol('parent',S.bg1,'style','pop',...
                  'units','pixels',...
                  'position',pos_pp_ed,...
                  'string',tipo_edificio);
              
%scritta sopra il menï¿½ a tendina
y_pp_met=y_pp_met+20;
pos_pp_met=[x_pp_met y_pp_met l_pp_met h_pp_met];
S.tx_met = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_pp_met,...
                  'string','metodi');
              
y_pp_in=y_pp_in+20;
pos_pp_in=[x_pp_in y_pp_in l_pp_in h_pp_in];
S.tx_in = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_pp_in,...
                  'string','sensore');
              
y_pp_ht=y_pp_ht+20;
pos_pp_ht=[x_pp_ht y_pp_ht l_pp_ht h_pp_ht];
S.tx_ht = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_pp_ht,...
                  'string','tipo segnale');
              
y_pp_ed=y_pp_ed+20;
pos_pp_ed=[x_pp_ed y_pp_ed l_pp_ed h_pp_ed];
S.tx_ed = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_pp_ed,...
                  'string','edificio');

  %creazione del bottone inizializzazione
S.push_init = uicontrol('parent',S.bg1,'style','push',...
                    'units','pixels',...
                    'position',[0 0 90 25],...
                    'fontsize',8,...
                    'string','Inizializzazione');
          
%creazioen del bottone calcola
%non subito attivo
S.push_calc = uicontrol('parent',S.bg1,'style','push',...
                    'units','pixels',...
                    'position',[270 0 90 25],...
                    'fontsize',8,...
                    'string','Illustra','enable','off');
%bottoni residuo bode e pzmap                
S.push_res = uicontrol('parent',S.bg1,'style','push',...
                    'units','pixels',...
                    'position',[590 0 70 25],...
                    'fontsize',8,...
                    'string','Residui','enable','on');
S.push_bode = uicontrol('parent',S.bg1,'style','push',...
                    'units','pixels',...
                    'position',[520 0 70 25],...
                    'fontsize',8,...
                    'string','Bode','enable','on');
S.push_pzmap = uicontrol('parent',S.bg1,'style','push',...
                    'units','pixels',...
                    'position',[450 0 70 25],...
                    'fontsize',8,...
                    'string','PZmap','enable','on');
     
                
                
 %% scelta sshe di p ed n
 
 p=zeros(1,30);
 n=zeros(1,30);
 
%inizializzazione dei popmenu p ed n, forse inutile perchè viene effettuata
%ogni volta che si cambia metodo, per evitare lo faccio anche al caricare
%del programma
n_str={ num2str(n(1)) num2str(n(2)) num2str(n(3)) num2str(n(4)) num2str(n(5)) num2str(n(6)) num2str(n(7)) num2str(n(8)) num2str(n(9)) num2str(n(10)) };
p_str={ num2str(p(1)) num2str(p(2)) num2str(p(3)) num2str(p(4)) num2str(p(5)) num2str(p(6)) num2str(p(7)) num2str(p(8)) num2str(p(9)) num2str(p(10)) };
L_str={'short' 'long'}; 
n_str=n_str(1:3);
p_str=p_str(1:3);

%il prefisso sseh è dovuto al fatto che in principio si variava n e p solo
%per sseh, poi come tutti i codici si è evoluta ma è rimasta questa
%nomnclatura
pos_pp_sseh_n=[100 100 100 10];
S.pp_sseh_n = uicontrol('parent',S.bg1,'style','pop',...
                  'units','pixels',...
                  'position',pos_pp_sseh_n,...
                  'string',n_str,'enable','off');
              
pos_pp_sseh_p=[100 80 100 10];
S.pp_sseh_p = uicontrol('parent',S.bg1,'style','pop',...
                  'units','pixels',...
                  'position',pos_pp_sseh_p,...
                  'string',p_str,'enable','off');

pos_pp_sseh_k=[100 40 100 30];
S.pp_sseh_k = uicontrol('parent',S.bg1,'style','edit',...
                  'units','pixels',...
                  'position',pos_pp_sseh_k,...
                  'enable','on','string','10');
pos_pp_sseh_i=[250 40 100 30];
S.pp_sseh_i = uicontrol('parent',S.bg1,'style','edit',...
                  'units','pixels',...
                  'position',pos_pp_sseh_i,...
                  'enable','on','string','1');
pos_pp_sseh_L=[100 120 100 10];
S.pp_sseh_L = uicontrol('parent',S.bg1,'style','pop',...
                  'units','pixels',...
                  'position',pos_pp_sseh_L,...
                  'string',L_str,'enable','on');

pos_pp_sseh_n=[80 96 20 12];
pos_pp_sseh_p=[80 74 20 16];
pos_pp_sseh_k=[80 50 20 12];
pos_pp_sseh_i=[230 50 20 12];


              S.tx_pp_sseh_p = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_pp_sseh_p,...
                  'string','p');
              S.tx_pp_sseh_p = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_pp_sseh_n,...
                  'string','n');
              S.tx_pp_sseh_p = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_pp_sseh_k,...
                  'string','k');
              S.tx_pp_sseh_i = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_pp_sseh_i,...
                  'string','i');
              
%numero grafico
pos_pp_figure1=[350 100 100 20];
vett_str_pp_figure1={ '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' '14' '15' '16' '17' '18' '19' '20' '21' '22' '23' '24' '25' '26' '27' '28' '29' '30' };
S.pp_figure1 = uicontrol('parent',S.bg1,'style','pop',...
                  'units','pixels',...
                  'position',pos_pp_figure1,...
                  'string',vett_str_pp_figure1,'enable','on');
pos_pp_figure2=[350 80 100 20];
vett_str_pp_figure2={ '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' '14' '15' '16' '17' '18' '19' '20' '21' '22' '23' '24' '25' '26' '27' '28' '29' '30' };
S.pp_figure2 = uicontrol('parent',S.bg1,'style','pop',...
                  'units','pixels',...
                  'position',pos_pp_figure2,...
                  'string',vett_str_pp_figure2,'enable','on');
pos_pp_figure3=[350 40 100 20];
vett_str_pp_figure3={ '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' '14' '15' '16' '17' '18' '19' '20' '21' '22' '23' '24' '25' '26' '27' '28' '29' '30' };
S.pp_figure3 = uicontrol('parent',S.bg1,'style','pop',...
                  'units','pixels',...
                  'position',pos_pp_figure3,...
                  'string',vett_str_pp_figure3,'enable','on','Value',3);
pos_pp_figure4=[350 60 100 20];
vett_str_pp_figure4={ '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' '14' '15' '16' '17' '18' '19' '20' '21' '22' '23' '24' '25' '26' '27' '28' '29' '30' };
S.pp_figure4 = uicontrol('parent',S.bg1,'style','pop',...
                  'units','pixels',...
                  'position',pos_pp_figure4,...
                  'string',vett_str_pp_figure4,'enable','on','Value',2);

              
pos_pp_figure1=[450 100 40 20];
pos_pp_figure2=[450 80 40 20];
pos_pp_figure3=[450 40 100 20];
pos_pp_figure4=[450 60 40 20];

%scritte sopra numero grafico

  S.tx_pp_figure1 = uicontrol('parent',S.bg1,'style','text',...
      'units','pixels',...
      'position',pos_pp_figure1,...
      'string','val');
  S.tx_pp_figure2 = uicontrol('parent',S.bg1,'style','text',...
      'units','pixels',...
      'position',pos_pp_figure2,...
      'string','sim');
  S.tx_pp_figure3 = uicontrol('parent',S.bg1,'style','text',...
      'units','pixels',...
      'position',pos_pp_figure3,...
      'string','res/bode/zp');
  S.tx_pp_figure4 = uicontrol('parent',S.bg1,'style','text',...
      'units','pixels',...
      'position',pos_pp_figure4,...
      'string','err');
              
pos_tx_figure=[350 122 100 16];
S.tx_pp_figure = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_tx_figure,...
                  'string','Number Figure');
              
  %% dichiarazioni delle call
  
  %importante in queste righe si dichiarano le funzioni dove mettere le
  %azioni che si devono effetture al richiamo delle varie funzioni
              
 set(S.pp_met,'callback',{@pp_met_call,S});  % Set the callback.
 set(S.pp_in,'callback',{@pp_in_call,S});  % Set the callback.
 set(S.pp_ht,'callback',{@pp_ht_call,S});  % Set the callback.
 set(S.pp_ed,'callback',{@pp_ed_call,S});  % Set the callback.
 set(S.pp_figure1,'callback',{@pp_figure1_call,S})  % Set callbacks.

 set(S.push_init,'callback',{@push_init_call,S})  % Set callbacks.
 set(S.push_calc,'callback',{@push_calc_call,S})  % Set callbacks.
 set(S.push_res,'callback',{@push_res_call,S})  % Set callbacks.
 set(S.push_bode,'callback',{@push_bode_call,S})  % Set callbacks.
 set(S.push_pzmap,'callback',{@push_pzmap_call,S})  % Set callbacks.

 

%% dichiarazioni di bg2

%creazione della tabelle sulla sparsità

pos_fit=[525 170 40 16];
S.tx_fit = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_fit,...
                  'string','Fit:');
pos_spar=[510 150 55 16];
S.tx_spar = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_spar,...
                  'string','Sparsity:');
pos_use_t=[510 130 55 16];
S.tx_use_t = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_use_t,...
                  'string','Use t:');
              
pos_use_h=[510 110 55 16];
S.tx_use_h = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_use_h,...
                  'string','Use h:');
              
pos_use_ir=[510 90 55 16];
S.tx_use_ir = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_use_ir,...
                  'string','Use ir:');
pos_use_ir=[500 70 65 16];
S.tx_use_ir = uicontrol('parent',S.bg1,'style','text',...
                  'units','pixels',...
                  'position',pos_use_ir,...
                  'string','Rms/Cod:');

pos_use_err=[380 5 300 40];
S.tx_use_err = uicontrol('parent',S.bg1,'style','text','units','pixels','position',pos_use_err,'string','Modello non identificato','fontsize',20,'ForegroundColor','r','visible','off');


           
%% dichiarazioni di bg3

S.PosSens = axes('parent',S.fh,'units','pixels',...
               'position',[20 20 680 350],...
               'fontsize',8,...
               'visible','on');
set(S.PosSens,'buttondownfcn',{@PosSens_click,S});
%set(S.fh,'windowbuttonmotionfcn',{@fh_wbmfcn,S}) % Set the motion detector.


%% dichiarazioni di bg4

%%

waitbar(1, WB) ;
delete(WB)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%fine della dichiarazioni ora vi sono solo le operazioni al click della
%persona
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


function [] = pp_met_call(varargin)
  %% selezione del metodo
  
  %tutte le operazioni che vengono fatte quando si seleziona un metodo di
  %identificazione
    S = varargin{3};  % Get the structure. perchè ogni volta che si entra in una funzione il workspace è vuoto
    
    %leggo alcuni indici
    set(S.pp_sseh_n,'Value',1);
    set(S.pp_sseh_p,'Value',1);
    
    popup_sel_index_pp_met = get(S.pp_met, 'Value');
    popup_sel_index_pp_in = get(S.pp_in, 'Value');
    popup_sel_index_pp_ht = get(S.pp_ht, 'Value');
    popup_sel_index_pp_ed = get(S.pp_ed, 'Value');
    
    Dati_ch = getappdata(0,'Dati_ch'); 
    Dati_id = getappdata(0,'Dati_id'); 
    
    %guardo che selezione è stata fatta
    if popup_sel_index_pp_ed==2
        Dati=Dati_id;
    elseif popup_sel_index_pp_ed==3
        Dati=Dati_ch;
    else
        Dati=Dati_id;
    end

    %attivo pulsante calc
    if popup_sel_index_pp_met~=1 && popup_sel_index_pp_in~=1 && popup_sel_index_pp_ht~=1 && popup_sel_index_pp_ed~=1
        set(S.push_calc,'enable','on');
    end;
    
    %attivo o meno i paremetri del sseh
    if ( popup_sel_index_pp_met==2 | popup_sel_index_pp_met==3 )
                
                set(S.pp_sseh_n,'enable','on');
                set(S.pp_sseh_p,'enable','on');
                
                [len_p len_n]=size(Dati(1).t.sseh_yy_norm);
                p=zeros(1,30);
                n=zeros(1,30);

                 %calcolo quanti segnali sono presenti nella nostra struttura
                 for i=1:len_p
                    p(i)= Dati(1).t.sseh_yy_norm(i,1).p_;
                 end

                 for i=1:len_n
                    n(i)= Dati(1).t.sseh_yy_norm(1,i).n_;
                 end

                % converto in stringa i numeri
                n_str={ num2str(n(1)) num2str(n(2)) num2str(n(3)) num2str(n(4)) num2str(n(5)) num2str(n(6)) num2str(n(7)) num2str(n(8)) num2str(n(9)) num2str(n(10)) };
                p_str={ num2str(p(1)) num2str(p(2)) num2str(p(3)) num2str(p(4)) num2str(p(5)) num2str(p(6)) num2str(p(7)) num2str(p(8)) num2str(p(9)) num2str(p(10)) };

                n_str=n_str(1:len_n);
                p_str=p_str(1:len_p);
                set(S.pp_sseh_n,'string',n_str);
                set(S.pp_sseh_p,'string',p_str);
                
    elseif ( popup_sel_index_pp_met==7 | popup_sel_index_pp_met==8 )  %pem_aic o bic
        if popup_sel_index_pp_ed==2
                set(S.pp_sseh_n,'enable','on');
                set(S.pp_sseh_p,'enable','off');

                [len_p len_n]=size(Dati(1).t.pem_norm);
                n=zeros(1,30);

                 %calcolo quanti segnali sono presenti nella nostra struttura
                 for i=1:len_n
                    n(i)= Dati(1).t.pem_norm(1,i).n;
                 end

                % converto in stringa i numeri
                n_str={ num2str(n(1)) num2str(n(2)) num2str(n(3)) num2str(n(4)) num2str(n(5)) num2str(n(6)) num2str(n(7)) num2str(n(8)) num2str(n(9)) num2str(n(10)) };               
                n_str=n_str(1:len_n); 
                set(S.pp_sseh_n,'string',n_str);
        elseif popup_sel_index_pp_ed==3
                set(S.pp_sseh_n,'enable','on');
                set(S.pp_sseh_p,'enable','off');

                [len_p len_n]=size(Dati(1).t.pem_norm.mod);
                n=zeros(1,30);

                 %calcolo quanti segnali sono presenti nella nostra struttura
                 for i=1:len_n
                    n(i)= Dati(1).t.pem_norm.mod(1,i).n;
                 end

                % converto in stringa i numeri
                n_str={ num2str(n(1)) num2str(n(2)) num2str(n(3)) num2str(n(4)) num2str(n(5)) num2str(n(6)) num2str(n(7)) num2str(n(8)) num2str(n(9)) num2str(n(10)) };               
                n_str=n_str(1:len_n); 
                set(S.pp_sseh_n,'string',n_str);
        end
    elseif popup_sel_index_pp_met==4
        if popup_sel_index_pp_ed==3
                set(S.pp_sseh_n,'enable','on');
                set(S.pp_sseh_p,'enable','off');

                [len_p len_n]=size(Dati(1).t.n4sid_norm.struc_n4sid);
                n=zeros(1,30);

                 %calcolo quanti segnali sono presenti nella nostra struttura
                 for i=1:len_n
                    n(i)= Dati(1).t.n4sid_norm.struc_n4sid(1,i).n;
                 end

                % converto in stringa i numeri
                n_str={ num2str(n(1)) num2str(n(2)) num2str(n(3)) num2str(n(4)) num2str(n(5)) num2str(n(6)) num2str(n(7)) num2str(n(8)) num2str(n(9)) num2str(n(10)) };               
                n_str=n_str(1:len_n); 
                set(S.pp_sseh_n,'string',n_str);
        else
            set(S.pp_sseh_n,'enable','off');
            set(S.pp_sseh_p,'enable','off');
        end
    elseif  popup_sel_index_pp_met==5
        if popup_sel_index_pp_ed==3
                set(S.pp_sseh_n,'enable','on');
                set(S.pp_sseh_p,'enable','on');
                
                [len_p len_n]=size(Dati(1).t.ssglar_norm.mod);
                p=zeros(1,30);
                n=zeros(1,30);

                 %calcolo quanti segnali sono presenti nella nostra struttura
                 for i=1:len_p
                    p(i)= Dati(1).t.ssglar_norm.mod(i,1).pRKHS;
                 end

                 for i=1:len_n
                    n(i)= Dati(1).t.ssglar_norm.mod(1,i).n;
                 end

                % converto in stringa i numeri
                n_str={ num2str(n(1)) num2str(n(2)) num2str(n(3)) num2str(n(4)) num2str(n(5)) num2str(n(6)) num2str(n(7)) num2str(n(8)) num2str(n(9)) num2str(n(10)) };
                p_str={ num2str(p(1)) num2str(p(2)) num2str(p(3)) num2str(p(4)) num2str(p(5)) num2str(p(6)) num2str(p(7)) num2str(p(8)) num2str(p(9)) num2str(p(10)) };

                n_str=n_str(1:len_n);
                p_str=p_str(1:len_p);
                set(S.pp_sseh_n,'string',n_str);
                set(S.pp_sseh_p,'string',p_str);
        else
            set(S.pp_sseh_n,'enable','off');
            set(S.pp_sseh_p,'enable','off');
        end
    elseif  popup_sel_index_pp_met==6 
        if popup_sel_index_pp_ed==3
                set(S.pp_sseh_n,'enable','on');
                set(S.pp_sseh_p,'enable','off');

                [len_p len_n]=size(Dati(1).t.glar_norm.mod);
                n=zeros(1,30);

                 %calcolo quanti segnali sono presenti nella nostra struttura
                 for i=1:len_n
                    n(i)= Dati(1).t.glar_norm.mod(1,i).n;
                 end

                % converto in stringa i numeri
                n_str={ num2str(n(1)) num2str(n(2)) num2str(n(3)) num2str(n(4)) num2str(n(5)) num2str(n(6)) num2str(n(7)) num2str(n(8)) num2str(n(9)) num2str(n(10)) };               
                n_str=n_str(1:len_n); 
                set(S.pp_sseh_n,'string',n_str);
        else
            set(S.pp_sseh_n,'enable','off');
            set(S.pp_sseh_p,'enable','off');
        end
    else
        set(S.pp_sseh_n,'enable','off');
        set(S.pp_sseh_p,'enable','off');
    end;
    
    popup_enable_pp_met = get(S.pp_met, 'enable');
    popup_enable_pp_in = get(S.pp_in, 'enable');
    popup_enable_pp_ht = get(S.pp_ht, 'enable');
    popup_enable_pp_ed = get(S.pp_ed, 'enable');
    on='on';
    bln_met = strcmp(popup_enable_pp_met,on);
    bln_in = strcmp(popup_enable_pp_in,on);
    bln_ht = strcmp(popup_enable_pp_ht,on);
    bln_ed = strcmp(popup_enable_pp_ed,on);
    boolean=( bln_met && bln_in && bln_ht && bln_ed);
    
    if boolean
        set(S.push_calc,'enable','on');
    else
        set(S.push_calc,'enable','off');
    end
    
    if popup_sel_index_pp_met==1 || popup_sel_index_pp_in==1 || popup_sel_index_pp_ht==1 || popup_sel_index_pp_ed==1
        set(S.push_calc,'enable','off');
    end

 function [] = pp_in_call(varargin)
%% selezione dell'ingresso


% % % Callback for the popup.
    S = varargin{3};  % Get the structure.
    popup_sel_index_pp_met = get(S.pp_met, 'Value');
    popup_sel_index_pp_in = get(S.pp_in, 'Value');
    popup_sel_index_pp_ht = get(S.pp_ht, 'Value');
    popup_sel_index_pp_ed = get(S.pp_ed, 'Value');

    if popup_sel_index_pp_met~=1 && popup_sel_index_pp_in~=1 && popup_sel_index_pp_ht~=1 && popup_sel_index_pp_ed~=1
        set(S.push_calc,'enable','on');
    end;
    
    popup_enable_pp_met = get(S.pp_met, 'enable');
    popup_enable_pp_in = get(S.pp_in, 'enable');
    popup_enable_pp_ht = get(S.pp_ht, 'enable');
    popup_enable_pp_ed = get(S.pp_ed, 'enable');
    on='on';
    bln_met = strcmp(popup_enable_pp_met,on);
    bln_in = strcmp(popup_enable_pp_in,on);
    bln_ht = strcmp(popup_enable_pp_ht,on);
    bln_ed = strcmp(popup_enable_pp_ed,on);
    boolean=( bln_met && bln_in && bln_ht && bln_ed);
    if boolean
        set(S.push_calc,'enable','on');
    else
        set(S.push_calc,'enable','off');

    end
    if popup_sel_index_pp_met==1 || popup_sel_index_pp_in==1 || popup_sel_index_pp_ht==1 || popup_sel_index_pp_ed==1
        set(S.push_calc,'enable','off');
    end    

    

 function [] = pp_ht_call(varargin)
%% seletore temperatura umiditï¿½
    % % % Callback for the popup.
    S = varargin{3};  % Get the structure.
    popup_sel_index_pp_met = get(S.pp_met, 'Value');
    popup_sel_index_pp_in = get(S.pp_in, 'Value');
    popup_sel_index_pp_ht = get(S.pp_ht, 'Value');
    popup_sel_index_pp_ed = get(S.pp_ed, 'Value');

    if popup_sel_index_pp_met~=1 && popup_sel_index_pp_in~=1 && popup_sel_index_pp_ht~=1 && popup_sel_index_pp_ed~=1
        set(S.push_calc,'enable','on');
    end;
    
    
    popup_enable_pp_met = get(S.pp_met, 'enable');
    popup_enable_pp_in = get(S.pp_in, 'enable');
    popup_enable_pp_ht = get(S.pp_ht, 'enable');
    popup_enable_pp_ed = get(S.pp_ed, 'enable');
    on='on';
    bln_met = strcmp(popup_enable_pp_met,on);
    bln_in = strcmp(popup_enable_pp_in,on);
    bln_ht = strcmp(popup_enable_pp_ht,on);
    bln_ed = strcmp(popup_enable_pp_ed,on);
    boolean=( bln_met && bln_in && bln_ht && bln_ed);
    if boolean
        set(S.push_calc,'enable','on');
    else
        set(S.push_calc,'enable','off');

    end;
    if popup_sel_index_pp_met==1 || popup_sel_index_pp_in==1 || popup_sel_index_pp_ht==1 || popup_sel_index_pp_ed==1
        set(S.push_calc,'enable','off');
    end;
    
    
    function [] = pp_ed_call(varargin)
    %% funzione pop edificio ridimensiono i vettori ingressi
    % % % Callback for the popup.
    S = varargin{3};  % Get the structure.
    
    set(S.pp_met, 'Value',1);
    set(S.pp_in, 'Value',2);
    set(S.pp_sseh_n,'Value',1);
    set(S.pp_sseh_p,'Value',1);
            
    
    popup_sel_index_pp_met = get(S.pp_met, 'Value');
    popup_sel_index_pp_in = get(S.pp_in, 'Value');
    popup_sel_index_pp_ht = get(S.pp_ht, 'Value');
    popup_sel_index_pp_ed = get(S.pp_ed, 'Value');

    %carcio dati
    Dati_ch = getappdata(0,'Dati_ch');
    Dati_id = getappdata(0,'Dati_id');
    
    if popup_sel_index_pp_ed==2
        Dati=Dati_id;
        edif='vi';
    elseif popup_sel_index_pp_ed==3
        Dati=Dati_ch;
        edif='ch';
    end
    
    lun_dati=length(Dati)+1;
    sign=zeros(1,50);
    for i=1:lun_dati-1
        sign(i)=Dati(i).id;
    end
    vett_str_pp_in={ 'null' num2str(sign(1)) num2str(sign(2)) num2str(sign(3)) num2str(sign(4)) num2str(sign(5)) num2str(sign(6)) num2str(sign(7)) num2str(sign(8)) num2str(sign(9)) num2str(sign(10)) num2str(sign(11)) num2str(sign(12)) num2str(sign(13)) num2str(sign(14)) num2str(sign(15)) num2str(sign(16)) num2str(sign(17)) num2str(sign(18)) num2str(sign(19)) num2str(sign(20)) num2str(sign(21)) num2str(sign(22)) num2str(sign(23)) num2str(sign(24)) num2str(sign(25)) num2str(sign(26)) num2str(sign(27)) num2str(sign(28)) num2str(sign(29)) num2str(sign(30)) };
    
    %impongo menu dei sensori
    if popup_sel_index_pp_ed==2 || popup_sel_index_pp_ed==3
        set(S.pp_in,'enable','on');
        sensori=vett_str_pp_in(1:lun_dati);
        set(S.pp_in,'string',sensori);
    else
        set(S.pp_in,'enable','off');
    end
    %ora dovrei imporre i parametri n e p
    
    [len_p len_n]=size(Dati(1).t.sseh_yy_norm);
    p=zeros(1,30);
    n=zeros(1,30);
 
     %calcolo quanti segnali sono presenti nella nostra struttura
     for i=1:len_p
        p(i)= Dati(1).t.sseh_yy_norm(i,1).p_;
     end

     for i=1:len_n
        n(i)= Dati(1).t.sseh_yy_norm(1,i).n_;
     end
 
    % converto in stringa i numeri
    n_str={ num2str(n(1)) num2str(n(2)) num2str(n(3)) num2str(n(4)) num2str(n(5)) num2str(n(6)) num2str(n(7)) num2str(n(8)) num2str(n(9)) num2str(n(10)) };
    p_str={ num2str(p(1)) num2str(p(2)) num2str(p(3)) num2str(p(4)) num2str(p(5)) num2str(p(6)) num2str(p(7)) num2str(p(8)) num2str(p(9)) num2str(p(10)) };

    n_str=n_str(1:len_n);
    p_str=p_str(1:len_p);
    set(S.pp_sseh_n,'string',n_str);
    set(S.pp_sseh_p,'string',p_str);
     
    if popup_sel_index_pp_met~=1 && popup_sel_index_pp_in~=1 && popup_sel_index_pp_ht~=1 && popup_sel_index_pp_ed~=1
        set(S.push_calc,'enable','on');
    end
    if popup_sel_index_pp_met==1 || popup_sel_index_pp_in==1 || popup_sel_index_pp_ht==1 || popup_sel_index_pp_ed==1
        set(S.push_calc,'enable','off');
    end
    
    popup_enable_pp_met = get(S.pp_met, 'enable');
    popup_enable_pp_in = get(S.pp_in, 'enable');
    popup_enable_pp_ht = get(S.pp_ht, 'enable');
    popup_enable_pp_ed = get(S.pp_ed, 'enable');
    on='on';
    bln_met = strcmp(popup_enable_pp_met,on);
    bln_in = strcmp(popup_enable_pp_in,on);
    bln_ht = strcmp(popup_enable_pp_ht,on);
    bln_ed = strcmp(popup_enable_pp_ed,on);
    boolean=( bln_met && bln_in && bln_ht && bln_ed);
    
    
    if boolean
        set(S.push_calc,'enable','on');
    else
        set(S.push_calc,'enable','off');
    end
    
    if popup_sel_index_pp_met==1 || popup_sel_index_pp_in==1 || popup_sel_index_pp_ht==1 || popup_sel_index_pp_ed==1
        set(S.push_calc,'enable','off');
    end
    
    idx=1;
    th='t';
    spar=zeros(3,length(Dati));
    disp_sens(spar,1,idx,th,edif);
    
    


  function [] = push_init_call(varargin)
%% funzione inizializza

%mette tutti i menu a 2 cioè prima scelta del popmenu
    % % % Callback for the push botton.
    S = varargin{1,3};  % Get the structure.
    
    Dati = getappdata(0,'Dati_id');
    
    popup_sel_index_pp_met = get(S.pp_met, 'Value');
    popup_sel_index_pp_in = get(S.pp_in, 'Value');
    popup_sel_index_pp_ht = get(S.pp_ht, 'Value');
    popup_sel_index_pp_ed = get(S.pp_ed, 'Value');
    
    %forzo le variabili non inizializzate e le metto diverse da null
    if popup_sel_index_pp_met==1; 
        popup_sel_index_pp_met=2;
        set(S.pp_sseh_n,'enable','on');
        set(S.pp_sseh_p,'enable','on');
    end;
    if popup_sel_index_pp_in==1; 
        popup_sel_index_pp_in=2; 
    end;
    if popup_sel_index_pp_ht==1; 
        popup_sel_index_pp_ht=2; 
    end;
    if popup_sel_index_pp_ed==1; 
        popup_sel_index_pp_ed=2; 
    end;
        %imposto i valori
    set(S.pp_met,'Value',popup_sel_index_pp_met);
    set(S.pp_in,'Value',popup_sel_index_pp_met);
    set(S.pp_ht,'Value',popup_sel_index_pp_met);
    set(S.pp_ed,'Value',popup_sel_index_pp_met);

    set(S.push_calc,'enable','on');
    set(S.pp_in,'enable','on');
    
    set(S.pp_sseh_n,'enable','on');
    set(S.pp_sseh_p,'enable','on');

    [len_p len_n]=size(Dati(1).t.sseh_yy_norm);
    p=zeros(1,30);
    n=zeros(1,30);

     %calcolo quanti segnali sono presenti nella nostra struttura
     for i=1:len_p
        p(i)= Dati(1).t.sseh_yy_norm(i,1).p_;
     end

     for i=1:len_n
        n(i)= Dati(1).t.sseh_yy_norm(1,i).n_;
     end

    % converto in stringa i numeri
    n_str={ num2str(n(1)) num2str(n(2)) num2str(n(3)) num2str(n(4)) num2str(n(5)) num2str(n(6)) num2str(n(7)) num2str(n(8)) num2str(n(9)) num2str(n(10)) };
    p_str={ num2str(p(1)) num2str(p(2)) num2str(p(3)) num2str(p(4)) num2str(p(5)) num2str(p(6)) num2str(p(7)) num2str(p(8)) num2str(p(9)) num2str(p(10)) };

    n_str=n_str(1:len_n);
    p_str=p_str(1:len_p);
    set(S.pp_sseh_n,'string',n_str);
    set(S.pp_sseh_p,'string',p_str);
    
    idx=popup_sel_index_pp_in-1;
    th='t';
    edif='vi';
    spar=zeros(3,length(Dati));
    disp_sens(spar,1,idx,th,edif);


  function [] = push_calc_call(varargin)
            %% calcola
            
            %funzione che è il cuore dell'interfaccia
            S = varargin{1,3};
            
                try
                    err_msg = getappdata(0,'err_msg');
                    delete(err_msg);
                catch
                end
            
            %solita lettura delle scelte
            popup_sel_index_pp_met = get(S.pp_met, 'Value');
            popup_sel_index_pp_in = get(S.pp_in, 'Value');
            popup_sel_index_pp_ht = get(S.pp_ht, 'Value');
            popup_sel_index_pp_ed = get(S.pp_ed, 'Value');  
            idx=popup_sel_index_pp_in-1;
            popup_sel_index_pp_figure1 = get(S.pp_figure1, 'Value');
            popup_sel_index_pp_figure2 = get(S.pp_figure2, 'Value');
            popup_sel_index_pp_figure4 = get(S.pp_figure4, 'Value');

            k=str2double(get(S.pp_sseh_k,'str'));
            idx_n=get(S.pp_sseh_n,'value');
            idx_p=get(S.pp_sseh_p,'value');
            idx_L=get(S.pp_sseh_L,'value');
            
            fit1=0;
            fit=0;
            mynan=0;
            spar=[];
            %da lasciare fisso, si usano i dati del tipo _norm
            boolean_norm=false;

            Dati_ch = getappdata(0,'Dati_ch'); 
            Dati_id = getappdata(0,'Dati_id'); 

            dati_plot=[];
            
            
            %accorciamento dei dati
            %scelta dell'edificio
            
            if popup_sel_index_pp_ed==2
                Dati=Dati_id;
                edif='vi';
            elseif popup_sel_index_pp_ed==3
                Dati=Dati_ch;
                edif='ch';
            end
            
            %scelta t o h e sensore
            if popup_sel_index_pp_in~=1              
                if popup_sel_index_pp_ht==2
                    th='t';
                    sens=Dati(idx).t; 
                elseif popup_sel_index_pp_ht==3
                    th='h';
                    sens=Dati(idx).h; 
                end
            end
            
            %scelta se in validazione usare solo i dati di validazione o
            %invece usate tutti i dati del sensore
            
            if idx_L==1
                Dati_Val=sens.Dati_Val;
            elseif idx_L==2
                Dati_Val=sens.Dati_Val_L;
            else
                Dati_Val=sens.Dati_Val;
            end
            
            %sseh_yy
            if popup_sel_index_pp_met==2
                  
                yy='yy';    
                %norm o non_nomr
                if boolean_norm
                    rif = sens.sseh_yy(idx_p,idx_n);
                else
                    rif = sens.sseh_yy_norm(idx_p,idx_n);
                end
                
                model=rif.Mnpf;
                
                if isnan(model)
                    mynan=1;
                else 
                    figure(popup_sel_index_pp_figure2+1)
                   [ y_no , fit1 ,  x_no ]=compare(Dati_Val,model,k);                   
                   [dati_plot fit] = test_validazione( model , Dati_Val , k);                        
                   spar=accensioni( Dati,idx,idx_p,idx_n,th,yy,edif);
                end
            end
            
            %sseh_ny
            if popup_sel_index_pp_met==3
                 yy='ny'; 

                %norm o non_nomr
                if boolean_norm
                    rif = sens.sseh_ny(idx_p,idx_n);
                else
                    rif = sens.sseh_ny_norm(idx_p,idx_n);
                end
               
                model=rif.Mnpf;
                
                if isnan(model)
                    mynan=1;
                else 
                   figure(popup_sel_index_pp_figure2+1)
                   [ y_no , fit1 ,  x_no ]=compare(Dati_Val,model,k);                   
                   [dati_plot fit] = test_validazione( model ,Dati_Val , k); 
                   spar=accensioni( Dati,idx,idx_p,idx_n,th,yy,edif);
                end
            end
            

            %n4sid_t_norm
            if popup_sel_index_pp_met==4                
                yy='n4sid';
                if  strcmp(edif,'vi')
                    Mn4sid=sens.n4sid_norm.best_mod.iden_n4sid;
                elseif strcmp(edif,'ch')    
                    Mn4sid=sens.n4sid_norm.struc_n4sid(idx_n).iden_n4sid;
                end
                
                if isnan(Mn4sid)
                    mynan=1;
                else
                    figure(popup_sel_index_pp_figure2+1)
                    [yh1, fit1, x01]=compare(Dati_Val,Mn4sid, k);
                    [dati_plot fit] = test_validazione( Mn4sid , Dati_Val,k);
                    spar=accensioni( Dati,idx,idx_p,idx_n,th,yy,edif);  
                end
            end
            
            %ssglar
            if popup_sel_index_pp_met==5
                                                        
                yy='ssglar';
                if  strcmp(edif,'vi')
                    Mssglar=sens.ssglar_norm.mod.Mnpg;
                elseif strcmp(edif,'ch')    
                    Mssglar=sens.ssglar_norm.mod(idx_p,idx_n).Mnpg;
                end
                
                if isnan(Mssglar)
                    mynan=1;
                else
                    figure(popup_sel_index_pp_figure2+1) 
                    [yh1, fit1, x01]=compare(Dati_Val,Mssglar, k);
                    [dati_plot fit] = test_validazione( Mssglar , Dati_Val,k);
                    spar=accensioni( Dati,idx,idx_p,idx_n,th,yy,edif); 
                end
                        
            end
            
            %glar
            if popup_sel_index_pp_met==6
                
                yy='glar';
                if  strcmp(edif,'vi')
                    Mglar=sens.glar_norm.mod(1,2).Mgl;
                elseif strcmp(edif,'ch')    
                    Mglar=sens.glar_norm.mod(1,idx_n).Mgl;
                end
                
                if isnan(Mglar)
                    mynan=1;
                else
                    figure(popup_sel_index_pp_figure2+1)
                    [yh1, fit1, x01]=compare(Dati_Val,Mglar, k);
                    [dati_plot fit] = test_validazione( Mglar , Dati_Val,k);
                    spar=accensioni( Dati,idx,idx_p,idx_n,th,yy,edif);  
                end
            end
            
            %pem sia pem_bic che pem_aic
            if popup_sel_index_pp_met==7 || popup_sel_index_pp_met==8
                yy='pem';
                 
                if  strcmp(edif,'vi')
                    if popup_sel_index_pp_met==7
                        Mpem=sens.pem_norm(idx_n).Mpem_BIC;
                    else
                        Mpem=sens.pem_norm(idx_n).Mpem_AICC;
                    end
                elseif strcmp(edif,'ch')    
                    if popup_sel_index_pp_met==7
                        Mpem=sens.pem_norm.mod(idx_n).Mpem_BIC;
                    else
                        Mpem=sens.pem_norm.mod(idx_n).Mpem_AICC;
                    end
                end
                
                if isnan(Mpem)
                    mynan=1;
                else
                    figure(popup_sel_index_pp_figure2+1)
                    [ y_no , fit1 ,  x_no ]=compare(Dati_Val,Mpem,k); 
                    [dati_plot fit] = test_validazione( Mpem , Dati_Val , k);
                    spar=accensioni( Dati,idx,idx_p,idx_n,th,yy,edif);
                end
            end
           
            %denormalizzaione dei dati per il normale plottagio
            %if popup_sel_index_pp_met==2 || popup_sel_index_pp_met==3
            if mynan==0
                dati_plot(:,1)=dati_plot(:,1)*var(sens.y_org)^(1/2)+mean(sens.y_org);
                dati_plot(:,2)=dati_plot(:,2)*var(sens.y_org)^(1/2)+mean(sens.y_org);  
            end
            %end


            %scrivo i fit
            pos_fit_val1=[565 170 60 16];
            pos_fit_val2=[620 170 60 16];
            S.tx_fit_val1 = uicontrol('parent',S.bg1,'style','text','units','pixels','position',pos_fit_val1,'string',[num2str(fit,4) '%']);
            S.tx_fit_val2 = uicontrol('parent',S.bg1,'style','text','units','pixels','position',pos_fit_val2,'string',[num2str(fit1,4) '%']);
            
            %calcolo sparsità
            size_spar=size(spar);
            tot_spar=size_spar(1)*size_spar(2);
            spar_str=num2str(100-sum(sum(spar))/tot_spar*100,4);
            spar_str=[spar_str '%'];
            pos_spar_val=[565 150 60 16];
            S.tx_spar_val = uicontrol('parent',S.bg1,'style','text','units','pixels','position',pos_spar_val,'string',spar_str);

            %definizio delle posizoni
            pos_use_t_val=[565 130 55 16];
            pos_use_h_val=[565 110 55 16];
            pos_use_ir_val=[565 90 55 16];
            pos_use_t_val_p=[620 130 55 16];
            pos_use_h_val_p=[620 110 55 16];
            pos_use_ir_val_p=[620 90 55 16];
            
            pos_use_rms=[565 70 55 16];
            pos_use_cod=[620 70 55 16];
            
            
            
            %seleziono discrivere la sparsità solo per gli sseh
            if mynan==0
                if popup_sel_index_pp_met==2 || popup_sel_index_pp_met==3 || popup_sel_index_pp_met==5 || popup_sel_index_pp_met==6

                    num_t=num2str(sum(spar(1,:)));
                    l=length(Dati);
                    ln=num2str(length(Dati));
                    num_t=[num_t '/' ln];

                    num_h=num2str(sum(spar(2,:)));
                    num_h=[num_h '/' ln];

                    num_ir=num2str(sum(spar(3,:)));
                    num_ir=[num_ir '/' ln];

                    num_t_p=num2str(sum(spar(1,:))/l*100,4);
                    num_t_p=[num_t_p '%'];

                    num_h_p=num2str(sum(spar(2,:))/l*100,4);
                    num_h_p=[num_h_p '%'];

                    num_ir_p=num2str(sum(spar(3,:))/l*100,4);
                    num_ir_p=[num_ir_p '%'];

    %                 rms = sqrt(mean((dati_plot(:,1)-dati_plot(:,2)).^2));
    %                 mse = rms^2;
    %                 cod = num2str(abs(1 - rms^2 / (mean((dati_plot(:,1)-mean(dati_plot(:,2))).^2))),4); 
    %                 rms = num2str(rms,4);
                else               
                    num_t=['nd/'];
                    num_h=['nd/'];
                    num_ir=['nd/'];
                    num_t_p=['nd/'];
                    num_h_p=['nd/'];
                    num_ir_p=['nd/'];

    %                 rms=['nd/'];
    %                 ems=['nd/'];
    %                 cod=['nd/'];
                end
            else
                 num_t=['nd/'];
                num_h=['nd/'];
                num_ir=['nd/'];
                num_t_p=['nd/'];
                num_h_p=['nd/'];
                num_ir_p=['nd/'];
            end
            
            if mynan==0
                rms = sqrt(mean((dati_plot(:,1)-dati_plot(:,2)).^2));
                mse = rms^2;
                cod = num2str(abs(1 - rms^2 / (mean((dati_plot(:,1)-mean(dati_plot(:,2))).^2))),4); 
                rms = num2str(rms,4);
            else
                cod = ['nd/'];
                rms = ['nd/'];
            end
            
            %scivo i dati sparsità
            S.tx_use_t_val = uicontrol('parent',S.bg1,'style','text','units','pixels','position',pos_use_t_val,'string',num_t);
            S.tx_use_h_val = uicontrol('parent',S.bg1,'style','text','units','pixels','position',pos_use_h_val,'string',num_h);
            S.tx_use_ir_val = uicontrol('parent',S.bg1,'style','text','units','pixels','position',pos_use_ir_val,'string',num_ir);
            S.tx_use_t_val_p = uicontrol('parent',S.bg1,'style','text','units','pixels','position',pos_use_t_val_p,'string',num_t_p);
            S.tx_use_h_val_p = uicontrol('parent',S.bg1,'style','text','units','pixels','position',pos_use_h_val_p,'string',num_h_p);
            S.tx_use_ir_val_p = uicontrol('parent',S.bg1,'style','text','units','pixels','position',pos_use_ir_val_p,'string',num_ir_p);
            
            % %         % da qui cacolo gli indici RMS_k COD_k MSE
            
            S.tx_use_rms = uicontrol('parent',S.bg1,'style','text','units','pixels','position',pos_use_rms,'string',rms);
            S.tx_use_cod = uicontrol('parent',S.bg1,'style','text','units','pixels','position',pos_use_cod,'string',cod);

            % funzione che richiama il disegno dell'edificio
            Size_spar=size(spar);
            Sum_spar=sum(Size_spar);
            if mynan==0
                if Sum_spar<length(Dati)
                else
                    disp_sens(spar,1,idx,th,edif);  % uno perchè disegna nell'interfaccia
                end
            else
                spar=zeros(3,length(Dati));
                disp_sens(spar,1,idx,th,edif);  %disegno sensori vuoti
            end
            
            %figura su cui plottare, non leggo il numero ma l'indice del
            %popmenu e poi lo implemento 1
            
            if mynan==0
                figure(popup_sel_index_pp_figure4+1);
                plot(abs(dati_plot(:,1)-dati_plot(:,2)))
                stem(abs(dati_plot(:,1)-dati_plot(:,2)))
                figure(popup_sel_index_pp_figure1+1);
                plot(dati_plot);
                legend('y misurata','y validazione','position','thebest')
                
            end
            
            if mynan==1
                     %se nan chiudo tutte le finestre   
                     for i=2:40
                         try
                         close(i);
                         catch
                         end
                     end
                
                err_msg=msgbox('Modello non identificato','Errore','error');
                setappdata(0,'err_msg',err_msg);
            else
                
            end
             
            
 function [] = push_res_call(varargin)
            %% residui
            S = varargin{1,3};
            
            popup_sel_index_pp_met = get(S.pp_met, 'Value');
            popup_sel_index_pp_in = get(S.pp_in, 'Value');
            popup_sel_index_pp_ht = get(S.pp_ht, 'Value');
            popup_sel_index_pp_ed = get(S.pp_ed, 'Value');  
            idx=popup_sel_index_pp_in-1;
            
            popup_sel_index_pp_figure3 = get(S.pp_figure3, 'Value');

            k=str2double(get(S.pp_sseh_k,'str'));
            idx_n=get(S.pp_sseh_n,'value');
            idx_p=get(S.pp_sseh_p,'value');
            idx_L=get(S.pp_sseh_L,'value');

            Dati_ch = getappdata(0,'Dati_ch'); 
            Dati_id = getappdata(0,'Dati_id');
            
            if popup_sel_index_pp_ed==2
                Dati=Dati_id;
                edif='vi';
            elseif popup_sel_index_pp_ed==3
                Dati=Dati_ch;
                edif='ch';
            end
            
            %scelta t o h e sensore
            if popup_sel_index_pp_in~=1              
                if popup_sel_index_pp_ht==2
                    th='t';
                    sens=Dati(idx).t; 
                elseif popup_sel_index_pp_ht==3
                    th='h';
                    sens=Dati(idx).h; 
                end
            end
            
            
            if idx_L==1
                Dati_Val=sens.Dati_Val;
            elseif idx_L==2
                Dati_Val=sens.Dati_Val_L;
            else
                Dati_Val=sens.Dati_Val;
            end
            
            data=Dati_Val;
            
            %sseh_yy
            if popup_sel_index_pp_met==2
                rif = sens.sseh_yy_norm(idx_p,idx_n);
                model=rif.Mnpf;
            end
            
            %sseh_ny
            if popup_sel_index_pp_met==3
                rif = sens.sseh_ny_norm(idx_p,idx_n);
                model=rif.Mnpf;    
            end
            

            %n4sid_t_norm
            if popup_sel_index_pp_met==4
                if  strcmp(edif,'vi')
                    model=sens.n4sid_norm.best_mod.iden_n4sid;
                elseif strcmp(edif,'ch')    
                    model=sens.n4sid_norm.struc_n4sid(idx_n).iden_n4sid;
                end
            end
            
            %ssglar
            if popup_sel_index_pp_met==5
                model=sens.ssglar_norm.mod.Mnpg;        
            end
            
            %glar
            if popup_sel_index_pp_met==6
                model=sens.glar_norm.mod(1,2).Mgl;     
            end
            
            %pem sia pem_bic che pem_aic
            if popup_sel_index_pp_met==7 || popup_sel_index_pp_met==8
                if popup_sel_index_pp_met==7
                    Mpem=sens.pem_norm(idx_n).Mpem_BIC;
                else
                    Mpem=sens.pem_norm(idx_n).Mpem_AICC;
                end
                model=Mpem;
            end
            
            figure(popup_sel_index_pp_figure3+1);
            resid(model,data);
            
function [] = push_bode_call(varargin)
            %% bode
            S = varargin{1,3};
            
            popup_sel_index_pp_met = get(S.pp_met, 'Value');
            popup_sel_index_pp_in = get(S.pp_in, 'Value');
            popup_sel_index_pp_ht = get(S.pp_ht, 'Value');
            popup_sel_index_pp_ed = get(S.pp_ed, 'Value');  
            idx=popup_sel_index_pp_in-1;
            
            popup_sel_index_pp_figure3 = get(S.pp_figure3, 'Value');

            k=str2double(get(S.pp_sseh_k,'str'));
            idx_n=get(S.pp_sseh_n,'value');
            idx_p=get(S.pp_sseh_p,'value');
            idx_L=get(S.pp_sseh_L,'value');

            Dati_ch = getappdata(0,'Dati_ch'); 
            Dati_id = getappdata(0,'Dati_id'); 
            
            if popup_sel_index_pp_ed==2
                Dati=Dati_id;
                edif='vi';
            elseif popup_sel_index_pp_ed==3
                Dati=Dati_ch;
                edif='ch';
            end
            
            %scelta t o h e sensore
            if popup_sel_index_pp_in~=1              
                if popup_sel_index_pp_ht==2
                    th='t';
                    sens=Dati(idx).t; 
                elseif popup_sel_index_pp_ht==3
                    th='h';
                    sens=Dati(idx).h; 
                end
            end
            
            if idx_L==1
                Dati_Val=sens.Dati_Val;
            elseif idx_L==2
                Dati_Val=sens.Dati_Val_L;
            else
                Dati_Val=sens.Dati_Val;
            end
            
            %
            %sseh_yy
            if popup_sel_index_pp_met==2
                rif = sens.sseh_yy_norm(idx_p,idx_n);
                model=rif.Mnpf;
            end
            
            %sseh_ny
            if popup_sel_index_pp_met==3
                rif = sens.sseh_ny_norm(idx_p,idx_n);
                model=rif.Mnpf;
            end
            

            %n4sid_t_norm
            if popup_sel_index_pp_met==4
                if  strcmp(edif,'vi')
                    model=sens.n4sid_norm.best_mod.iden_n4sid;
                elseif strcmp(edif,'ch')    
                    model=sens.n4sid_norm.struc_n4sid(idx_n).iden_n4sid;
                end
            end
            
            %ssglar
            if popup_sel_index_pp_met==5
                model=sens.ssglar_norm.mod.Mnpg;
            end
            
            %glar
            if popup_sel_index_pp_met==6
                model=sens.glar_norm.mod(1,2).Mgl;
            end
            
            %pem sia pem_bic che pem_aic
            if popup_sel_index_pp_met==7 || popup_sel_index_pp_met==8
                if popup_sel_index_pp_met==7
                    Mpem=sens.pem_norm(idx_n).Mpem_BIC;
                else
                    Mpem=sens.pem_norm(idx_n).Mpem_AICC;
                end
                model=Mpem;
            end
            
            try
                figure(popup_sel_index_pp_figure3+1);
                bode(model)
            catch
                close(popup_sel_index_pp_figure3+1)
            end
            
            
            function [] = push_pzmap_call(varargin)
            %% pzmap
            S = varargin{1,3};
            
            popup_sel_index_pp_met = get(S.pp_met, 'Value');
            popup_sel_index_pp_in = get(S.pp_in, 'Value');
            popup_sel_index_pp_ht = get(S.pp_ht, 'Value');
            popup_sel_index_pp_ed = get(S.pp_ed, 'Value');  
            idx=popup_sel_index_pp_in-1;
            
            popup_sel_index_pp_figure1 = get(S.pp_figure1, 'Value');
            popup_sel_index_pp_figure2 = get(S.pp_figure2, 'Value');
            popup_sel_index_pp_figure3 = get(S.pp_figure3, 'Value');
            popup_sel_index_pp_figure4 = get(S.pp_figure4, 'Value');

            k=str2double(get(S.pp_sseh_k,'str'));
            idx_n=get(S.pp_sseh_n,'value');
            idx_p=get(S.pp_sseh_p,'value');
            idx_L=get(S.pp_sseh_L,'value');

            Dati_ch = getappdata(0,'Dati_ch'); 
            Dati_id = getappdata(0,'Dati_id'); 
            
            if popup_sel_index_pp_ed==2
                Dati=Dati_id;
                edif='vi';
            elseif popup_sel_index_pp_ed==3
                Dati=Dati_ch;
                edif='ch';
            end
            
            %scelta t o h e sensore
            if popup_sel_index_pp_in~=1              
                if popup_sel_index_pp_ht==2
                    th='t';
                    sens=Dati(idx).t; 
                elseif popup_sel_index_pp_ht==3
                    th='h';
                    sens=Dati(idx).h; 
                end
            end
            
            if idx_L==1
                Dati_Val=sens.Dati_Val;
            elseif idx_L==2
                Dati_Val=sens.Dati_Val_L;
            else
                Dati_Val=sens.Dati_Val;
            end
            
            
            %sseh_yy
            if popup_sel_index_pp_met==2
                rif = sens.sseh_yy_norm(idx_p,idx_n);
                model=rif.Mnpf;
            end
            
            %sseh_ny
            if popup_sel_index_pp_met==3
                rif = sens.sseh_ny_norm(idx_p,idx_n);
                model=rif.Mnpf;
            end
            

            %n4sid_t_norm
            if popup_sel_index_pp_met==4
                if  strcmp(edif,'vi')
                    model=sens.n4sid_norm.best_mod.iden_n4sid;
                elseif strcmp(edif,'ch')    
                    model=sens.n4sid_norm.struc_n4sid(idx_n).iden_n4sid;
                end
            end
            
            %ssglar
            if popup_sel_index_pp_met==5
                model=sens.ssglar_norm.mod.Mnpg;
            end
            
            %glar
            if popup_sel_index_pp_met==6
                model=sens.glar_norm.mod(1,2).Mgl;
            end
            
            %pem sia pem_bic che pem_aic
            if popup_sel_index_pp_met==7 || popup_sel_index_pp_met==8
                if popup_sel_index_pp_met==7
                    Mpem=sens.pem_norm(idx_n).Mpem_BIC;
                else
                    Mpem=sens.pem_norm(idx_n).Mpem_AICC;
                end
                model=Mpem;
            end
            
            try
                i=str2double(get(S.pp_sseh_i,'str'));
                model=tf(model.b(i,:),model.a)
                figure(popup_sel_index_pp_figure3+1);
                pzmap(model)
            catch
            end
            
            
            
            %%
function [] = PosSens_click(varargin)
      S = varargin{1,3};
%       figure;
%       clf
%       x=[1:0.001:10];
%       y=sin(x);
%       plot(y);
      
function []=fh_wbmfcn(varargin)
      S = varargin{1,3};
      
    
    
        
      