% Importazione dei dati dentro MATLAB

% L'opzione ReadRowNames serve per definire la prima colonna con i nomi
% delle righe
% L'opzione Sheet consente di specificare il nome del foglio da cui leggere
% i dati
% L'opzione range consente di stabilire quale zona del foglio specificato
% leggere
% L'ozione ReadRowNames consente di stabilire se la prima colonna contiene
% i nomi delle righe del dataset (true se questo è vero)
% L'output della lettura viene inserito in un oggetto di tipo table
% denominato X (ovviamente al posto di X potevo inserire qualsiasi altro
% nome)
X = readtable("HTss.xlsx", 'Sheet','dati','range','B1:E26','ReadRowNames',true);

% L'istruzione disp(X) mostra il contenuto di X
disp(X)

%
% Esempi di estrazione dei dati

% Esempio di estrazione della riga 2 di X
disp(X(2,:))

% Esempio di estrazione della colonna 3
disp(X(:,3))

% Esempio di estrazione del prime 5 righe e delle colonne 2 e 3 di X
disp(X(1:5,2:3))

% Esempio di estrazione delle righe 4 e 7, 8, 9 e 10
disp(X([4 7:10],:))

% Esempio di estrazione delle colonne 1 e 3 
disp(X(:,[1 3]))

% In alternativa le righe e le colonne possono essere estratte facendo
% riferimento rispettivamente al nome di riga e al nome di colonna

% La proprietà Properties  consente di capire quali tutte le proprietà
% dell'oggetto table
disp(X.Properties)

% Ad esempio per estrarre i nomi delle variabili
disp(X.Properties.VariableNames)

% Ad esempio per estrarre i nomi delle righe
disp(X.Properties.RowNames)

% Esempio di estrazione della seconda variabile facendo riferimento al suo
% nome. La seconda variabile si chiama POTENZA
disp(X.POTENZA)

% Esempio di estrazione delle righe 3,4,5 e 6 della seconda variabile facendo riferimento al suo
% nome. La seconda variabile si chiama POTENZA
disp(X.POTENZA(3:6))

% Esempio di estrazione delle righe 9 e 11 facendo riferimento al loro nome
% nome. La seconda variabile si chiama POTENZA
disp(X({'Samsung UP30' 'Sharp AT1000'},:))

% Esempio di assegnazione di una parte della matrice X ad una nuova
% variabile denominata pippo. Ad esempio, assegnare le prime 3 righe e le
% prime due colonne ad una nuova variabile denominata pippo.
pippo=X(1:3,1:2)

% Si noti la differenza tra 
disp(pippo(:,:))
% e 
disp(pippo{:,:})
% disp(pippo(:,:)) mostra tutto il contenuto di pippo (anche i nomi delle
% righe e delle variabili in formato table). Al contratio pippo{:,:} estrae il contenuto di
% pippo in formato double (ossia il puro e semplice contenuto di pippo,
% ossia i numeri su cui io posso fare le operazioni).

%
% Standardizzazione dei dati

% La funzione zscore consente di standardizzare i dati
% Dato che la funzione zscore ha come input non un ogetto in formato table
% ma una matrice numerica devo chiamare X con le parentesi graffe (per estrarre il
% contenuto di X)
% Z è una matrice che ha la stessa dimensione di X (ossia 25x3) che
% contiene le variabili in forma standardizzata.
Z=zscore(X{:,:});
% Le colonne di Z hanno media pari a 0 (ovviamente lo zero del computer
% ossia un numero dell'oridine di grandezza di 1e-15). 
disp(mean(Z))
% Le colonne di Z hanno varianza pari ad 1
disp(var(Z))

%
% Creazione del grafico a barre degli scostamenti standardizzati

% La funzione bar crea il grafico a barre verticale
bar(Z)
% Una volta creato un grafico, la funzione MATLAB gca (get current axes) consente di avere un handle alle diverse proprietà del grafico  
% Ad esempio la funzione
% get(gca,'xticklabel') consente di recuperare le etichette delle barre
% sull'asse delle ascisse

% Vado ad inserire i nomi della table X nelle etichette sull'asse delle
% ascisse
% L'istruzione che segue specifica che le etichette delle barre devono
% essere i nomi delle righe della table X
% La proprietà 'xtick',1:size(X,1) consente di specificare che ci devono essere
% un numero di etichette esattamente uguali al numero di righe del dataset
% originario X (in questo caso 25).
% La proprietà 'xticklabel' consente di specificare quali devono
% essere queste 25 etichette. In questo caso le 25 etichette corrispondono
% alle righe della table originaria
set(gca,'xtick',1:size(X,1),'xticklabel',X.Properties.RowNames,'XTickLabelRotation',60)  
% title aggiunge il titolo al grafico
title('Scostamenti standardizzati')




