DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Matteo Ferroni – Ver. aggiornata al 24 Agosto 2015
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calendario dei Labs: MATLAB 15 Dicembre 2015, LM1 MATLAB: Ambienti di sviluppo e primi codici 12 Gennaio 2016, LM1 MATLAB: strutture di controllo, tipi di dato strutturato, e vettori 19 Gennaio 2016, LM1 MATLAB: funzioni ricorsive 26 Gennaio 2016, LM1 MATLAB: funzioni ricorsive, funzioni di ordine superiore, grafici 2D e 3D 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calendario dei Labs: MATLAB 15 Dicembre 2015, LM1 MATLAB: Ambienti di sviluppo e primi codici 12 Gennaio 2016, LM1 MATLAB: strutture di controllo, tipi di dato strutturato, e vettori 19 Gennaio 2016, LM1 MATLAB: funzioni ricorsive 26 Gennaio 2016, LM1 MATLAB: funzioni ricorsive, funzioni di ordine superiore, grafici 2D e 3D 3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5: Obiettivi Introduzione a Matlab/Octave array e matrici inserimento dati costrutti condizionali stampa a video 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5: Agenda 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
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) 6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5: Prima parte 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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: crea matrici Problema: crea matrici Si crei una matrice di dimensione 3x3 di valori non necessariemente tutti nulli 8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Crea matrici - Soluzione matrix = [1 2 3 ; 4 5 6; 7 8 9] 9 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) 10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Accesso ai dati - Soluzione 11
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 l’elevamento a potenza di ogni elemento (risp: 1 4 9) 12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Scalari Vs Array - Soluzione vet = [1 2 3]; vet =.^2 13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Curiosità: cosa succede con il. 14
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 16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Nota sui sottoarray 17 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 Lab 5: Agenda Esercizi Lab5 Warm Up (50’) Qualche cosa un pò più divertente (60’) Tabelline Funzione interne Per casa… (60’) 18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: Tabelline Stampare a video la tabellina della moltiplicazione (da 1 a 10) per un numero inserito dall'utente 19
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 20
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. 21
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); 22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5: Agenda Esercizi Lab5 Warm Up (50’) Qualche cosa un pò più divertente (60’) Per casa… (60’) Disegno “fisica”, con problema da risolvere Rilievi altimetrici 23
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? 24
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); 25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Esercizio: Rilievi altimetrici 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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione (1ma parte) : rilievi altimetrici 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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione (2nda parte) : rilievi altimetrici jj=1; for ii=1:length(arch) %attenzione: la condizione deve essere scritta sulla stessa linea… if arch(ii).latitudine>=10&&arch(ii).latitudine =30&&arch(ii).longitudine<=60 elemSelez(jj) = arch(ii).altitudine; jj=jj+1; end disp(['la media degli elementi selezionati e` ' num2str(mean(elemSelez))]); 28
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 29