DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo – Ver. aggiornata al 9 Agosto 2013
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4: Obiettivi Introduzione a Matlab/Octave array e matrici inserimento dati costrutti condizionali stampa a video 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Matlab Cosè Matlab: strumento (e corrispondente linguaggio) per elaborazioni di calcolo numerico NB: sta per MATrix LABoratory »centrato sulle matrici (ma include generiche funzionalità matematiche) usato nei successivi corsi di calcolo numerico MATLAB è uno strumento commerciale distribuito, su licenza NON gratuita, da The MathWorks Inc Student edition disponibile quando si è al Politecnico ( Esiste un altro strumento di nome Octave identico nella concezione, molto simile per gli aspetti operativi disponibile gratuitamente, vedi 3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Screenshot interfaccia MATLAB Contenuto della directory corrente Contenuto della directory corrente Storia dei comandi Finestra dei comandi Lancia i tool di MATLAB ed altro… Mostra le variabili nel workspace 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Screenshot dellinterfaccia OCTAVE Linea di comando dellinterprete 5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE GUI di Octave 6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4: Agenda Esercizi Lab4 Warm Up (50) Crea matrici Accesso ai dati di un array Scalari Vs Array Sottoarray Qualche cosa un pò più divertente (85) Tabelline Funzione interne Altri exe… (105) Stampa a video Disegno fisica, con problema da risolvere Cambio base 7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEAlcuni HELP comando: mostra a video il manuale di utilizzo di uno specifico comando. X': traspone la vettore (da vettore riga a vettore colonna e viceversa) LENGTH(X): ritorna la lunghezza di un vettore SUM(X): calcola la somma di tutti gli elementi di un vettore MEAN(X): calcola il valore media dei valore contenuti in un vettore MEDIAN(X): ritorna il mediano tra i valore contenuti in un vettore ABS(X): valore assoluto EVAL(stringa): esegue il contenuto della stringa come fossero comandi di uno script (potete utilizzarlo nell'esercizio 6 per ricevere anche la funzione che volete integrale) 8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4: Prima parte Esercizi Lab4 Warm Up (50) Crea matrici Accesso ai dati di un array Scalari Vs Array Sottoarray Qualche cosa un pò più divertente (85) Altri exe… (105) 9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: crea matrici Problema: crea matrici Si crei una matrice di dimensione 3x3 di valori non necessariemente tutti nulli 10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Crea matrici - Soluzione matrix = [1 2 3 ; 4 5 6; 7 8 9] 11 matrix = magic (100)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: accesso ai dati Si crei una matrice 4x4 di valori non necessariamente nulli Si indichi il valore nella posizione (2,2) 12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Accesso ai dati - Soluzione 13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONECuriosità… Si può accedere a un array a più dimensioni come se ne avesse una sola Usando un unico indice si segue lordine della memorizzazione Da NON usare nella programmazione ma aiuta a capire certi costrutti
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array: memorizzazione Matrici memorizzate per colonna: colonna 1, poi colonna 2, 3, etc. ogni colonna memorizzata per indici di riga crescenti Array memorizzati in forma lineare nella RAM variando più velocemente i primi indici più lentamente quelli successivi NB: opposto a quanto avviene in C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Operazioni con scalari e array Operazioni per gli scalari: + - * / ^ Operazioni per gli array Array operation: eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne); si indica aggiungendo un punto prima delloperatore aritmetico a= b= a.* b= Matrix operation: segue le regole dellalgebra lineare (esempio: prodotto righe per colonne) a= b= a*b = Elevamento a potenza 16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: Scalari Vs Array Problema: Scalari Vs Array Dato un vettore di 3 elementi vet = [1 2 3] Si calcoli lelevamento a potenza di ogni elemento (risp: 1 4 9) 17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Scalari Vs Array - Soluzione vet = [1 2 3]; vet =.^2 18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Curiosità: cosa succede con il. 19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: Sottoarray Problema: Sottoarray Dato una matrice temp Si sostituisca la seconda riga con: E la quarta riga con:
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoarray - Soluzione 21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Nota sui sottoarray 22 Perchè: temp(2:2:4, :)… e non temp(2:4, :)? Perchè temp(2:4, :) sono le righe 2, 3 e 4!!!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Altri esempi… m = >> m([1 4], [2 3]) ans = >> m(1:2:5, 1:end) ans = >>>> m(1:2:5, :) ans = >> m(2:2:4, :) = [ ; ]; >> m m = >> tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3 tutti gli elementi delle righe 1, 3 e 5 notazione : abbreviata per 1:end, cioè tutti i valori di quellindice uso della notazione dei sottoarray per individuare elementi oggetto di assegnamento 23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4: Agenda Esercizi Lab4 Warm Up (50) Qualche cosa un pò più divertente (85) Tabelline Funzione interne Altri exe… (105) 24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: Tabelline Stampare a video la tabellina della moltiplicazione (da 1 a 10) per un numero inserito dall'utente 25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tabelline - Soluzione vet=[1:10]; c=3; c*vet E le tabelline da 1 a 10? vet=[1:10]; vet2=vet; vet2*vet 26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: funzioni interne Ricevere un vettore è calcolare la somma, la media e il mediano usando per media e mediano sia i comandi integrati (MEAN e MEDIAN) che non. 27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni interne - Soluzione %Senza MEAN e MEDIAN v=input('Vector '); disp(sum(v)); disp(sum(v)/length(v)); diff=abs(v-(sum(v)/length(v))); [w, p]=min(diff); v(p); 28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4: Terza Parte Esercizi Lab4 Warm Up (50) Qualche cosa un pò più divertente (85) Altri exe… (105) Stampa a video Disegno fisica, con problema da risolvere Cambio base 29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: Stampa a video Disegnare a video la seguente funzione definita a tratti: y=x (se x>=0 and x<=5) y=2*x (se x>5 and x<=10) y=-x (x>10 and x<=20) 30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stampa a video - Soluzione step=0.01; x=[0:step:5]; y=x; plot(x,y); hold on; x=[5:step:10]; y=2.*x; plot(x,y); x=[10:step:20]; y=-1.*x; plot(x,y); 31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: Disegno fisica Disegnare la gittata di un corpo che cade da 100m di altezza quando lanciato orizzontalmente con un velocità a vostro piacimento Quanto tempo impiega a cadere a terra? Quanto si sposta in orizzontale prima di cadere a terra? 32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Disegno fisica- Soluzione step=0.01; v=8.9; t=[0:step:100]; y=( *(t.^2)); x=(v.*t); y1=abs(y); [w, p]=min(y1); disp('Time:'); disp(t(p)); disp('Distance:'); disp(x(p)); plot(x,y); 33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: Cambio base Ricevere un vettore che rappresenti le singole cifre di un numero in base 2 stampare a video il valore in base 10 34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Cambio base - Soluzione 35 v=input('Vector: '); esp=[length(v)-1:-1:0]; basi=2.^esp; disp(sum(v.*basi));
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Fonti per lo studio + Credits Fonti per lo studio Introduzione alla programmazione in MATLAB, A.Campi, E.Di Nitto, D.Loiacono, A.Morzenti, P.Spoletini, Ed.Esculapio Capitolo 1 Credits Prof. A. Morzenti Emanuele Panigati 36