Laboratorio di Informatica A.A. 2006-2007 Sara Poltronieri : [email protected] A.A. 2006-2007 Introduzione a Matlab 1 MATrix LABoratory • MATLAB è nato principalmente come programma destinato alla gestione di matrici. E’ un interprete di comandi in cui l’unità base dei dati è un vettore o una matrice. • I comandi possono essere forniti interattivamente o contenuti in files su disco (M-files). • Comprende un vasto set di funzioni predefinite e numerose librerie (toolbox) per svariate applicazioni che possono essere ampliate. • Ha una buona potenzialità grafica. • Esistono versioni di MATLAB per Unix/Linux, Windows e MAC. I files creati sono portabili da una piattaforma all’altra. A.A. 2006-2007 Introduzione a Matlab 2 COSA SI PUO’ FARE CON MATLAB... (... oltre ad usarlo come calcolatrice ...) ALCUNE POTENZIALITA’ A.A. 2006-2007 Introduzione a Matlab 3 Calcolo matriciale Matlab lavora con le matrici. >> A = magic(3) >> B = [4 5 0; 3 8 3; 4 9 1] >> A*B >> A*B ans = 59 55 51 A.A. 2006-2007 102 118 110 9 22 29 Introduzione a Matlab 4 Soluzione di equazioni >> s = solve('cos(2*x)+sin(x)=1') s = [ 0] [ pi] [ 1/6*pi] [ 5/6*pi] A.A. 2006-2007 Introduzione a Matlab 5 Grafico di una funzione ... >> fplot(inline('2*(sin(x+3)/(x+3))*(4*x^2)'),[-10 10]) A.A. 2006-2007 Introduzione a Matlab 6 ... grafico 3D di una funzione... >> >> >> >> t = 0:pi/50:1 plot3(sin(t),cos(t),t) grid on axis square 35 30 25 20 15 10 5 0 1 0.5 1 0.5 0 0 -0.5 -0.5 -1 A.A. 2006-2007 Introduzione a Matlab -1 7 ... derivata della funzione >> syms x % calcolo simbolico >> f= 2*(sin(x+3)/(x+3))*(4*x^2) >> diff(f) ans = 8*cos(x+3)/(x+3)*x^2-8*sin(x+3)/(x+3)^2*x^2+16*sin(x+3)/(x+3)*x >> pretty(ans) 2 cos(x + 3) x 2 sin(x + 3) x sin(x + 3) x 8 ------------- - 8 ------------- + 16 -----------x + 3 2 x + 3 (x + 3) A.A. 2006-2007 Introduzione a Matlab 8 Grafici 3D >> >> >> >> >> A.A. 2006-2007 [X,Y,Z]= peaks(30) surfc(X,Y,Z) colormap hsv axis([-3 3 -3 3 -10 5]) grid on Introduzione a Matlab 9 Altri esempi 3D A.A. 2006-2007 Introduzione a Matlab 10 Grafici 22% >> >> >> >> x = [1 3 0.5 2.5 2] explode = [0 1 0 0 0] pie3(x,explode) colormap hsv 11% 90 28% 33% 6% 6 120 60 4 150 30 2 180 0 210 330 240 >> theta = 2*pi*rand(1,50); >> rose(theta) 300 270 A.A. 2006-2007 Introduzione a Matlab 11 Istogrammi >> Y = cool(7); >> bar3(Y,'detached') >> title('Detached') A.A. 2006-2007 Introduzione a Matlab 12 Il geoide!! A.A. 2006-2007 Introduzione a Matlab 13 Plot di immagini 2D in 3D >> load earth sphere; h = findobj('Type','surface'); hemisphere = [ones(257,125),... X,... ones(257,125)]; set(h,'CData',flipud(hemisphere),'FaceColor','texturemap') colormap(map) axis equal view([90 0]) set(gca,'CameraViewAngleMode','manual') view([65 30]) A.A. 2006-2007 Introduzione a Matlab 14 OCTAVE – Workshop MATLAB (commerciale, licenza costosa!!) Octave A.A. 2006-2007 Octave Workshop Introduzione a Matlab 15