Introduzione a Matlab

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Introduzione a Matlab"

Transcript

1 Slide 1 Matlab è: Abbreviazione di MATrix LABoratory Ambiente di sviluppo per il calcolo numerico (non indicato per il calcolo simbolico) Linguaggio di programmazione interpretato 1 Matlab (abbreviazione di Matrix Laboratory) è un ambiente per il calcolo numerico e l analisi statistica che compre anche l'omonimo linguaggio di programmazione. (Wikipedia). Matlab si è dimostrato particolarmente adatto per il calcolo numerico in particolare su matrici. In poco tempo si possono definire matrici, anche composte da numeri complessi, e sono disponibili innumerevoli operatori e funzioni che permettono di lavorare sulle matrici in modo particolarmente efficiente. Esistono numerosissime estensioni (Toolbox) fra cui una anche per il calcolo simbolico (variabili al posto di numeri), ma questo non è certo il punto di forza di Matlab. Matlab è anche un linguaggio di programmazione (in origine) interpretato, esiste tuttavia anche un compilatore Matlab (la cui licenza è piuttosto onerosa).

2 Slide 2 Matlab è inoltre: Prodotto proprietario della MathWorks a partire dal 1984 Esistono almeno 2 cloni (quasi equivalenti) GNU Octave (ottima compatibilità, non completo) Scilab (scarsa compatibilità, abbastanza ricco) 2 Matlab è stato creato in Fortan alla fine degli anni '70 all Università del New Mexico, Nel 1984 è stato riscritto in C da una nuova società, The MathWorks, che da allora ne cura lo sviluppo e ne ve le licenze. Esistono numerosi cloni, cioè programmi con funzionalità del tutto simili. Il vantaggio innegabile della maggior parte di questi è che sono gratuiti (in genere open-source con licenza GPL o simile). I cloni principali sono 2: GNU Octave (Noto anche solo come Octave) I comandi di base sono perfettamente compatibili con Matlab, molti programmi funzionano indifferentemente su entrambe le piattaforme. È consigliato per questo corso. Tuttavia è carente per le applicazioni più avanzate, in particolare la grafica. Scilab è molto più completo di Octave, su aspetti specifici (mex file), alcuni sviluppatori lo ritengono addirittura superiore a Matlab, ma è scarsamente compatibile; esiste un traduttore da Matlab a Scilab.

3 Slide 3 Altre caratteristiche di Matlab Manipolazione di matrici Elaborazione di algoritmi Visualizzazione di funzioni e di dati numerici Creazione di interfacce grafiche Creazione di report Documentazione (in inglese) k/help/pdf_doc/matlab/getstart.pdf 3 La caratteristica fondamentale di Matlab negli anni è rimasta sempre il calcolo matriciale. Il nucleo fondamentale consiste solo in un interfaccia da terminale per il calcolo matriciale e la produzione di grafici, ma in modo particolarmente efficiente e facile da usare. Negli anni ci sono state numerosissime estensioni, anche se non tutte hanno riscontrato lo stesso favore da parte degli utilizzatori. Matlab è dotato di un linguaggio general purpose, si situa al ventunesimo posto nella classifica della popolarità dei linguaggi di programmazione ( ottobre 2011). Una delle estensioni permette la creazione di interfacce grafiche interattive (GUI) Un altro punto di forza è la documentazione molto ricca, supportata anche da una comunità di utilizzatori.

4 Slide 4 Interfaccia utente di Matlab Lista variabili Storia comandi Finestra comandi Command Window Current directory Browser 4 Matlab da qualche anno offre un ambiente molto più ricco di una semplice shell. In sostanza la shell è stata sostituita dalla command window, in questa finestra si immettono i comandi e si vedono i risultati (non grafici). Attorno alla command window ci sono alcune utilissime sottofinestre fra cui la lista delle variabili definite, la storia dei comandi etc. Octave al contrario è rimasto a un interfaccia più spartana. Esistono numerose interfacce grafiche che possono essere utilizzate con Octave, ma in genere sono di livello inferiore

5 Slide 5 Primi passi con Matlab help / doc prima di numerose pagine di aiuto demo avvia numerose dimostrazioni introduttive who / whos lista delle variabili utilizzate quit esce da Matlab Primo programma Matlab disp('hello world') % questo è un commento s = 'hello world'; % il ; finale sopprime l'eco 5 La documentazione in linea si ottiene mediante il comando help. Da solo questo comando genera la lista di tutti i toolbox principali, se invece viene seguito dal nome di una funzione viene generata una breve descrizione della funzione il comando doc apre il manuale che solitamente riporta descrizioni più dettagliate. Spesso come primo programma in un qualsiasi linguaggio di programmazione si usa presentare il più piccolo programma che visualizza la scringa hello world, in Matlab/Octave questo programma è: disp( hello world ) Lo stesso programma si potrebbe scrivere in forma più breve così: hello world tuttavia questa forma avrebbe prodotto anche altri messaggi indesiderati. Lo stesso seguito da un puntoevirgola non avrebbe prodotto nessuna stringa. hello world ; In Matlab tutto quello che segue il simbolo percento (%) viene considerato un commento. I commenti vengono ignorati da Matlab/Octave ma servono al programmatore per documentazione.

6 Slide 6 Variabili Una variabile è una locazione di memoria a cui viene assegnato un valore. A questa locazione viene associato un nome key-sensitive a = 5, b = 3, A = a * b, A ~= a ans è una variabile particolare, contiene il risultato dell ultima operazione compiuta = operatore di assegnazione == test di ugualianza ~= test di disegualianza 6 Una variabile è una locazione di memoria, cioè una porzione di memoria di dimensione prestabilita (di default 8 byte) a cui è possibile assegnare un valore. Ad ogni variabile viene assegnato un nome che permette di accedere a quella determinata locazione. I nomi delle variabili Matlab/Octave devono iniziare con una lettera (maiuscola o minuscola) e possono contenere lettere numeri e il carattere underscore (_) fino a un massimo di 32 caratteri (dipe dalla versione di Matlab), la parte eccedente viene ignorata da Matlab/Octave. I nomi delle variabili sono key-sensitive (o case-sensitive), cioè si distinge fra maiuscola e minuscola. L'operatore che permette di assegnare un valore a una variabile è l'uguale (=), questo operatore esige che alla sua sinistra ci sia un identificatore di variabile valido, sarebbe del tutto sbagliata un'espressione come questa: a + 1 = 5 dato che Matlab/Octave non risolve equazioni mediante questa sintassi. A destra dell uguale ci deve essere un'espressione valutabile (cioè tutti gli elementi devono avere un valore). L'operatore di assegnazione (=) non deve essere confuso con il test di uguaglianza (==) che paragona due espressioni (o due variabili come caso particolare) e restituisce i valori true o false. ~= è il test di diseguaglianza.

7 Slide 7 Espressioni Formule matematiche composte da variabili, costanti numeriche e operatori matematici etc. Alcuni operatori matematici: + - * / < <= > >= ~= == ~ ^ % elevamento a potenza && % AND % OR Costanti numeriche: 4.5, 0.23e-5, pi (== ), i ==sqrt(-1) 7 Gli operatori matematici in genere sono del tutto intuitivi, tranne quelli già visti e l elevamento a potenza (^) ad esempio 2^3 == 8, l operatore logico and (&&), l operatore or (, or non esclusivo, in italiano corrisponde alla dicitura e/o) e l operatore not (~), ad esempio la formula di De Morgan si scrive come: ~(a && b) == ~a ~b. Esistono alcune costanti predefinite: pi è il pi greco (con molte cifre significative) e è il numero di nepero i,j sono la radice quadrata di -1 (unità immaginaria)

8 Slide 8 Vettori e matrici Le variabili possono essere vettori: A = [4, 13] % vettore riga di 2 elementi z = [-27; -2; 4; 11; 43] % vettore colonna, 5 elem. X = [ ] % vettore riga di 6 elementi Y = [0:5] % vettore riga di 6 elementi == X Variabili di tipo matrice: B = [11, 12; 21, 22] 8 I vettori non sono altro che un tipo particolare di matrice (con una sola riga o una sola colonna) I valori di una matrice vengono dichiarati racchiudoli tra parentesi quadre [ ], gli elementi separati da spazio o virgola stanno nella stessa riga dell elemento precedente e nella colonna successiva, ad esempio: [1 2] == [1,2] Si consiglia ai principianti di usare sempre la virgola. Gli elementi separati da punto e virgola o da caporiga vengono messi nella riga successiva a quella dell elemento precedente, ad esempio: [1; 2] == [1 2] Le matrici possono essere definite utilizzando anche variabili (scalari, vettori o matrici) a patto che siano già state definite e che le dimensioni (numero di righe e di colonne) siano sempre compatibili. Esempio: C = [3 5; 1 7] D = [C [1 2; 3 4]; C C]

9 Slide 9 Operatore doppio punto : 0:5 == [0, 1, 2, 3, 4, 5] 0:5 == [0:5] 0:0.1:1 == [ ] [0:10] == [0:1:10] [5:0] % Empty matrix: 1-by-0 5:-1:2 == [5, 4, 3, 2] 9 L operatore doppio punto serve per definire un intervallo di valori consecutivi con differenza 1 fra due elementi consecutivi a meno che non sia specificato un passo diverso con la notazione: valore_minimo:passo:valore_massimo Il passo può essere anche negativo Se si usa l operatore doppio punto non è obbligatorio racchiudere l espressione fra parentesi quadre, tuttavia è possibile farlo ugualmente.

10 Slide 10 Indicizzazione di vettori Estrazione dell'elemento i-esimo di un vettore (indici da 1 a n) X(4) Indicizzazione di matrici Viene fornito sempre prima l'indice di riga e poi quello di colonna: B(1,2) % prima riga e seconda colonna B(:,1) % estrae tutta la prima colonna di B B(1:3,:) % estrae le prime tre righe di B 10 Per estrarre un elemento di una matrice serve un metodo di indicizzazione. In Matlab si usano le parentesi tonde. All interno delle parentesi va indicato prima il numero di riga e poi quello della colonna separati da una virgola. Gli indici possono anche essere un vettore di interi, ad esempio 1:3 significa dalla prima alla terza riga se si trova prima della virgola e dalla prima alla terza colonna se si trova dopo la virgola. Due punti da soli significa tutte le righe oppure tutte le colonne a seconda che stia prima o dopo la virgola Come indice si possono usare vettori di interi, ad esempio [1 3 6] indica la prima, la terza e la sesta riga o colonna a seconda che stia prima o dopo la virgola

11 Slide 11 Operazioni fra matrici Trasposizione: A' Esempio: [1, 5, 3]' == [1; 5; 3] Prodotto righe per colonne: A * B Prodotto elemento per elemento: A.* A Il prodotto matrice per scalare viene calcolato elemento per elemento [1, 5; 3, 4] * 2 == [2, 10; 6, 8] 11 Trasposizione e prodotto matriciale seguono le regole dell algebra lineare, pertanto le matrici devono avere dimesioni compatibili. [1, 5; 3, 4] * 2 == [1, 5; 3, 4].* [2, 2; 2, 2] L operatore punto premesso a qualunque operatore indica a Matlab/Octave di eseguire elemento per elemento l operazione relativa all operatore immediatamente seguente [1, 5; 3, 4] ^ 2 == [1, 5; 3, 4] * [1, 5; 3, 4], [1, 5; 3, 4] * [1, 5; 3, 4] == [16, 25; 15, 31] [1, 5; 3, 4].^ 2 == [1, 25; 9, 16] Tutte le altre operazioni fra matrice e scalare vengono compiute elemento per elemento: [1, 5; 3, 4] > 2 == [1 > 2, 5 > 2; 3 > 2, 4 > 2] [1, 5; 3, 4] > 2 == [0, 1; 1, 1]

12 Slide 12 Funzioni Esistono due tipi di funzioni: quelle predefinite (builtin) che fanno parte del core (nucleo principale) di Matlab/Octave o di un toolbox (estensione) e quelle definite dall utente secondo una specifica sintassi. Utilizzo di funzioni Tutte le funzioni si utilizzano mediante la seguente sintassi: [out1, out2, ] = nome_funzione(in1, in2, ) help nome_funzione illustra tutti i parametri 12 Non sempre funzioni hanno un numero fisso di parametri in ingresso. Esistono funzioni con nessun parametro e funzioni con un numero variabile di parametri, di norma vengono messi prima i parametri obbligatori e poi quelli opzionali. Le variabili d uscita sono sempre opzionali, se non ne viene indicata nessuna il risultato della funzione viene posto nella variabile di defult ans.

13 Slide 13 Alcune Funzioni predefinite input(str) richiede di scrivere un dato disp(str), display(str) visualizzano il contenuto di str, disp senza mostrare il nome della variabile length(x) lunghezza di un vettore size(x) dimensioni di una matrice max(x), min(x) massimo e minimo di un vettore eye(n) matrice unitaria, sqrt(x) radice quadrata zeros(m,n), ones(m,n) matrice di 0 e di 1 rand(m, n) matrice di m per n numeri casuali 13 La funzione input(str) serve per dare una semplice interattività ai programmi Matlab/Octave, di norma nel parametro str c è una richiesta di immissione dati; ad esempio a = input('scrivi un numero da mettere nella variabile a'); Se invece di un numero si deve richiedere l immissione di una stringa è opportuno usare un secondo parametro con valore 's', ad esempio: nome = input('scrivi il tuo nome: ', 's') length(x) == max(size(x)) La matrice unitaria ha 1 sulla diagonale principale e 0 altrove: eye(2) == [1 0; 0 1] zeros(2, 3) == [0, 0, 0; 0, 0, 0], ones[2 1] == [1; 1]

14 Slide 14 Script Uno script è una sequenza di istruzioni identificata con un nome. Gli script sono salvati in un file.m (m-file) I file.m devono stare in una cartella nota a Matlab/Octave tramite la variabile d'ambiente PATH. Per aggiungere una cartella a PATH si usa il comando omonimo PATH, ad esempio: path(path,'c:\tools\goodstuff') 14 Se si deve ripetere spesso una sequenza di istruzioni in modo ripetitivo è comodo incapsulare queste istruzioni in un unico contenitore che possa essere eseguito semplicemente richiamando il nome della sequenza. In Matlab/Octave le sequenze di istruzioni (script) sono salvate in dei file di testo con estensione.m (m-file). I file.m devono essere contenuti in una delle cartelle (folder) utilizzate da Matlab/Octave. Il comando path permette di aggiungere una cartella a quelle già conosciute da Matlab/Octave.

15 Slide 15 Definizione di funzioni Una funzione è una sequenza di istruzioni identificata con un nome e dotata di uno spazio delle variabili indipente (scope). Le funzioni sono salvate in un file.m (m-file) La struttura di una funzione è la seguente: function nome_funzione() alcune_istruzioni Il nome della funzione deve essere lo stesso del file che la contiene (es: nome_funzione.m) 15 Anche le funzioni sono salvate in un file.m, ma a differenza degli script possono avere dei parametri di ingresso e di uscita e hanno uno spazio delle variabili (scope) separato, cioè all interno di una funzione si possono ri-definire variabili con nomi già utilizzate al di fuori della funzione. In questo modo si ha l indipenza del codice della funzione rispetto all ambiente esterno. La comunicazione fra una funzione e il resto dell ambiente Matlab/Octave avviene solamente tramite i parametri di ingresso e d uscita (cfr lucidi successivi) o utilizzando la keyword global (vivamente sconsigliate)

16 Slide 16 Funzioni: parametri di I/O Una funzione può avere uno o più parametri in ingresso e può restituire uno o più parametri in uscita function [out1, out2...] = fun_name(in1, in2...) in1, in2... = parametri in ingresso (opzionali) out1, out2... = parametri in uscita (opzionali) 16 Le funzioni interagiscono con il resto di Matlab/Octave mediante i parametri di ingresso e di uscita. Sia i parametri di ingresso che quelli d uscita sono opzionali. Si suggerisce di non utilizzare mai più di 7 parametri di ingresso e di utilizzare nomi significativi. È buona norma verificare sempre che il numero, il tipo e i valori dei parametri siano compatibili con le operazioni che vengono compiuti con essi (validazione). Se si hanno meno di due parametri di uscita le parentesi quadre sono opzionali, ad esempio: function output_param = mia_funzione(in1, in2,...)

17 Slide 17 Esempio di funzione (1) Il file mysquare.m contiene le seguenti istruzioni: % MYSQUARE calcola il quadrato di un numero % mysquare(x), x numero da elevare al quadrato function risultato = mysquare(x) risultato = x^2; % a destra del percento ci sono i commenti % che vengono ignorati dall'interprete % i commenti delle prime righe vengono mostrati % da help mysquare 17 In una funzione è molto importante mettere dei commenti, per quanto possibile, comprensibili da tutti. Per controllare che i parametri siano adatti alla funzione stessa, mysquare potrebbe essere riscritta come segue (per dettagli su if e return si veda più avanti): function risultato = mysquare(x) s = size(x); if (s(1)~=s(2)) disp( il parametro deve essere una matrice quadrata ); return; risultato = x^2;

18 Slide 18 Esempio di funzione (2) Funzione che restituisce 2 variabili in uscita: la media e la deviazione standard. File mystat.m function [mean,stdev] = mystat(x) %STAT Interesting statistics. n = length(x); mean = sum(x) / n; stdev = sqrt(sum((x - mean).^2)/n); 18 Una funzione può produrre più di un risultato (ovvero parametri d uscita). Ad esempio la funzione mystat che calcola due parametri statistici del vettore x dalla command window dovrà essere chiamata in questo modo: x = [-3, 9, 1, -4, 4, 12, 2, 1, 0] [media, dev_standard] = mystat(x) media == dev_standard ==

19 Slide Il nome delle funzioni in matlab deve essere lo stesso del file.m che le contiene. I nomi dei parametri in ingresso e uscita devono essere usati con coerenza.

20 Slide 20 Espressioni condizionali: IF if espressione1 istruzioni1 elseif espressione2 istruzioni2 else istruzioni3 20 La forma breve per l istruzione if è: IF espressione istruzioni END Prima dell etichetta END si possono inserire un numero arbitrario di ELSEIF (con la relativa espressione e condizioni) e un unico ELSE. Nel caso di IF annidati un ELSE si inte riferito all IF più vicino che non abbia già un ELSE associato N.B. In Matlab/Octave le parole chiave sono sempre con lettere minuscole ma nella documentazione ufficiale si usa enfatizzare questi elementi scrivoli tutti in maiuscolo

21 Slide 21 Esempio di istruzione IF if a ~= 0 % ~= diverso, == test ugualianza b = 1/a else b = NaN % Not-a-Number 21 Prima di qualunque divisione è opportuno verificare che il divisore sia diverso da zero. Quindi la semplice istruzione: b = 1/a Diventa if a ~= 0 b = 1/a else b = NaN

22 Slide 22 Espressioni condizionali: SWITCH switch switch_expr case case_expr, istruzione,..., istruzione case {case_expr1, case_expr2,...} istruzione,..., istruzione otherwise, istruzione,..., istruzione 22 Nel caso si debba discriminare fra un numero di opzioni maggiore di due (ma sempre un numero limitato) al posto dell espressione IF si può utilizzare l espressione SWITCH. Questa espressione condizionale è del tutto equivalente a IF tranne che non occorre ripetere l espressione di test (switch_expr) ma solo i valori che può assumere.

23 Slide 23 Esempio di istruzione SWITCH METHOD = 'Bilinear'; switch lower(method) case {'linear','bilinear'} disp( Metodo lineare.') case 'cubic' disp( Metodo cubico.') otherwise disp('metodo sconosciuto.') 23 Il frammento di codice in questo lucido è equivalente a: METHOD = 'Bilinear'; if strcmp(lower(method),'linear') strcmp(lower(method),'bilinear') disp('metodo lineare.') elseif strcmp(lower(method),'cubic') disp('metodo cubico') else disp('metodo sconosciuto.')

24 Slide 24 Iterazioni Un blocco di istruzioni può essere ripetuto un numero arbitrario di volte mediante le istruzioni chiamate ciclo FOR e ciclo WHILE. I cicli possono essere annidati uno nell'altro. Attenzione ad evitare i cicli infiniti! 24 Spesso capita di voler ripetere un blocco di istruzioni per un certo numero di volte. Per questo motivo in Matlab/Octave ci sono due istruzioni di iterazione (o cicli): for e while. I due tipi di iterazioni sono perfettamente equivalenti, ma il primo è più adatto se si sa quante volte si deve ripetere il ciclo prima di incominciare la prima iterazione. Il secondo se si scopre solo in itinere di aver finito (condizione d uscita). In tutti i casi il programmatore deve mettere tutta la cura possibile per evitare di ripetere un ciclo all infinito, come potrebbe capitare sbagliando la condizione di uscita dal ciclo. Matlab/Octave è uno dei pochi lingaggi di programmazione (un altro esempio è R) in cui i programmatori più esperti evitano il più possibile i cicli iterativi. Questa prassi è resa possibile dal fatto che le operazioni su vettori o matrici nella maggior parte dei casi possono sostituire con maggior efficienza i cicli iterativi.

25 Slide 25 Ciclo FOR Esegue un blocco di codice per un numero di volte specificato for variabile = initval:val istruzione,..., istruzione 25 Il ciclo for impone che una variabile assuma, uno alla volta ad ogni iterazione, tutti i valori di una espressione. for variabile = espressione istruzioni Le colonne di espressione vengono assegnate, una alla volta, a variabile e vengono eseguite ripetutamente le istruzioni comprese fino a. Spesso espressione è nella forma 1:n con n numero di iterazioni. Per ripetere n volte una serie di istruzioni basta scrivere: for i = 1:n fai_qualcosa();

26 Slide 26 Esempio ciclo FOR i = 1 for x = -5:0.1:5 y(i) = x^2 i = i Il frammento di codice in questa pagina è equivalente a: x = [-5:0.1:5] y = x.^2 Ci possono essere 2 o più cicli for annidati uno dentro l altro, ad esempio: [m, n] = size(a); for i = 1:m for j = 1:n A(i,j) = A(i,j)^2;

27 Slide 27 Ciclo WHILE Esegue ripetutamente un blocco di istruzioni finché una condizione è vera while espressione istruzioni 27 Il ciclo while ripete le istruzioni contenute in esso finché è vera l'espressione immediatamente successiva alla parola riservata while. Di norma viene usato quando prima di incominciare la prima iterazione non si sa quante iterazioni saranno necessarie

28 Slide 28 Esempio ciclo WHILE divido = 4567 divisore = 37 quoziente = 0 resto = divido while resto > divisore resto = resto - divisore quoziente = quoziente Il codice in questo lucido produce questo output: resto = 4530 quoziente = 1 resto = 4493 quoziente = 2 resto = 4456 quoziente = 3... resto = 90 quoziente = 121 resto = 53 quoziente = 122 resto = 16 quoziente = 123

29 Slide 29 BREAK Interrompe ed esce da un ciclo for o while. Nel caso di cicli annidati esce solo da quello più interno in cui è contenuto. Se non è contenuto in un ciclo for o while esce dalla funzione in cui è contenuto. Interrompe l'esecuzioni di istruzioni if e switch. 29 L'istruzione break viene utilizzata se all'interno di un ciclo di iterazioni si verifica un caso particolare che necessita l'uscita immediata dal ciclo. Ad esempio: while condition do_someting() if strange_condition break

30 Slide 30 Esempio BREAK X = [1:30]*2; first = 1; last = length(x); searched = 34; while first < last middle = floor((last + first)/2) if X(middle) < searched first = middle; elseif X(middle) > searched last = middle; else break 30 Algoritmo di ricerca binaria Viene cercato un numero all'interno di un vettore ordinato non decrescente Ad ogni passo si dimezza l'intervallo di ricerca, se viene trovato l'elemento cercato si esce dal ciclo while mediante l'istruzione break Esercizio: creare la funzione binsearch che realizza la ricerca binaria (cioè inserire questo esempio in una funzione e curare che i parametri d ingresso e d uscita siano corretti)

31 Slide 31 RETURN Interrompe l'esecuzione di una funzione Esempio: function d = mydet(a) if isempty(a) d = 1; return else Una funzione puó essere interrotta in qualunque punto. Ció normalmente avviene in due casi: o (in un caso particolare) si è raggiunto il risultato finale prima della fine della funzione, oppure si è verificato un errore irrecuperabile, in questo caso è buona norma evidenziare una descrizione comprensibile del problema e subito dopo uscire con l'istruzione return Esercizio: completare la funzione mydet

32 Slide 32 END Termina lo spazio d azione delle istruzioni for, while, switch, (try) e if. Senza le istruzioni for, while, switch, (try) e if attono un input ulteriore, l interprete Matlab/Octave risulta bloccato fino a che non riceverà l ultimo degli mancanti. Ciascun viene accoppiato al più vicino non accoppiato for, while, switch, (try) e if e serve per terminarne lo spazio d azione. 32 Nella pratica capita spesso di dover mettere due o tre consecutivi, in questi casi è facile dimenticare almeno un. Il principiante potrebbe avere l'impressione che l'interfaccia di Matlab/Octave sia bloccata, ma aggiungo tutti gli che servono si torna alla situazione normale. L identazione riduce di molto il rischio di questo errore.

33 Slide 33 Stringhe Una stringa è un array di caratteri. Un array di stringhe è una matrice di caratteri, ma le matrici devono essere rettangolari e omogenee (tutti gli elementi sono dello stesso tipo), perciò si devono aggiungere degli spazi alla fine delle stringhe più corte: S = ['ciao '; 'amico '; 'come va?'] Se una delle stringhe è molto più lunga delle altre si ha un grosso spreco di memoria 33 I caratteri sono memorizzati come numeri utilizzando la codifica ASCII Le stringhe vengono racchiuse fra apici singoli, ad esempio: parola = 'piccola' Gli apostrofi contenuti nelle stringhe devono essere raddoppiati, ad esempio: Esempio = 'L''apostrofo va raddoppiato' La funzione char() permette la creazione di array di stringhe con l'aggiunta automatica di spazi alla fine di tutte le stringhe che ne hanno bisogno S = char('ciao','amico','come va?') La funzione deblank() rimuove gli spazi alla fine delle stringhe deblank(s(1,:)) == 'ciao'

34 Slide 34 Cell array Un vettore di celle (cell array) è una matrice composta da elementi non omogenei fra loro, cioè ogni elemento (cella) ha un suo tipo in generale diverso dal tipo degli altri elementi. Per creare un vettore di celle si utilizza l'operatore parentesi graffe { } C = {'hello'; 'yes'; 'no'; 'goodbye, 5} 34 La funzione cell(m,n) permette di creare un vettore di celle di dimensione m per n i cui elementi sono la matrice vuota. Esempio: c = cell(2,2) c = [] [] [] [] Se si opera con le sole stringhe una cella può essere creata con la funzione cellstr() Esempio: C = cellstr([ 'hello'; 'yes'; 'no'; 'goodbye']) Per convertire da cella a matrice e viceversa si possono usare le funzioni cell2mat() e mat2cell()

35 Slide 35 Indicizzazione di un vettore di celle Un cell array viene indicizzato tramite parentesi graffe { } (si noti che si ottiene un valore del tipo contenuto nella cella indicizzata) X = {'un' 'esempio' 5} X{3} = X{3} + 1 Y = {2 [3-1; 2 2]; 'test' 2} Y{2,2} + X{3} == 8 35 Un cell array potrebbe essere indicizzato anche tramite le parentesi tonde, ma in questo caso si otterrebbe una valore di tipo cella X(3) = {cell2mat(x(3)) + 1} Si ponga attenzione al fatto che il tipo di dato di una cella contenente il numero 8 è diverso dal numero 8. Per questo motivo X(3) + 1 non viene valutato perché non posso efettuare operazioni numeriche fra un numero e una cella Quindi è opportuno scrivere X{3} + 1

36 Slide 36 Output di dati sprintf(format, A...) usa la stringa di formattazione format per visualizzare i dati contenuti in A e nelle variabili successive. I formati seguono lo standard del linguaggio C, alcuni esempi: %2d = numero intero con 2 cifre %s = stringa %5.2f = numero reale con 5 cifre di cui 2 decimali Esempio: sprintf( sono %s e ho %d anni',nome, anni) 36 Uno stesso numero può essere rappresentato in molti modi diversi, Ad esempio x = 27; decimale con almeno 3 cifre (0 per quelle mancanti): sprintf('%03d', x) == '027' esadecimale con lettere maiuscole: sprintf('%x', x) == '1B' ottale: sprintf('%o', x) == '33' esponenziale: sprintf('%e', x) == ' e+001 Altri esempi: sprintf('%0.3f',(1+sqrt(5))/2) sprintf('%0.5g',1/eps) e+15 sprintf('%15.5f',1/eps) sprintf('%d',round(pi)) 3 sprintf('%s','hello') hello sprintf('the array is %dx%d.',2,3) The array is 2x3. sprintf('\n') è il caporiga su tutte le piattaforme Al posto di sprintf(format, A ) si può trovare anche la funzione fprintf(fid, format, A ) che normalmente invia l output su file, tuttavia se l identificatore di file è omesso si comporta esattamente come sprintf.

37 Slide 37 Ingresso/Uscita (1) save filename content options salva il workspace in un file.mat che è un formato binario con documentazione pubblica. Si possono salvare anche solo alcune variabili load filename carica le variabili contenute nel file specificato whos -file filename mostra le variabili contenute in filename 37 La funzione save permette di salvare tutte le variabili definite in un file di tipo binario, ad esempio: save mio_file.mat La stessa istruzione può essere scritta anche: save('mio_file.mat') Per salvare solo le variabili p e q save('variabili_p_q.mat', 'p','q')

38 Slide 38 Ingresso/Uscita (2) Lettura/scrittura di file Excel [Numbers, Text] = xlsread(filename,...) xlswrite(filename, M) N.B. Solo i dati numerici vengono messi nella variabile Numbers mentre le stringhe vengono poste nella variabile Text che è di tipo cell array CSV (Comma Separated Values) Numbers = csvread(filename,...) csvwrite(filename, M) 38 N.B. Nella matrice Numbers gli elementi non numerici vengono riempiti con il valore NaN (Not a Number), in genere è meglio evitare che il file Excel di partenza abbia alcune caselle non numeriche sparse (ad esempio vuote), altrimenti se si vogliono sostituire i NaN con zeri si può utilizzare l'istruzione: Numbers(isnan(Numbers)) = 0 (isnan() restituisce l'indice di tutti gli elementi uguali a NaN) Esistono anche altre funzioni per l'interfacciamento ad altri formati di file, ad esempio: Lotus wk1read(filename,...) wk1write(filename,m) XML xmlread(filename,...) xmlwrite(filename,m)

39 Slide 39 Esempio di utilizzo di xlsread Si scriva un programma che legga un file excel contenente: giocatori, squadre e paghe relative e calcoli la somma di tutte le paghe. [numeric txt] = xlsread('calciatori.xls'); paga = 0; for i=1:length(numeric) paga = paga + numeric(i); disp(paga); 39 Si noti che xlsread ritorna i valori numerici in una variabile e i valori stringa in un'altra variabile (di tipo matrice di celle) Al posto del ciclo for si sarebbe potuto scrivere la semplice espressione: paga = sum(numeric); Il file calciatori.xls ad esempio contiene questi valori: Cristiano Ronaldo Real Madrid Ibrahimovic Barcelona Messi Barcelona Eto'o Inter Kaká Real Madrid Adebayor Manchester City Karim Benzema Real Madrid Carlos Tevez Manchester City John Terry Chelsea Frank Lampard Chelsea

40 Slide 40 Esempio, prima variante Costruire la funzione Matlab che in ingresso abbia il nome di una calciatore, un vettore contenente gli stipi e una matrice contenente i nomi di alcuni calciatori e le squadre di appartenenza. La funzione ritorni la squadra e la paga del calciatore. Si scriva quindi il programma che legga un file excel contenente: giocatori, squadre e paghe relative, legga da terminale il calciatore desidrato e visualizzi i dati restituiti dalla funzione. 40 Nel testo dell esempio c è la parola chiave funzione, subito dopo sono descritti i parametri d ingresso e i parametri d uscita. Quindi la soluzione dovrà essere del tipo: function [squadra paga] = cerca_calciatore(lista, paghe, calciatore) I nomi dei parametri e della funzione sono del tutto arbitrari (tanto è vero che più avanti è stato usato un nome diverso della funzione per motivi di spazio), ma devono essere usati con coerenza.

41 Slide 41 Esempio, prima variante function [squadra paga]=cercanome(lista,paghe,calciatore) [n m]=size(paghe); for i=1:n if strcmp(calciatore, lista{i,1}) squadra = lista{i,2}; paga = paghe(i); break; 41 È errato scrivere: if calciatore==lista{i,1} perché si farebbe un confronto che verrebbe valutato correttamente solo se le lunghezze delle stringhe sono uguali, in caso contrario si genererebbe l'errore Matrix dimensions must agree che interromperebbe il programma. Bisogna utilizzare una funzione apposita per il confronto fra stringhe strcmp()

42 Slide 42 Esempio, prima variante [numeric txt] = xlsread('calciatori.xls'); nome = input('scrivi il nome di un calciatore: ', 's'); [squadra paga] = cercanome(txt, numeric, nome); disp(['squadra: ', squadra]) disp(['paga: ', sprintf('%d',paga)]) 42 Il programma che utilizza la funzione della pagina precedente deve porre cautela unicamente all'interno della funzione disp() Nel primo caso la variabile squadra viene accodata a una stringa fissa (si notino le parentesi quadre attorno alle 2 espressioni). Nel secondo caso un valore numerico viene convertito in stringa (con una formattazione opportuna) mediante la funzione sprintf()

43 Slide 43 Esempio, seconda variante Costruire la funzione Matlab che in ingresso abbia il nome di una squadra, un vettore contenente gli stipi e una matrice contenente i nomi di alcuni calciatori e le squadre di appartenenza. La funzione ritorni la lista dei giocatori dalla squadra richiesta. Si scriva quindi il programma che legga da terminale la squadra desidrata e il nome del file excel contenente i dati opportuni e visualizzi i dati restituiti dalla funzione. 43 A differenza dell'esempio precedente si deve trovare tutti i giocatori stipiati da una certa squadra Il programma che utilizza la funzione richiesta è come segue: [numeric txt] = xlsread('calciatori.xls'); nome = input('scrivi il nome di una squadra: ', 's'); lista = cercasquadra(numeric, txt, nome); disp(lista) Esercizio: calcolare la somma delle paghe erogate dalla squadra in ingesso.

44 Slide 44 Esempio, seconda variante function calciatori = cercasquadra(paghe, lista, squadra) [n m]=size(paghe); j = 1; for i=1:n if strcmp(squadra,lista{i,2}) calciatori{j,1} = lista{i,1}; calciatori{j,2} = paghe(i); j = j + 1; ; 44 Il parametro d'uscita calciatori deve essere un array di celle in quanto contiene sia stringhe che valori numerici, per questo viene indicizzato con parentesi graffe

45 Slide 45 Esempio, terza variante Costruire la funzione Matlab che in ingresso abbia il nome di un file excel contenente: giocatori, squadre e paghe relative. La funzione ritorni una matrice contenente la lista delle squadre (senza ripetizioni) e la somma delle paghe erogate da ciascuna squadra. Si scriva quindi il programma che legga da terminale il nome del file excel contenente i dati opportuni e visualizzi i dati restituiti dalla funzione. 45 Come l'esempio precedente, ma la funzione deve fornire in uscita una tabella di celle contenente nella prima colonna i nomi di ciascuna squadra e nella seconda colonna la somma delle paghe erogate dalla squadra in questione Il programma che utilizza la funzione richiesta è come segue: nome = input('scrivi il nome del file: ', 's'); lista = sommapersquadra(nome); disp(lista)

46 Slide 46 Esempio, terza variante function somme = sommapersquadra(file_calciatori) [paghe lista] = xlsread(file_calciatori); somme{1,1} = lista{1,2}; somme{1,2} = 0; [n m]=size(paghe); for i=1:n [s m]=size(somme); trovato = 0; 46 Il parametro d'ingresso viene messo nella variabile file_calciatori. Il parametro d'uscita somme deve essere un array di celle e nelle prime righe viene inizializzato con la prima squadra trovata cioè lista{1,2}. Il ciclo per tutti i calciatori verrà chiuso nella pagina successiva

47 Slide 47 Esempio, terza variante for j=1:s if strcmp(somme{j,1}, lista{i,2}) somme{j,2} = somme{j,2} + paghe(i); trovato = 1; break; if trovato==0 somme{s+1,1} = lista{i,2}; somme{s+1,2} = paghe(i); 47 Il ciclo in questa pagina esamina se la squadra contenuta nella cella lista{i,2} è già presente nella variabile d'uscita, in caso affermativo ne tiene conto nella variabile trovato e incrementa il valore relativo alle paghe. Se la squadra i-esima non è stata trovata viene aggiunta nell'ultimo if, il cui contenuto si sarebbe potuto scrivere in modo più compatto come: somme = [somme; {lista{i,2} paghe(i)}]; L'ultimo chiude un ciclo for aperto nella pagina precedente Esercizio: verificare che il parametro in ingresso (file_calciatori) sia il nome di un file leggibile e verificare che non sia vuoto (ci sia almeno una riga utile)

Introduzione a Matlab

Introduzione a Matlab Funzioni Una funzione è una sequenza di istruzioni identificata con un nome. Le funzioni sono salvate in un file.m (m-file) I file.m devono stare in una cartella nota a Matlab tramite la variabile d'ambiente

Dettagli

Introduzione a Matlab

Introduzione a Matlab Matlab è: Abbreviazione di MATrix LABoratory Ambiente di sviluppo per il calcolo numerico (non indicato per il calcolo simbolico) Linguaggio di programmazione interpretato (non compilato) 1 Matlab è inoltre:

Dettagli

Introduzione a Matlab

Introduzione a Matlab Stringhe (1) Una stringa è un array di caratteri. Un array di stringhe è una matrice di caratteri, ma le matrici devono essere rettangolari, perciò si devono aggiungere degli spazi alla fine delle stringhe

Dettagli

Introduzione all ambiente MATLAB. Richiami II. Calcolo Numerico - A.A. 2008/09

Introduzione all ambiente MATLAB. Richiami II. Calcolo Numerico - A.A. 2008/09 Introduzione all ambiente MATLAB Richiami II Programmazione MATLAB MATLAB non è un vero e proprio linguaggio di programmazione, ma permette comunque di realizzare programmi utilizzando le classiche strutture

Dettagli

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA MATLAB I/O Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA Funzione input valore = input( inserisci un valore ); Matlab stampa a video la stringa inserisci un valore ed aspetta di ricevere

Dettagli

8 Introduzione MATLAB

8 Introduzione MATLAB 8.1 Basi Per pulire il workspace (eliminare tutte le variabili esistenti): 1 clear Per pulire la finestra dei comandi (command window): 1 clc In MATLAB non è necessario dichiarare le variabili ed esse

Dettagli

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita UD4 - MATLAB M-file. Efficienza degli algoritmi. Formati d uscita M-files In MatLab è possibile eseguire istruzioni contenute in file esterni; Tali file sono chiamati M-file perché devono avere estensione.m

Dettagli

Introduzione all ambiente MATLAB. Richiami II. Analisi Numerica - A.A. 2007/08

Introduzione all ambiente MATLAB. Richiami II. Analisi Numerica - A.A. 2007/08 Introduzione all ambiente MATLAB Richiami II Programmazione MATLAB MATLAB non è un vero e proprio linguaggio di programmazione, ma permette comunque di realizzare programmi utilizzando le classiche strutture

Dettagli

8 Introduzione MATLAB

8 Introduzione MATLAB 8.1 Basi Per pulire il workspace (eliminare tutte le variabili esistenti): 1 clear Per pulire la finestra dei comandi (command window): 1 clc In MATLAB non è necessario dichiarare le variabili ed esse

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi

Dettagli

Introduzione a Matlab

Introduzione a Matlab INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi

Dettagli

Fondamenti di Informatica A. A / 1 9

Fondamenti di Informatica A. A / 1 9 Fondamenti di Informatica Prof. Marco Lombardi A. A. 2 0 1 8 / 1 9 : OUTLINE Caratteristiche Come si presenta Inserimento dei Comandi Variabili Operatori e Precedenza degli Operatori Workspace e Sessione

Dettagli

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario Cicli Concetti di base (MATrix LABoratory) programma interattivo per calcolo

Dettagli

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab Metodi di Analisi dei Dati Sperimentali AA /2010 Pier Luca Maffettone Elementi di Matlab Sommario Introduzione Variabili Manipolazione di elementi Creazione di vettori/matrici Operazioni elementari Funzioni

Dettagli

A.A. 2018/2019. Fondamenti di Programmazione in MATLAB FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

A.A. 2018/2019. Fondamenti di Programmazione in MATLAB FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante A.A. 2018/2019 Fondamenti di Programmazione in MATLAB Strutturazione del Codice Sorgente Docente Prof. Raffaele Pizzolante FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE Fondamenti di Programmazione in MATLAB:

Dettagli

INTRODUZIONE A MATLAB

INTRODUZIONE A MATLAB INTRODUZIONE A MATLAB INTRODUZIONE A MATLAB MATLAB (MATrix LABoratory) è un linguaggio di programmazione per applicazioni scientifiche (elaborazione numerica dei segnali, progetto di simulatori, sintesi

Dettagli

INTRODUZIONE A MATLAB. Introduzione. Calcolatrice base. Calcolatrice base. Variabili predefinite o speciali. Variabili predefinite o speciali

INTRODUZIONE A MATLAB. Introduzione. Calcolatrice base. Calcolatrice base. Variabili predefinite o speciali. Variabili predefinite o speciali INTRODUZIONE A MATLAB Introduzione M.R. Russo & M. Venturin Università degli Studi di Padova Dipartimento di Matematica Pura ed Applicata A.A. 2007/2008 Il nome MATLAB è acronimo di MATrix LABoratory.

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 24 settembre 2007 Outline 1 M-file di tipo Script e Function Script Function 2 Elementi di programmazione

Dettagli

>> A = [1 2 3; 4 5 6; 7 8 9]; >> A

>> A = [1 2 3; 4 5 6; 7 8 9]; >> A Creazione di matrici Delimititatore di riga Delimititatore di matrice >> A = [1 2 3; 4 5 6; 7 8 9]; >> A = [... 1 2 3 4 5 6 7 8 9 ]; Entrambi i comandi creano la stessa matrice 3x3 Accedere agli elementi

Dettagli

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function Introduzione al MATLAB c Parte 3 Script e function Lucia Gastaldi DICATAM - Sezione di Matematica, http://www.ing.unibs.it/gastaldi/ Indice 1 M-file di tipo Script e Function Script Function 2 Gestione

Dettagli

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOIGNEGNERIA. INFORMATICA B Ingegneria Elettrica. Script in Matlab

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOIGNEGNERIA. INFORMATICA B Ingegneria Elettrica. Script in Matlab DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOIGNEGNERIA INFORMATICA B Ingegneria Elettrica Script in Matlab Gli script Uno script è un file di testo contenente una sequenza di comandi MATLAB (è un programma

Dettagli

Laboratorio di Matlab

Laboratorio di Matlab Laboratorio di Matlab Alessandro Formaglio Dipartimento di Ingegneria dell Informazione, Università di Siena alex@dii.unisi.it http://www.dii.unisi.it/ control/matlab/labmatlab.html 9 Luglio 2009 DII -

Dettagli

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato.

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato. Scilab Corso di Informatica CdL: Chimica Introduzione a Scilab - Vettori Claudia d'amato claudia.damato@di.uniba.it Scilab Introduzione Ambiente matematico e di simulazione numerica sviluppato per la realizzazione

Dettagli

Informatica Applicata al Suono Tutorial Matlab

Informatica Applicata al Suono Tutorial Matlab Prof. Mario Malcangi malcangi@di.unimi.it MATLAB è un linguaggio di alto livello e un ambiente interattivo per il calcolo numerico, l'analisi e la visualizzazione dei dati e la programmazione. MATLAB consente

Dettagli

Programmare. Condizioni logiche. Condizioni Logiche Costrutti Decisionali Costrutti di Ciclo

Programmare. Condizioni logiche. Condizioni Logiche Costrutti Decisionali Costrutti di Ciclo Programmare Condizioni Logiche Costrutti Decisionali Costrutti di Ciclo Condizioni logiche Le condizioni logiche sono istruzioni che fanno uso di: operatori relazionali (servono a confrontare il valore

Dettagli

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?

Dettagli

Introduzione ad Octave

Introduzione ad Octave Università Ca Foscari di Venezia Dipartimento di Informatica Corso di Probabilità e Statistica 2009 Presentation outline 1 Introduzione al corso 2 Informazioni generali Corso di Probabilità e Statistica

Dettagli

Metodi numerici con elementi di Programmazione A.A

Metodi numerici con elementi di Programmazione A.A Metodi numerici con elementi di Programmazione A.A. 2013-2014 Introduzione al MatLab VI parte 1 Docente: Vittoria Bruni Email: vittoria.bruni@sbai.uniroma1.it Ufficio: Via A. Scarpa, Pal. B, I piano, Stanza

Dettagli

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function Introduzione al MATLAB c Parte 3 Script e function Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 M-file di tipo Script e Function Script Function 2 Gestione dell

Dettagli

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function Introduzione al MATLAB c Parte 3 Script e function Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 M-file di tipo Script e Function Script Function 2 Gestione dell

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Introduzione a MATLAB Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 Introduzione a MATLAB Avviso per le Prossime Lezioni

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione a Matlab

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione a Matlab UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Introduzione a Matlab MATLAB MATLAB (abbreviazione di Matrix Laboratory) è un ambiente per il calcolo numerico e un linguaggio di programmazione (interpretato)

Dettagli

Matlab: Script e Funzioni

Matlab: Script e Funzioni Matlab: Script e Funzioni Informatica B Script Cos è uno script (m-file) q Uno script è un file di testo contenente una sequenza di comandi MATLAB non deve contenere caratteri di formattazione (solo testo

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 3: Istruzioni ed operatori booleani. Vittorio Scarano Corso di Laurea in Informatica Università di Salerno Soluzioni agli esercizi Istruzioni (statement) semplici e di controllo

Dettagli

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione Lezione 5 e 6 - Concetto di blocco - Controllo del flusso di un programma - Costrutti per la scelta if e switch - Costrutti while e for - Operatori in C Fabio Scotti (2004-2009) Laboratorio di programmazione

Dettagli

Script in Matlab. INFORMATICA B + C (sezione L-Z) Ingegneria Elettrica, Chimica e dei Materiali

Script in Matlab. INFORMATICA B + C (sezione L-Z) Ingegneria Elettrica, Chimica e dei Materiali DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOIGNEGNERIA INFORMATICA B + C (sezione L-Z) Ingegneria Elettrica, Chimica e dei Materiali Script in Matlab Gli script Uno script è un file di testo contenente

Dettagli

Esercitazione 00 Introduzione a Matlab

Esercitazione 00 Introduzione a Matlab 1 Esercitazione 00 Introduzione a Matlab Corso di Strumentazione e Controllo di Impianti Chimici Prof. Davide Manca Tutor: Giuseppe Pesenti PSE-Lab 2 Tutor: Giuseppe Pesenti giuseppe.pesenti@polimi.it

Dettagli

Strutture di controllo condizionali in Matlab

Strutture di controllo condizionali in Matlab Strutture di controllo condizionali in Matlab Informatica B Le strutture condizionali A cosa servono le strutture condizionali? %Inserimento dei parametri della parabola: y=ax^2+bx+c a = input( inserire

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Qualsiasi programma in C++ segue lo schema:

Qualsiasi programma in C++ segue lo schema: Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni

Dettagli

Variabile, costante ed espressione

Variabile, costante ed espressione Variabile, costante ed espressione All interno di un programma un informazione può essere organizzata in vari modi: Variabile Costante Espressione Le variabili a loro volta possono essere: scalari vettori

Dettagli

Primi script in MATLAB

Primi script in MATLAB Primi script in MATLAB Laboratorio di Calcolo Numerico 6 Marzo 2018 Introduzione alla programmazione Obiettivo: scrivere programmi e sviluppare algoritmi in MATLAB Si utilizzano gli m-file, ovvero file

Dettagli

Calcolo Numerico A.A Esercitazione n

Calcolo Numerico A.A Esercitazione n Calcolo Numerico A.A. 2012-2013 Esercitazione n. 3 19-03-2013 1 Informazione http://www.softpedia.com/progdownload/gui-octave-download- 180957.html Files.m Al posto di eseguire i comandi direttamente da

Dettagli

Introduzione a Matlab

Introduzione a Matlab Introduzione a Matlab Ing. Anna Maria Vegni avegni@uniroma3.it 30/10/2008 Indice Indice... 2 Introduzione... 3 Help in Matlab... 4 Files di Matlab... 5 Le variabili in Matlab... 6 Matrici in Matlab...

Dettagli

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili, Bisezione

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili, Bisezione Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili, Bisezione Claudia Zoccarato E-mail: claudia.zoccarato@unipd.it Dispense: Moodle Dipartimento ICEA 22 Marzo 2017 Vettori in

Dettagli

Operatori relazionali

Operatori relazionali Operatori relazionali Gli operatori relazionali più comuni sono: == uguale ~= diverso da < minore di > x=2; >> x==0 ans = 0 >> x==2 ans = 1 (questa relazione e falsa:)

Dettagli

Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici

Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici Claudia Zoccarato E-mail: claudia.zoccarato@unipd.it Dispense: Moodle Dipartimento ICEA 03 Maggio 2017 Richiami In MATLAB, ogni variabile

Dettagli

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Python Programmare Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Le istruzioni devono essere date in un linguaggio comprensibile dal calcolatore. In generele questi

Dettagli

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe

Dettagli

Introduzione. Corso di Metodi Numerici. 06 Marzo 2019

Introduzione. Corso di Metodi Numerici. 06 Marzo 2019 Introduzione 06 Marzo 2019 MATLAB - Introduzione MATrix LABoratory - una calcolatrice per matrici Piattaforma per il calcolo scientifico e la progettazione Linguaggio di programmazione ad alto livello

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

Elementi di Base. Introduzione a Python.

Elementi di Base. Introduzione a Python. Elementi di Base Introduzione a Python http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Panoramica Elementi di base della sintassi (struttura,

Dettagli

Elementi di Informatica A. A. 2016/2017

Elementi di Informatica A. A. 2016/2017 Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 1

Dettagli

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice, Paolo Bison, FI06, 2007-01-10 p.1 Pseudo codice linguaggio testuale mix di linguaggio naturale ed elementi

Dettagli

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Linguaggio Testuale E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Delle volte viene chiamato metalinguaggio, e l algoritmo scritto tramite

Dettagli

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis Slide (rielaborate) del prof. Emiliano Casalicchio accattatis@ing.uniroma2.it Esercizio (1) Dati due vettori V1 e V2 scrivere un algoritmo che permetta

Dettagli

Laboratorio di Matlab

Laboratorio di Matlab Laboratorio di Matlab Alessandro Formaglio Dipartimento di Ingegneria dell Informazione, Università di Siena alex@dii.unisi.it http://www.dii.unisi.it/ control/matlab/labmatlab.html Martedì 7 Luglio 2009

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra

Dettagli

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p. Pseudo codice Paolo Bison Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova Pseudo codice, Paolo Bison, A.A. 2003-04, 2003-09-30 p.1/38 Pseudo codice linguaggio testuale mix di linguaggio naturale

Dettagli

STRUTTURE DI CONTROLLO DEL C++

STRUTTURE DI CONTROLLO DEL C++ STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto

Dettagli

Introduzione a MATLAB

Introduzione a MATLAB Introduzione a MATLAB Laboratorio 1 Segnali per le Telecomunicazioni Prof. Prati Claudio Maria Autore: Federico Borra Politecnico di Milano, DEIB Email: federico.borra@polimi.it Marzo 17, Ultima revisione:

Dettagli

Matlab. Istruzioni condizionali, cicli for e cicli while.

Matlab. Istruzioni condizionali, cicli for e cicli while. Matlab. Istruzioni condizionali, cicli for e cicli while. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica 17 marzo 2016 Alvise Sommariva Introduzione 1/ 18 Introduzione Il

Dettagli

1) Matlab e simulazione. 2) Esempi di utilizzo. Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata

1) Matlab e simulazione. 2) Esempi di utilizzo. Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata Argomenti della Lezione 1) Matlab e simulazione 2) Esempi di utilizzo 1 Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata Matlab è un sistema di programmazione ad alto livello

Dettagli

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Python Programmare Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Le istruzioni devono essere date in un linguaggio comprensibile dal calcolatore. In generele questi

Dettagli

Università degli Studi di Ferrara

Università degli Studi di Ferrara Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2017-2018 Programmazione Lezione 21 Input Output Docente: Michele Ferrari - michele.ferrari@unife.it Nelle lezioni precedenti Operatori

Dettagli

Dinamica e Controllo dei Processi Energetici. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Dinamica e Controllo dei Processi Energetici. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab Dinamica e Controllo dei Processi Energetici AA 2009/ Pier Luca Maffettone Elementi di Sommario Introduzione Variabili Manipolazione di elementi Creazione di vettori/matrici Operazioni elementari Funzioni

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 8 14/11/2013

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 8 14/11/2013 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 8 14/11/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University

Dettagli

Calcolo Numerico A.A Lab n

Calcolo Numerico A.A Lab n Calcolo Numerico A.A. 2014-2015 Lab n. 3 29-10-2014 Elementi di programmazione Programmare in MATLAB Alcune strutture di programmazione elementari Operatori relazionali: =, ==, = Operatori logici:

Dettagli

Octave. Luca Abeni. Informatica Luca Abeni 1 / 21

Octave. Luca Abeni. Informatica Luca Abeni 1 / 21 Luca Abeni Informatica Luca Abeni 1 / 21 Linguaggi di Programmazione di Alto Livello Parole chiave: possibilmente con significato in inglese Ma agli informatici piacciono molto contrazioni e acronimi...

Dettagli

Primi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione

Primi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione Primi esempi di programmi Il tipo int Le variabili Altri tipi interi Operatori di assegnazione Il tipo int Un int permette di trattare numeri interi 4 byte (32 bit) con la tecnica del complemento a 2 (ma

Dettagli

Programmare con MatLab IV

Programmare con MatLab IV Programmare con MatLab IV IV_Matlab Carla Guerrini 1 Programmazione Matlab MATLAB non è un vero e proprio linguaggio di programmazione, ma permette comunque di realizzare programmi utilizzando le classiche

Dettagli

MATLAB - Introduzione. Antonino Polimeno

MATLAB - Introduzione. Antonino Polimeno MATLAB - Introduzione Antonino Polimeno antonino.polimeno@unipd.it MATLAB - 1 Da Wikipedia MATLAB (abbreviazione di Matrix Laboratory) è un ambiente per il calcolo numerico e l'analisi statistica scritto

Dettagli

Introduzione al MATLAB c Parte 1 Variabili ed array

Introduzione al MATLAB c Parte 1 Variabili ed array Introduzione al MATLAB c Parte 1 Variabili ed array Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 Cos è il MATLAB Componenti principali di MATLAB Avvio e Strumenti

Dettagli

Introduzione al MATLAB c Parte 1 Variabili ed array

Introduzione al MATLAB c Parte 1 Variabili ed array Introduzione al MATLAB c Parte 1 Variabili ed array Lucia Gastaldi DICATAM - Sezione di Matematica, http://www.ing.unibs.it/gastaldi/ Indice 1 Cos è il MATLAB Componenti principali di MATLAB Avvio e Strumenti

Dettagli

8 Introduzione MATLAB

8 Introduzione MATLAB 8.1 Basi Per pulire il workspace (eliminare tutte le variabili esistenti): 1 clear Per pulire la finestra dei comandi (command window): 1 clc In MATLAB non è necessario dichiarare le variabili ed esse

Dettagli

Algoritmi stabili e instabili

Algoritmi stabili e instabili Algoritmi stabili e instabili Laboratorio di Calcolo Numerico 13 Marzo 2018 Vettori in MATLAB Finora abbiamo pensato alle variabili utilizzate come semplici valori numerici (variabili scalari). In realtà,

Dettagli

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile

Dettagli

Il primo programma C++

Il primo programma C++ Il primo programma C++ Un programma in qualsiasi linguaggio evoluto è una sequenza di istruzioni che la CPU dopo opportune conversioni esegue. La sintassi dei linguaggi di programmazione è molto piu rigida

Dettagli

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3 Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2007/08 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Assegnazione di una variabile

Assegnazione di una variabile Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile

Dettagli

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout

Dettagli

Diagrammi di flusso (Flow Chart)

Diagrammi di flusso (Flow Chart) Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I diagrammi di flusso visualizzano graficamente i passi da cui sono formati gli algoritmi

Dettagli

RICONOSCIMENTO DI FORME A.A OBIETTIVI PARTE 1 INTRODUZIONE A MATLAB

RICONOSCIMENTO DI FORME A.A OBIETTIVI PARTE 1 INTRODUZIONE A MATLAB RICONOSCIMENTO DI FORME A.A. 2006-2007 PARTE 1 OBIETTIVI Implementare semplici algoritmi di Pattern Recognition utilizzando l ambiente Matlab Svolgere esperimenti di classificazione utilizzando gli algoritmi

Dettagli

Programmazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript

Programmazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript Programmazione lato client Netscape: Microsoft: JScript ECMAScript (ECMA-262) (European Computer Manufactures Association) 1 Linguaggio di script interpretato con alcune caratteristiche Object Oriented

Dettagli

Matematica con Python

Matematica con Python Matematica con Python e-mail: maurosaita@tiscalinet.it Versione provvisoria. Dicembre 2016. 1 Lezione n. 1 Calcolatrice Olivetti. Esegue le quattro operazioni elementari. Indice 1 Numeri e stringhe 2 1.1

Dettagli

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1 Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria R. Vitolo Dipartimento di Matematica Università di Lecce SaLUG! - Salento Linux User Group Il programma OCTAVE per l

Dettagli

Javascript: il browser

Javascript: il browser Javascript: il browser Un browser è un programma Un browser interpreta il linguaggio HTML e visualizza le pagine sullo schermo Per la visualizzazione delle pagine un browser si appoggia al software di

Dettagli

Primo programma in C

Primo programma in C Primo programma in C Struttura minima di un file C Applicazioni C in modo console Struttura del programma Commenti Direttive #include Definizione di variabili Corpo del main 2 Struttura minima di un file

Dettagli

Foglio Elettronico Lezione 1

Foglio Elettronico Lezione 1 - Introduzione - Celle e riferimenti - Formule - Approfondimenti - Funzioni logiche Sommario Introduzione - Foglio elettronico o foglio di calcolo - Cos'è? Strumento per raccogliere dati organizzati in

Dettagli

MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)

MATLAB c. Lucia Gastaldi Dipartimento di Matematica  Lezione 4 (15 ottobre 2003) MATLAB c M-file. Lucia Gastaldi Dipartimento di Matematica http://dm.ing.unibs.it/gastaldi/ Lezione 4 (15 ottobre 2003) Esercizio Problema 3: la successione di funzioni f n (x) = (x 2 x) n per 0 x 1 è

Dettagli

Matlab 5. Funzioni. Slide basate sul corso di C. Blundo. A.A. 2010/ GPersiano. Laboratorio di Informatica per Fisici 1

Matlab 5. Funzioni. Slide basate sul corso di C. Blundo. A.A. 2010/ GPersiano. Laboratorio di Informatica per Fisici 1 Matlab 5 Funzioni Slide basate sul corso di C. Blundo A.A. 2010/2011 -- GPersiano Laboratorio di Informatica per Fisici 1 Funzioni Le funzioni sono utili quando occorre ripetere una serie di comandi più

Dettagli