DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Matteo Ferroni –

Slides:



Advertisements
Presentazioni simili
Process synchronization
Advertisements

MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Linguaggio MATLAB: costrutti tipici (IF,WHILE…)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2: 25 Marzo 2013 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 24 Ottobre 2011 Sadegh Astaneh – Marco D. Santambrogio –
Process synchronization
Process synchronization
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Uso dei cicli y t =c+ty t-1 +e Un uso dei cicli può essere quello di creare una serie storica per cui y t =c+ty t-1 +e dove poniamo c e t scalari ed e~N(0,1).
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Diagrammi 2D e 3D Funzioni di ordine superiore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Input/output 1 Marco D. Santambrogio – Ver. aggiornata al 2 Dicembre 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Script 1 Marco D. Santambrogio – Ver. aggiornata al 2 Dicembre 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 8 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Esercitazione 1 Marco D. Santambrogio – Ver. aggiornata al 9 Aprile 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Ottobre 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3: 31 Marzo 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4: 10 Aprile 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 7 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2: 27 Marzo 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA Lab 2: 20 Aprile 2015 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 L Aprile 2015 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
INTRODUZIONE A MATLAB LEZIONE 2 Sara Poltronieri.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 L Aprile 2015 Marco D. Santambrogio – Gianluca Durelli -
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA Lab 4: 11 Maggio 2015 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA Lab 3: 27 Aprile 2015 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 28 Ottobre 2014.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5: 14 Aprile 2014 Marco D. Santambrogio – Gianluca Durelli –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 1 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 4 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strutture di controllo Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Matteo Ferroni –
Soluzione e discussione equazione 2°grado con foglio elettronico di polaris office su padlet Asus Eee Le formule da inserire si possono trovare nelle tabelle.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – Ver. aggiornata.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 22 Marzo 2016.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 3 – Info B Marco D. Santambrogio – Matteo Ferroni –
Script Marco D. Santambrogio –
Process synchronization
Process synchronization
Process synchronization
Process synchronization
Process synchronization
Process synchronization
Process synchronization
Transcript della presentazione:

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Matteo Ferroni – Ver. aggiornata al 12 Gennaio 2016

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Calendario dei Labs: MATLAB 15 Dic 2015, B6.27  MATLAB: Ambienti di sviluppo e primi codici 12 Gennaio 2016, B6.27  MATLAB: strutture di controllo, tipi di dato strutturato, e vettori 19 Gennaio 2016, B6.27  MATLAB: funzioni ricorsive 26 Gennaio 2016, B6.27  MATLAB: funzioni ricorsive, funzioni di ordine superiore, grafici 2D e 3D 2

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6: Obiettivi Introduzione a Matlab/Octave Cicli Funzioni 3

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6: Agenda  Warm Up (20’)  Qualche cosa un po' più divertente (40’)  Altri exe… (60’) 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6: Warm up Warm Up (20’)  Inserisci numeri  Temperatura Qualche cosa un po' più divertente (40’) Altri exe… (60’) 5

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: Inserisci numeri Acquisiamo numeri da tastiera finché non viene inserito un numero negativo. In ogni caso non accettiamo più di mille numeri 6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione: Inserisci numeri vector = [ ]; %crea il vettore vuoto for count = 1:1000 %Raccoglierà al max 1000 valori value = input('next number '); if value < 0 break %Se value negativo usciamo dal ciclo else vector(count) = value; end vector %permette di visualizzare il contenuto di vector 7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: Temperatura Scrivere un programma che prende in input la temperatura in gradi Celsius e restituisce in output i gradi Fahrenheit  Formula: Fahrnait = Celsius * 9/

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione: Temperatura (script) temp_c = input('Inserire la temperatura in gradi Celsius: '); temp_f = temp_c * 9/5 + 32; disp(['La temperatura in gradi Fahrenheit è ', num2str(temp_f)]); 9

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione: Temperatura (fun) function [temp_f ] = c2f (temp_c) temp_f = temp_c * 9/5 + 32; 10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6: Un po’ di divertimento Warm Up (20’) Qualche cosa un po' più divertente (40’)  Maggiore  Equazione secondo grado Altri exe… (60’) 11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: Maggiore Scrivere un programma che prenda in input un array e conti tutti i numeri che sono maggiore di un numero n inserito dall’utente 12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione: Maggiore mag = input('Vuoi contare i numeri maggiori di quanto? '); disp('Array (ricorda di inserire i numeri tra parentesi quadre):'); inarray = input(''); counter = 0; for ii=1:length(inarray) if inarray(ii)>mag counter = counter+1; end disp(['I numeri maggiori di ',num2str(mag),' sono ',num2str(counter)]); 13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione: Maggiore mag = input('Vuoi contare i numeri maggiori di quanto? '); disp('Array (ricorda di inserire i numeri tra parentesi quadre):'); inarray = input(''); counter = 0; for ii=1:length(inarray) if inarray(ii)>mag counter = counter+1; end disp(['I numeri maggiori di ',num2str(mag),' sono ',num2str(counter)]); 14 PESSIMO!!!

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione: Maggiore (in due righe) mag = input('Vuoi contare i numeri maggiori di quanto? ’) disp('Array (ricorda di inserire i numeri tra parentesi quadre):’) inarray = input(’’) magV= inarray(inarray>mag); counter = size(magV,2); disp(['I numeri maggiori di ',num2str(mag),' sono ',num2str(counter)]); 15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione: Maggiore (in due righe) mag = input('Vuoi contare i numeri maggiori di quanto? ’) disp('Array (ricorda di inserire i numeri tra parentesi quadre):’) inarray = input(’’) magV= inarray(inarray>mag); counter = size(magV,2); disp(['I numeri maggiori di ',num2str(mag),' sono ',num2str(counter)]); 16 Meglio!!!

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Si può fare meglio? 17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione: Maggiore (in una riga) mag = input('Vuoi contare i numeri maggiori di quanto? ’) disp('Array (ricorda di inserire i numeri tra parentesi quadre):’) inarray = input(’’) magV= sum(inarray>mag); 18 Ora ci siamo!!!

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: Equazione secondo grado Scrivere una funzione per il calcolo dell'equazione di secondo grado: ax^2 + bx + c.  Inseriti a, b e c la funzione deve ritornare il valore di delta, e i valori delle radici reali (se esistono).  In caso che delta sia uguale a 0, x1 ed x2 contengono la stessa soluzione 19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione: Equazione secondo grado function [delta, x1, x2] = eq2g(a,b,c) delta = b^2-4*a*c; if (delta==0) x1=(-b)/(2*a); x2=(-b)/(2*a); else x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); end 20 NOTA: delta, x1 e x2 vengono ritornate al chiamante, indipendentemente da quello che si fa nella funzione!

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6: Altri exe Warm Up (20’) Qualche cosa un po' più divertente (40’) Altri exe… (60’)  Cambio base  Scambio elementi 21

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 22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Cambio base - Soluzione 23 function [ris] = cambioBase(n) % N vettore di 0 e 1 esp=[length(n)-1:-1:0]; basi=2.^esp; ris=sum(n.*basi); Corretta!

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Si può fare meglio? 24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Cambio base - Soluzione 25 function [ris] = cambioBase(n) esp=[length(n)-1:-1:0]; basi=2.^esp; ris=sum(basi(n))

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Cambio base - Soluzione 26 function [ris] = cambioBase(n) esp=[length(n)-1:-1:0]; basi=2.^esp; ris=sum(basi(n)) Errata!!! n fatto da 0 e 1, ma come numeri! Non è un vettore logico!

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Cambio base - Soluzione 27 function [ris] = cambioBase(n) esp=[length(n)-1:-1:0]; basi=2.^esp; ris=sum(basi(n>0)) Meglio!!!

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: Scambio elementi Scrivere un programma che dati due array scambi gli elementi di indice dispari  usare la funzione mod 28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione: Scambio elementi function [inarray1, inarray2] = swapOdd(inarray1, inarray2) for ii=1:min(length(inarray1),length(inarray2)) if (mod(ii,2) == 1) temp=inarray1(ii); inarray1(ii)=inarray2(ii); inarray2(ii) = temp; end 29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Soluzione: Scambio elementi disp('Array1 (ricorda di inserire i numeri tra parentesi quadre):'); inarray1 = input(''); disp('Array2 (ricorda di inserire i numeri tra parentesi quadre):'); inarray2 = input(''); [inarray1, inarray2] = swapOdd(inarray1, inarray2); disp('Ora gli array sono: '); disp(inarray1); disp(inarray2); 30

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 Capitoli 2, 3 e 4 Credits  Emanuele Panigati 31