% lezione del 20 novembre
clear

% carichiamo i dati
% si noti l'uso di LOAD con il file come argomento di funzione
data = load('datimappa.txt');

% creiamo utili vettori ausiliari
xd = data(:,1);
yd = data(:,2);
zd = data(:,3);

% creiamo una serie di 'etichette' (label) con due cifre
labels = num2str( data(:,3), 2);

% visualizzazione 2D dei dati
figure(2)
clf
hold on
plot(xd,yd,'o')
% con il comando TEXT scriviamo le etichette
% sintassi: text( X, Y, STRINGA)
% aggiungiamo una piccola quantita' alle xd, yd
% per non sovrapporre la scritta al punto del dato
text(xd+0.25,yd+1,labels)
% poiche' xd, yd e labels contengono molte righe,
% text viene eseguito in automatico 'riga per riga',
% come se ci fosse un ciclo di for:
% for i = 1:length(xd)
%     text( xd(i)+0.25, yd(i)+1, labels(i) )
% end

% cerchiamo opportuni limiti
xmin = min(xd);
xmax = max(xd);
ymin = min(yd);
ymax = max(yd);

xL = 10*floor(xmin/10);
xH = 10*ceil(xmax/10);
yL = 10*floor(ymin/10);
yH = 10*ceil(ymax/10);

%prepariamo i dati per la visualizzazione 3D
x = xL:1:xH ;
y = yL:1:yH ;
[XI,YI] = meshgrid(x,y);

% interpolazione
ZI = griddata( xd, yd, zd, XI, YI, 'v4');
% v4 e' l'opzione per l'interpolazione spline biarmonica

% curve di livello
figure(3)
contour(XI, YI, ZI)

% possiamo anche imporre il numero di curve di livello
figure(4)
contour(XI, YI, ZI, 10)

% determiniamo in automatico gli estremi di zd
zmin = min(zd);
zmax = max(zd);

v = zmin-5 : 5 : zmax+5;

figure(5)
[c,h] = contour(XI, YI, ZI, v);
% c contiene le curve di livello
% h contiene gli handle per le curve di livello

% mettiamo etichette alle curve di livello: CLABEL
clabel(c,h);

% barra colori
figure(6)
contourf(XI, YI, ZI, v), colorbar;
hold on
plot(xd,yd,'k*')
text(xd+1,yd,labels)
hold off

% pseudocolori PCOLOR
figure(7)
pcolor(XI,YI,ZI), shading flat
hold on
% aggiungiamo linee di livello nere
contour(XI, YI, ZI, v, 'k')
hold off


% 3D

% con mesh
figure
mesh(XI,YI,ZI), view(-38,30)

% altro pdv
mesh(XI,YI,ZI), view(0,90)

% come cambiare la mappa dei colori
surf(XI,YI,ZI), colormap('hot'), colorbar

% combinato con curve di livello nel piano: SURFC
figure
surfc(XI,YI,ZI)

% con risoluzione maggiore
x = 420:0.25:470 ;
y = 70:0.25:120 ;
[XI,YI] = meshgrid(x,y);
ZI = griddata( xd, yd, zd, XI, YI, 'v4');

% visualizzazione piu' "lucida"
figure
surf(XI,YI,ZI), shading interp, light, axis off
hold on
% linee di livello 3D: CONTOUR3
contour3(XI, YI, ZI, v, 'k')
hold off

