%% Importazione dati da file Excel
% Importazione dei dati dentro MATLAB (tramite la funzione readtable) 'Sheet','dati' specifica che occorre leggere dal foglio denominato dati 'range','B1:E26' specifica che occorre leggere la zona B1:E26 'ReadVariableNames',true, specifica che la prima riga della zona B1:E26 contiene i nomi delle variabili (l'opzione predefinita è true di conseguenza questa istruzione non era nencessaria) 'ReadRowNames',true, specifica che la prima colonna contiene i nomi delle righe 'Format','auto'

X = readtable('HTss.xlsx', 'Sheet','dati','range','B1:E26',...
    'ReadVariableNames',true,'ReadRowNames',true,'Format','auto');
% Per maggiori dettagli su readtable consultare l'help della funzione
% nell'help locale oppure all'indirizzo
% https://www.mathworks.com/help/matlab/ref/readtable.html

%
%% Standardizzazione
% Standardizzaione dei dati Definisco la matrice Xd come il contenuto della table X in formato double (ossia contentente solo i numeri dentro X e senza i nomi di riga e colonne)

Xd=X{:,:};
% alternativamente si poteva utilizzare l'istruzione 
% Xd= table2array(X);

% Standardizzazione tramite media e sigma utilizzando la funzione zscore
% La funzione per standardizzare i dati si chiama zscore
Xdst=zscore(Xd);
disp('Matrice degli scostamentis standardizzati')
disp(Xdst)


% La media di ogni colonna della matrice Xdst è zero
% La varianza di ogni colonna della matrice Xdst è 1
% I numeri all'interno della matrice Xdst sono puri numeri (e di
% conseguenza sono direttamente confontabili)

% Verifico che le colonne della matrice Xdst abbiano media zero.
% Ovviamente la media non sarà esattamente 0 ma un numero piccolissimo
% dell'ordine di grandezza di 10^-15 (ossia 1.0e-15 utilizzando la
% notazione ingegneristica)
disp('Le colonne della matrice degli scostamenti standardizzati hanno media zero')
disp(mean(Xdst))

% Verifico che le colonne della matrice Xdst abbiano varianza 1
disp('Le colonne della matrice degli scostamenti standardizzati hanno varianza uno')
disp(var(Xdst))

%
%% Rappresentazione grafica degli scostamenti standardizzati
% Si utilizza la funzione bar

bar(categorical(X.Properties.RowNames),Xdst,'DisplayName','Xdst')

% L'ultima operazione consiste nel trasformare in table la matrice Xdst.
% aggiungendo i nomi delle righe e delle colonne
Xdsttable=array2table(Xdst,'RowNames',X.Properties.RowNames,'VariableNames',X.Properties.VariableNames);
disp(Xdsttable)