DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – [email protected] Matteo Ferroni – [email protected] Ver. aggiornata al 24 Agosto 2015 Calendario dei Labs: MATLAB DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 15 Dicembre 2015, 10.30am-12.30pm, @ LM1 MATLAB: Ambienti di sviluppo e primi codici • 12 Gennaio 2016, 10.30am-12.30pm, @ LM1 MATLAB: strutture di controllo, tipi di dato strutturato, e vettori • 19 Gennaio 2016, 10.30am-12.30pm, @ LM1 MATLAB: funzioni ricorsive • 26 Gennaio 2016, 10.30am-12.30pm, @ LM1 MATLAB: funzioni ricorsive, funzioni di ordine superiore, grafici 2D e 3D 2 Calendario dei Labs: MATLAB DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 15 Dicembre 2015, 10.30am-12.30pm, @ LM1 MATLAB: Ambienti di sviluppo e primi codici • 12 Gennaio 2016, 10.30am-12.30pm, @ LM1 MATLAB: strutture di controllo, tipi di dato strutturato, e vettori • 19 Gennaio 2016, 10.30am-12.30pm, @ LM1 MATLAB: funzioni ricorsive • 26 Gennaio 2016, 10.30am-12.30pm, @ LM1 MATLAB: funzioni ricorsive, funzioni di ordine superiore, grafici 2D e 3D 3 Lab 5: Obiettivi DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Introduzione a Matlab/Octave array e matrici inserimento dati costrutti condizionali stampa a video 4 Lab 5: Agenda DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Esercizi Lab5 Warm Up (50’) • Crea matrici Accesso ai dati di un array Scalari Vs Array Sottoarray Qualche cosa un pò più divertente (60’) Tabelline Funzione interne Per casa… (60’) Disegno “fisica”, con problema da risolvere Rilievi altimetrici 5 Alcuni DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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) 6 Lab 5: Prima parte DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Esercizi Lab5 Warm Up (50’) Crea matrici Accesso ai dati di un array Scalari Vs Array Sottoarray Qualche cosa un pò più divertente (60’) Per casa… (60’) 7 Problema: crea matrici DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si crei una matrice di dimensione 3x3 di valori non necessariemente tutti nulli 8 Crea matrici - Soluzione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE matrix = [1 2 3 ; 4 5 6; 7 8 9] E se fosse stata 100 x 100??? matrix = magic (100) 9 Problema: accesso ai dati DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si crei una matrice 4x4 di valori non necessariamente nulli • Si indichi il valore nella posizione (2,2) 10 Accesso ai dati - Soluzione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 11 Problema: Scalari Vs Array DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Dato un vettore di 3 elementi • vet = [1 2 3] • Si calcoli l’elevamento a potenza di ogni elemento (risp: 1 4 9) 12 Scalari Vs Array - Soluzione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE vet = [1 2 3]; vet = .^2 13 Curiosità: cosa succede con il . DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 14 Problema: Sottoarray DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Dato una matrice temp • Si sostituisca la seconda riga con: -1 -2 -3 • E la quarta riga con: -4 -5 -6 15 Sottoarray - Soluzione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 16 Nota sui sottoarray DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Perchè: temp(2:2:4, :)… e non temp(2:4, :)? Perchè temp(2:4, :) sono le righe 2, 3 e 4!!! 17 Lab 5: Agenda DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Esercizi Lab5 Warm Up (50’) Qualche cosa un pò più divertente (60’) Tabelline Funzione interne Per casa… (60’) 18 Problema: Tabelline DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Stampare a video la tabellina della moltiplicazione (da 1 a 10) per un numero inserito dall'utente 19 Tabelline - Soluzione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE vet=[1:10]; c=3; c*vet E le tabelline da 1 a 10? vet=[1:10]; vet2=vet’; vet2*vet 20 Problema: funzioni interne DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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. 21 Funzioni interne - Soluzione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE %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); 22 Lab 5: Agenda DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Esercizi Lab5 Warm Up (50’) Qualche cosa un pò più divertente (60’) Per casa… (60’) Disegno “fisica”, con problema da risolvere Rilievi altimetrici 23 Problema: Disegno “fisica” DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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? 24 Disegno “fisica”- Soluzione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE step=0.01; v=8.9; t=[0:step:100]; y=(100-9.8.*(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); 25 Esercizio: Rilievi altimetrici DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si sviluppi un programma in matlab che acquisisce da tastiera i dati relativi a rilievi altimetrici e stampa a video l’altitudine media di tutti quelli che hanno latitudine compresa tra 10 e 80 e longitudine tra 30 e 60 26 Soluzione (1ma parte): rilievi altimetrici DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE more = input('vuoi inserire valori altimetrici? (s/n)'); ii=1; while more=='s' arch(ii).altitudine = input('altitudine '); arch(ii).longitudine = input('longitudine '); arch(ii).latitudine = input('latitudine '); ii = ii+1; more = input('vuoi inserire altri valori altimetrici? (s/n)'); end 27 Soluzione (2nda parte): rilievi altimetrici DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE jj=1; for ii=1:length(arch) %attenzione: la condizione deve essere scritta sulla stessa linea… if arch(ii).latitudine>=10&&arch(ii).latitudine<=80 && arch(ii).longitudine>=30&&arch(ii).longitudine<=60 elemSelez(jj) = arch(ii).altitudine; jj=jj+1; end end disp(['la media degli elementi selezionati e` ' num2str(mean(elemSelez))]); 28 Fonti per lo studio + Credits DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 https://sites.google.com/site/engpanigati/ 29