110 likes | 356 Views
Esercitazione MATLAB (9/5). ilenia.tinnirello@tti.unipa.it. Sommario. Generalita’ Operazioni fondamentali Operazioni con le matrici Script e Funzioni Esempi. Generalita’ (1). Caratteristiche del linguaggio: Struttura fondamentale: matrice Controllo di flusso Funzioni
E N D
Esercitazione MATLAB (9/5) ilenia.tinnirello@tti.unipa.it
Sommario • Generalita’ • Operazioni fondamentali • Operazioni con le matrici • Script e Funzioni • Esempi
Generalita’ (1) • Caratteristiche del linguaggio: • Struttura fondamentale: matrice • Controllo di flusso • Funzioni • Input/Output • Supporto programmazione a oggetti
Generalita’ (2) • Workspace • Inport/Export Dati • Funzioni di Grafica avanzate • Grafici 2/3 dim, Animazioni • Librerie • Collezioni di algortimi gia’ sviluppati • API • Interfacci altri linguaggi (es. C/C++)
Operazioni Fondamentali Calcolatrice: 3+sqrt(5)+2^3+exp(4) Variabili: x = 3; y = sqrt(y) Matrici. A=[1 2 3; 4 5 6]; A(2,3)=6; A(1,:)=[1 2 3] Vettori: A(1,:); x = -2:0.05:5; s=4*sin(2*pi*x); Grafici: plot(x, s); plot(x, s, ‘o’); stem(s); Complessi: s=exp(2*pi*x*i); plot(x, real(s), x, imag(s)) Workspase: who, whos Riproduzione: t=0:1/4000:2; s=cos(2*pi*501*t) + cos(2*pi*409*t); plot(t(1:200), s(1:200)); sound(t,s)
Operazioni con le matrici Trasposizione: A’; Inversa: inv(A); Somma: A+B; A+2; Prodotto 1: A*B (righe per colonne); A^2 = A*A; Prodotto 2: A.*B (elemento per elemento); Rapporto: A/B = A*inv(B); Determinante: det(A); Autovalori: eig(A); Polinomio Caratteristico: poly(A); Dimensioni: size(A); …
Costruzione/Visualizzazione di Matrici • M=[ 1 2 3; 4 5 6; 7 8 9]; M =[M; 10 11 12] • A=zeros[10]; B=ones[10]; C=eye[10]; • A(4:7, 4:7) = ones(4); • R1=rand(100); R2=randn(100); • Metodo divertente di visualizzazione: imagesc(X) • - Trasforma la matrice in una immagine • Associa al valore minimo il nero; al valore massimo il bianco; ai valori intermedi dei colori specificati da colormap (ex. colormap(hot), colormap(pink)..)
Esercizio 1 • In che cosa differiscono le funzioni rand e randn? • - Visulizzate le matrici R1 ed R2 con la funzione imagesc(). • (figure(1); colormap(hot); imagesc(R1); figure(2); colormap(hot); imagesc(R2);) • Graficate due vettori di 100 elementi ottenuto con rand e randn • b) Visualizzate con imagesc l’inversa di R1. Perche’ compaiono regolarita’? • c) Leggete adesso con help la documentazione di rand e randn. Generate un vettore con distribuzine normale, media 1 e varianza 4.
Files .m • Si possono usare per creare ‘script’ o funzioni. • Script: Insieme di istruzioni in successione da caricare al posto di inserirle ad una ad una nella linea di comando. • Funzione: Come nei linguaggi procedurali, si passano parametri e si restituiscono valori. Usate per estendere le funzionalita’ di base. • Es. function[a, b] = f(c, d) • la funzione f opera su c e d e restituisce a e b. Le altre variabili dentro il corpo di f sono locali.
Istruzioni di Controllo Come nei linguaggi procedurali: FOR, IF, ELSE, WHILE, SWITCH, BREAK, END Ogni blocco deve concludersi con un END Es: for i=1:1:10 for j=1:1:10 A(i,j) = i+j; end end N.B. Non usate FOR quando non serve! Es. for i=1:1:10 v(i) = i; end -> v=1:1:10;
Esercizio 2 • Scrivete una funzione che normalizza una matrice rispetto all’elemento di valore assoluto massimo. La matrice in ingresso e’ A, la matrice restituita e’ N. • function[N]=normalizza(A) • b) Scrivete una funzione che calcoli la varianza di un vettore: • function[var]=varianza(vettore)