function [] = test_validazione(m,data_val,K) 
% ingressi: 
% m: il modello in forma idmodel risultato della identificazione
% data_val: i dati in forma iddata per la validazione
% k: passi di predizione
% restituisce a schermo:
% fit, errore quadratico medio, numero fdt nulle, numero fdt quasi nulle 


%-impostare la TOLL a scelta\default
%- il tempo di campionamento lo recupero dalla struttura dati da_val
Mnpf = m;
Mnpf= setPolyFormat(Mnpf, 'double'); %compatibility
Uf = data_val.u;
yf = data_val.y;
Ts = data_val.Ts;


y_stim=sim(Mnpf,Uf); % generale. sim il mod id con gli u futuri
err_qm=mean((yf-y_stim).^2);

fit = 100*(1 - norm(yf-y_stim)/norm(yf-mean(yf)));

figure(1)
hold on
plot(y_stim,'b')
plot(yf,'r')
hold off

% valuto ora la sparsita' del risultato
TOLL = 0.00001;      % tolleranza per considerare un elemento quasi nullo
non_zer = find(Mnpf.nb);           % coef delle righe non nulle <---- ! 
non_zer_fdt = length(non_zer);     % # fdt non nulle

n_fdt_quasi_nul = 0; % cerco il numero di fdt quasi nulle 
[r_tmp c_tmp] = size(Mnpf.b);

% conto righe nulle E quasi nulle:
for z=1:r_tmp        % scorro le righe
    if max(abs(Mnpf.b(z,:))) <= TOLL % se il coeff max e' piu' piccolo di TOLL=> si considera fdt quasi nulla 
        n_fdt_quasi_nul = n_fdt_quasi_nul + 1;
    end
end
zer = length(Mnpf.nb) - non_zer_fdt;

% per calcolare la percentuale di sparsita' delle fdt
perc_spars1 = (length(Mnpf.nb)-non_zer_fdt)/length(Mnpf.nb)*100; % percentuale sparsità
perc_spars2 = (length(Mnpf.nb)-(length(Mnpf.nb)-n_fdt_quasi_nul))/length(Mnpf.nb)*100; % percentuale sparsità

% stampe a schermo:
display('------------')
display(['errore quadratico medio= ' num2str(err_qm)])
display(['fit: ' num2str(fit)])
display([num2str(zer) ' fdt nulle su ' num2str(length(Mnpf.nb)) ])
display([num2str(n_fdt_quasi_nul) ' fdt con coeff minori di ' num2str(TOLL) ])
display(['sparsit� (el. nulli): ' num2str(perc_spars1) '%' ])
display(['sparsit� (el. quasi nulli): ' num2str(perc_spars2) '%' ])
display('------------')

% predizione con y_pred=predict(model,datia,k)

figure 
compare(data_val,Mnpf,K); %(data, m, k)
title(['predizione di ' num2str(K) ' passi' ])


