clear all;
clc;

% Creazione di un array
a = [1 2 3 4 6 4]

% Si possono specificare i decimali
a = [1 2 3 4.0 6 4]

% Per default, le variabili sono di tipo double, anche se vengono
% visualizzati come interi (per praticita')

% Infatti:
a = [1 2 3 4.01 6 4]

% Generalmente, le operazioni vengono applicate a tutti gli elementi delle
% matrici; aggiunge 2 a tutti gli elementi di a e lo mette in b
b = a + 2

% Elevamento a potenza dei singoli elementi del vettore
c = b.^2;

% Rappresentazione grafica dei valori di un vettore 
plot(b)
% Il grafico e' personalizzabile: molte opzioni sono preimpostate, ma
% possono essere modificate
grid on
axis([0 7 0 10])
plot(b,'r*')
plot(b,'g-o')

% Ci sono diversi tipi di grafico
bar(b)
xlabel('Sample #')
ylabel('Pounds')

% Si possono specificare ascisse ed ordinate
plot(b, c, 'o');

% Per creare una matrice, si separano le righe usando ';' 
A = [1 2 0; 2 5 -1]

% La trasposta di una matrice si indica con "'"
B = A'

% Il prodotto tra matrici e' indicato da '*'
C = A * B
% NB: le matrici devono avere dimensioni adatte;
% l'istruzione [1 2 3] * [2 3 4] causa un errore

% Le operazioni precedute da '.' si intendono applicate elemento per
% elemento
D = [1 2 3; 1 2 3].*[1 1 1; 2 2 2]

% L'inversa di una matrice si calcola con la funzione inv() (o pinv())
X = inv(C)
% il prodotto di una matrice per la sua inversa e' la matrice identita' 
I = inv(C) * C

%% Funzioni utili
% Elenco delle variabili inizializzate con loro dimensione
whos

% Cancella tutte le variabili inizializzate
clear all

% Creazione di matrici particolari
ones(3,2) % tutti uno
zeros(3,2) % tutti zero

% Ordina gli elementi 
sort([2 3 1 5 4])

% Calcolo di media 
mean([2 3 1 5 4])
% e deviazione standard
std([2 3 1 5 4])
