Laboratorio di MatLab

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

Introduzione a Matlab

MATLAB Elementi di grafica Costrutti di programmazione

Esercizi di MatLab. Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, A.A

8 Introduzione MATLAB

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

Informatica Applicata al Suono Tutorial Matlab

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 1 - Introduzione a MATLAB

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

A. Introduzione a Matlab

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

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

Introduzione al MATLAB c Parte 1 Variabili ed array

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

Fondamenti di Informatica

Esercitazione 1: Introduzione a MATLAB

Introduzione a MATLAB

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

1 Esercizi di Matlab. L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi.

Laboratorio di Matlab

CORSO DI LABORATORIO DI INFORMATICA

Introduzione. MATLAB è l acronimo di MATrix LABoratory

Calcolo Numerico I - a.a Laboratorio 1 - Introduzione a MATLAB

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

Matlab. Istruzioni condizionali, cicli for e cicli while.

Introduzione al MATLAB c Parte 3 Script e function

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

ESERCITAZIONE MATLAB

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

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

Excel. Il foglio di lavoro. Il foglio di lavoro Questa viene univocamente individuata dalle sue coordinate Es. F9

Laboratorio di Sperimentazioni di Fisica I MOD A. 14 ottobre 2009

Prove d esame Esercizi con Matlab

Fortran in pillole : prima parte

Introduzione a Matlab. Renato Mainetti

Laboratorio 1 Introduzione a Matlab R - Octave

Corso di Laboratorio di Sistemi Operativi

CORSO DI INFORMATICA GENERALE. Università degli Studi di Bergamo

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

Introduzione al Foglio Elettronico

Introduzione a Matlab Costruzione di Macchine 2 Prof. Sergio Baragetti

Introduzione al Foglio Elettronico

Programmazione Matlab

Formule e funzioni. Manuale d uso

VBA Principali Comandi

CORSO DI LABORATORIO DI INFORMATICA

MATLAB (II parte) Commenti. Input/Output (I/O) Istruzioni di Input/Output (I/O)

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

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

Programmazione web lato client con JavaScript. Marco Camurri 1

Fondamenti di Informatica

Aritmetica in Floating Point

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

File binari e file di testo

MATLAB - Programmazione - 2. Antonino Polimeno

MATLAB parte II. Array

Programmazione con il linguaggio LibreOffice Basic

MATRICI (ARRAY) IN MATLAB/OCTAVE

Introduzione al software R

Un grafico utilizza i valori contenuti in un foglio di lavoro per creare una rappresentazione grafica delle relazioni esistenti tra loro;

Cenni sull utilizzo dei fogli elettronici

Introduzione al linguaggio Matlab - 1. A) Command Window: é la nestra in cui si eseguono in comandi.

Foglio elettronico Microsoft Office Excel 2003

Laboratorio di Applicazioni numeriche

Imparare a utilizzare le formule e le funzioni

Introduzione a Matlab (e al Calcolo Numerico)

Fondamenti di Informatica T-1

CORSO ACCESS 2000 PARTE VI

Corso di Matematica per la Chimica

Rappresentazione degli algoritmi

L utility Unix awk [Aho-Weinberger-Kernighan]

nome di un menu per visualizzarlo e poi selezionate facendo clic sul comando che vi interessa.

DEFINIZIONI SMART E RELATIVE ESERCITAZIONI

STRUTTURE DI CONTROLLO DEL C++

Cultura Tecnologica di Progetto

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

1 (7) 2 (6) 3 (6) 4 (7) 5 (6)

EXCEL software Excel .xlxs, La cella intestazione della colonna intestazione di righe l indirizzo della cella testo numeri formule

EUROPEAN COMPUTER DRIVING LICENCE SYLLABUS VERSIONE 5.0

MICROSOFT EXCEL FORMULE E FUNZIONI

Laboratorio con DERIVE

Introduzione a Matlab

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Breve introduzione al linguaggio R

3. Matrici e algebra lineare in MATLAB

Metodi Numerici con Elementi di Programmazione A.A

MODULO 5 - USO DELLE BASI DI DATI 2 FINALITÁ

Strategie di programmazione

EXCEL: FORMATTAZIONE E FORMULE

Calcolare con il computer: Excel. Saro Alioto 1

Si può scrivere un programma anche utilizzando un editor di testo (Blocco Note, WordPad, ) ricordandosi comunque di salvarlo con l estensione.py.

INTRODUZIONE ALLA PROGRAMMAZIONE

Vettori e Matrici. Vettori. Vettori e matrici: dati. Vettori di caratteri Polinomi. Dimensione (Size) numero di righe e di colonne della matrice

Laboratorio di Calcolo Numerico

U.T.E FOGLIO ELETTRONICO. Università della Terza Età. Sede di Novate Milanese. Corso Informatica Approfondimento. Docente: Giovanni Pozzi

L INTERFACCIA GRAFICA DI EXCEL

ASDEP CONTROLLO DATI ANAGRAFICI - MANUALE

Operazioni preliminari: creare una cartella in Documenti

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 1 - Introduzione a MATLAB

Il foglio elettronico

Transcript:

Laboratorio di MatLab Vanna Lisa Coli Alessandro Benfenati Dipartimento di Matematica e Informatica - Università di Ferrara vannalisa.coli@unife.it 4 Ottobre 2017 1 / 51

Sommario 1 Introduzione a Matlab Navigazione Workspace, Command History Shell Editor 2 Variabili numeriche Vettori Matrici 3 M-files - Script 4 Istruzioni di controllo e cicli Istruzioni di controllo Cicli 2 / 51

Che cos è Matlab? Introduzione a Matlab MatLab (Matrix Laboratory) è un ambiente integrato per il calcolo scientifico, basato sul calcolo matriciale; consente di eseguire un istruzione o comando per volta, tali comandi permettono di definire variabili, valutare formule, disegnare grafici 2D e 3D a schermo... È inoltre un linguaggio di programmazione intrerpretato (non compilato), dalla sintassi facile ed intuitiva (anche se a prima vista può non sembrare). La notazione in cui i dati vengono inseriti e le soluzioni vengono espresse è una notazione di tipo matematico. MatLab è un ambiente per studiare soluzioni numeriche di problemi di tipo fisico, economico, statistico, ingegneristico, in molti campi delle scienze applicate. Per aiutare gli utenti nella soluzione di questi problemi, sono stati creati vari Toolbox, ovverosia librerie con funzioni già implementate per affrontare le tematiche particolari (ad esempio, lo Statistic Toolbox è stato creato per effettuare analisi statistiche di dati.) Per maggiori informazioni, visitare http://www.mathworks.com. 3 / 51

Alternative a MatLab Introduzione a Matlab Nel caso si disponesse di grosse disponibilità finanziarie, è possibile acquistare MatLab, con un costo che va dai 2 000 e(versione base) ai circa 84 000 e. Alternativa Octave è un software open source, disponibile per ambiente Windows, Linux e Mac; costituisce una valida alternativa a MatLab, compatibile al 98.3% con i codici MatLab. Si può scaricare dal sito http://www.gnu.org/software/octave/ In ambiente linux (Ubuntu), Octave è installabile con il comando sudo apt-get install octave3.2 Octave non è dotato di interfaccia grafica come MatLab (si utilizza in modalità testuale, da shell di comando), ma è possibile installare il pacchetto QtOctave che dota Octave di un aspetto simile a quello di MatLab. Altra alternativa a MatLab è SciLab: http://www.scilab.org/ che non ha lo stesso livello di compatibilità con MatLab posseduto da Octave. 4 / 51

Introduzione a Matlab Utilizzare MatLab su Linux Per lanciare MatLab digitare in un terminale semplicemente il comando matlab. Un altra possibilità è lanciarlo con il seguente comando: matlab -nosplash -nodesktop -nojvm. 5 / 51

Introduzione a Matlab Utilizzare MatLab su Linux Per lanciare MatLab digitare in un terminale semplicemente il comando matlab. Un altra possibilità è lanciarlo con il seguente comando: matlab -nosplash -nodesktop -nojvm. non fa apparire la finestra con la versione del programma; 6 / 51

Introduzione a Matlab Utilizzare MatLab su Linux Per lanciare MatLab digitare in un terminale semplicemente il comando matlab. Un altra possibilità è lanciarlo con il seguente comando: matlab -nosplash -nodesktop -nojvm. non fa apparire la finestra con la versione del programma; non apre la finestra grafica, con editor, workspace etc: si utilizza MatLab da terminale, ma è possibile aprire ad esempio l editor digitando edit nomefile.m; 7 / 51

Introduzione a Matlab Utilizzare MatLab su Linux Per lanciare MatLab digitare in un terminale semplicemente il comando matlab. Un altra possibilità è lanciarlo con il seguente comando: matlab -nosplash -nodesktop -nojvm. non fa apparire la finestra con la versione del programma; non apre la finestra grafica, con editor, workspace etc: si utilizza MatLab da terminale, ma è possibile aprire ad esempio l editor digitando edit nomefile.m; non lancia la Java Virtual Machine, quindi non è possibile utilizzare finestre quali l editor, l help: si utilizza esclusivamente da linea di comando nel terminale. 8 / 51

Ambiente MatLab Introduzione a Matlab Ogni finestra può essere estratta (unlocked), integrata (locked), massimizzata, minimizzata, chiusa.. 9 / 51

Ambiente MatLab Introduzione a Matlab Workspace Variabili correnti, con info Navigazione navigazione fra le cartelle Editor di testo scrivere m.files, functions, etc. Mandare in esecuzione il programma Shell Command history Ogni finestra può essere estratta (unlocked), integrata (locked), massimizzata, minimizzata, chiusa.. 10 / 51

Navigazione Introduzione a Matlab Navigazione Nel menu di navigazione è possibile controllare in quale directory si sta lavorando. Questo è importante in quanto se si vanno a caricare dati o funzioni (che verranno spiegate a breve) non presenti nel path corrente MatLab restituisce un messaggio di errore. In questa finestra è possibile selezionare la cartella di lavoro, aprire m-files, caricare dati salvati mediante il doppio clic del mouse. Alcuni comandi da utilizzare nella shell di comando per la navigazione sono i seguenti: cd name_dir entra nella cartella name_dir; cd.. sale di un livello; load name_file.mat carica dati salvati nel file name_file.mat; edit name_script.m apre nella finestra dell editor il file name_script.m. 11 / 51

Introduzione a Matlab Workspace & Command History Workspace, Command History Nel Workspace viene visualizzato l elenco delle variabili nel seguente modo: name_var dimension,type val_min val_max Viene visualizzato il nome della variabile, la dimensione, il tipo, il valore massimo e il valore minimo. Esempio A <5x6 double> 0.23 5.5 B <1x6 double> 0 1 Cliccando due volte su di una variabile nel workspace, si apre una finestra simile ad un foglio elettronico contenente i valori della variabile. In questo ambiente è possibile modificare la variabile presa in esame. Nella Command History son presenti tutti i comandi digitati. Cliccando due volte su di un comando presente nell elenco tale comando viene eseguito. 12 / 51

Shell Introduzione a Matlab Shell La Command Line o Shell è l ambiente con cui si interagisce effettivamente con MatLab. Sulla linea di comando si definiscono le variabili, si richiamano funzioni, si eseguono script... >> 3+2 5 >> >> sin (3/2* pi )+ log (25) - tan (2) 4.4039 >> Si può utilizzare MatLab come una calcolatrice......anche di alto livello! Per eseguire un comando si digita tale comando sulla tastiera e poi si preme ê. Per eseguire più comandi sulla stessa linea si separano con una virgola: >> sin (3/2* pi ), cos ( -99) -1 vengono visualizzati i risultati in ordine. 0.0398 ans è la variabile temporanea in cui MatLab memorizza il risultato dell ultima istruzione digitata. Viene sovrascritta ogni volta! 13 / 51

Shell: alcuni comandi utili Introduzione a Matlab Shell >> pwd Directory di lavoro. >> help sin Il comando help apre una breve descrizione della funzione scritta subito dopo il comando. Digitando help sin nella shell apparirà una breve descrizione della funzione sin, il suo utilizzo e alcuni esempi. >> doc Il comando doc apre il browser con il manuale di MatLab. Tale manuale è in formato ipertestuale, quindi di facile utilizzo. Digitando doc name_fun si apre la finestra del browser direttamente alla pagina che spiega l utilizzo della funzione name_fun. >> cd CODES Il comando cd (Change Directory) serve a cambiare directory di lavoro. 14 / 51

Editor Introduzione a Matlab Editor I programmi MatLab possono raggiungere facilmente le centinaia di righe di codice, quindi è necessario poter disporre di file sorgente in cui memorizzare le istruzioni da eseguire. Nell Editor è possibile salvare un file di testo con estensione.m in cui scrivere tutte le istruzioni necessarie per risolvere un problema. L editor di MatLab è un comune editor di testo con solo alcune funzioni aggiuntive comode per poter lavorare con questo linguaggio di programmazione. Nell editor sono presenti strumenti di debug e di esecuzione del programma, utili quando sono presenti errori difficili da trovare. Una volta scritte questa serie di istruzioni, è possibile richiamare quest insieme di istruzioni digitando il nome del file nella shell: in questo modo le istruzioni scritte verranno eseguite in sequenza, una alla volta. Per poter utilizzare un m-file la directory corrente deve essere la medesima del file che si vuole eseguire! 15 / 51

Variabili numeriche Variabili numeriche Quando viene eseguito un comando (p.es. >>3+2), il risultato viene memorizzato nella variabile ans; se vengono eseguiti più comandi in successione, la variabile ans memorizza solo il risultato dell ultima operazione. Per memorizzare questi risultati successivi è necessario dichiarare una variabile: >>a= 3+2 a= 5 Il risultato viene memorizzato nella variabile a e viene anche visualizzato. >>a= 3+2; >>a= 3+2; >>a= 10+3; Il risultato viene memorizzato nella variabile a ma non viene visualizzato. In questo modo il valore assegnato ad a viene sovrascritto: in questa caso il valore memorizzato in a è 13. La procedura per memorizzare un valore in una variabile è la seguente: var_name = var_value ê Il punto e virgola è facoltativo. 16 / 51

Variabili numeriche Variabili numeriche MatLab è case sensitive: la variabile M è diversa dalla variabile m. Il nome di una variabile non può iniziare con una cifra. Alcuni esempi di nomi validi di variabili sono: A_min, Err3, fun_obj4. È opportuno evitare l utilizzo di caratteri accentati. variabile NULL Utilizzando la seguente istruzione: >> x = []; si crea una variabile vuota (NULL) che può contenere dati di qualsiasi tipo. 17 / 51

Variabili numeriche Variabili numeriche Repetita iuvant! ans è la variabile temporanea in cui MatLab memorizza il risultato dell ultima istruzione digitata. Viene sovrascritta ogni volta che viene utilizzata! >> sin (23) -0.8462 >> 5+6 11 >> 0 0 >> log ( abs ( asin ( cos (pi )))) 0.4516 >> 1+1 2 >> ans 2 Se si scrivono varie operazioni in successione, il risultato che rimane memorizzato in ans è SOLO l ultimo eseguito. 18 / 51

Visualizzazione Variabili numeriche >> disp (x) Il comando disp serve a visualizzare sullo schermo il valore della variabile fra parentesi. Il comando fprintf è utilizzato per visualizzare messaggi sulla shell. >> fprintf ( Messaggio che viene stampato sulla shell.\ n ); Si può utilizzare il comando fprintf anche far apparire i valori delle variabili: è necessario specificare all interno di una stringa di testo il tipo di dato da visualizzare utilizzando il % con una lettera che identifichi il tipo; al termine della stringa e dopo una virgola si indica il nome di ciascuna variabile da visualizzare. >> fprintf ( Il valore di a: % f,a) Formattazione identica a quella di C 19 / 51

Visualizzazione Variabili numeriche (da http://it.mathworks.com/help/matlab/ref/fprintf.html) 20 / 51

Input da tastiera Si può inserire dati da tastiera: Variabili numeriche >> x = input ( Introduci il valore x:\ n ); Introduci il valore x: 34 >> x x = 34 >> whos Name Size Bytes Class Attributes x 1x1 8 double La variabile immessa è di tipo double. >> x = input ( Introduci la stringa x:\ n, s ); Introduci la stringa x: prova >> x x = prova >> whos Name Size Bytes Class Attributes x 1x5 10 char La variabile immessa è di tipo char (stringa). 21 / 51

Vettori: creazione Vettori MatLab è ottimizzato per il calcolo matriciale e tutti i dati vengono visti come matrici. I vettori sono matrici particolari >> v = [12 pi 0]; >> v = [12, pi, 0]; >> w = [9; 42; pi /2]; >> w = [9 42 pi /2]; >> w = [9; 42; pi /2]; >> w (2) 42 Dichiarazioni di vettori riga: utilizzare o no la virgola è ininfluente. Dichiarazioni di vettori colonna: andare a capo con ê o utilizzare il punto e virgola producono il medesimo risultato. Per accedere agli elementi di un vettore si digita il nome del vettore e fra parentesi tonde l indice dell elemento desiderato. 22 / 51

Vettori: creazione Vettori Alcuni comandi particolari: >> b = 3:15; Questo comando crea il vettore b i cui elementi sono equispaziati di 1. b p3, 4, 5,..., 15q. >> c = 0:0.1:2; Questo comando crea il vettore c i cui elementi sono equispaziati di passo 0.1. c p0, 0.1, 0.2,..., 1.8, 1.9, 2q. >> d = linspace (5,7,101); Questo comando crea il vettore d di 101 elementi, il primo elemento è 5 e l ultimo è 7. d p5, 5.02, 5.04,..., 6.96, 6.98, 7.00q. Il passo è calcolato automaticamente: d = linspace(q,r,n p) ñ passo = r q n p 1 >> var = [17;42]; >> var 17 42 L apostrofo calcola il trasposto di un vettore. Attenzione : var e var sono due variabili differenti! 23 / 51

Vettori: operazioni con i vettori Vettori Somma, differenza e prodotto di vettori ricalcano le definizioni matematiche. >> a = [2; 3]; >> b = [4; 6]; >> c = a+b c = 6 9 >> a = [2; 3]; >> b = [4; 6]; >> dot (a,b) 26 >> d = a *b d = 26 La somma (differenza) è calcolata componente per componente. Attenzione alle dimensioni dei vettori: non è possibile sommare vettori di dimensioni differenti. Il prodotto scalare ă a, b ą ř i a ib i è implementato con la funzione dot. Le dimensioni dei vettori devono essere le stesse. Una alternativa computazionalmente più efficiente utilizza il prodotto *: ă a, b ą a 1 b Le operazioni di divisione, moltiplicazione ed elevamento a potenza non sono definite per i vettori, ma è possibile utilizzare le operazioni punto:.* e./ 24 / 51

Vettori: operazioni con i vettori Vettori >> w = [25,16]; >> v = [5,8]; >> w./v 5 2 Addizione e sottrazione non hanno bisogno del punto >> w.\v 0.2000 0.5000 >> w.*v 125 128 >> v.^2 25 64 In questo modo viene eseguita l operazione componente per componente. Nel caso dell elevamento a potenza, ogni elemento del vettore viene elevato all esponente indicato: v.^2 = p5 2, 8 2 q. Se si utilizza un vettore come esponente, il risultato è v.^a = p5 2, 8 3 q. >> a = [2 3]; >> v.^a 25 512 25 / 51

Vettori: funzioni sui vettori Vettori >> v = linspace (10,15,50); >> sum (v) 625 >> prod (v) 4.9307 e +54 >> numel (v) 50 >> length ( v) 50 >> size (v) 1 50 La funzione sum calcola la somma degli elementi del suo argomento. La funzione prod calcola il prodotto degli elementi del suo argomento. La funzione numel calcola il numero degli elementi del suo argomento. La funzione length restituisce la lunghezza del vettore. La funzione size restituisce le dimensioni del suo argomento. P.S. Quando verranno utilizzate le matrici le differenze fra queste ultime tre funzioni saranno più chiare... 26 / 51

Vettori: funzioni sui vettori Vettori >> v = rand (10,1); >> max (v) 0.9706 >> min (v) 0.1419 La funzione rand(n,m) genera n ˆ m numeri distribuiti uniformemente nell intervallo r0, 1s. La funzione max (min) restituisce il massimo (minimo) del vettore in input. >> [mx, idx ] = max (v) mx = 0.9706 idx = 2 >> [mn, idx ] = min (v) mn = 0.1419 idx = 6 Se si chiamano le funzioni che cercano il massimo e il minimo di un vettore nel modo indicato, si trovano contemporaneamente e memorizzati in due variabili diverse il valore massimo (o minimo) del vettore e l indice della posizione. >> mean (v) 0.6602 >> std (v) 0.3308 La funzione mean calcola la media del vettore e la funzione std la sua deviazione standard. 27 / 51

Vettori Vettori: funzioni sui vettori & operatori di confronto >> w = 9:0.2:15; >> find (w <10) 1 2 3 4 5 La funzione find(logic_expr) restituisce gli indici per cui logic_expr è verificata. Operatori di confronto Gli operatori di confronto in MatLab sono: == confronto > maggiore < minore >= maggiore o uguale <= minore o uguale ~= diverso (per digitare ~ in ambiente Windows: ALT+0126. In ambiente Linux: ALTGR+ì. In ambiente MacOS ALT+5). 28 / 51

Vettori: vettori e costanti Vettori >> v = [4,5]; >> v + 2 6 7 >> v / 2 2.0000 2.5000 >> v * 2 8 10 Se si eseguono operazioni fra vettori e numeri, MatLab automaticamente tratta il numero in questione come un vettore in cui ogni componente è pari alla costante digitata. Esempio Somma: il comando >>v + 2 corrisponde a digitare >>v + [2,2]. La corrispondenza rimane valida per qualsiasi altra operazione assegnata in questo modo. 29 / 51

Vettori: funzioni sui vettori Vettori In MatLab sono definite tutte le funzioni elementari: sin, cos, log,... Per un elenco completo digitare nella shell di comando help elfun. >> x = pi /3; >> sin (x) 0.8660 >> log (x) 0.0461 >> x = 0: pi /2:3/2* pi >> max (x) 4.7124 >> min (x) 0 Funzioni con argomenti vettoriali Una funzione che ha come input un vettore restituisce come output un vettore della stessa dimensione, le cui componenti sono i valori della funzione calcolati sugli elementi del vettore di input. >> x = 0: pi /2:3/2* pi; x = 0 1.5708 3.1416 4.7124 >> y = sin (x) y = 0 1.0000 0.0000-1.0000 30 / 51

Vettori Vettori, esempio: calcolo del centro di massa 8 7 C 6 5 4 3 2 1 A B Si richiede il calcolo del centro di massa dei punti A,B,C. La formula per n punti è la seguente: 1 nÿ M x i, 1 nÿ y i n n i i 0 1 1 0 1 2 3 4 5 6 7 8 9 10 >>A = [2.0; 3.0 ]; >>B = [7.0; 4.5 ]; >>C = [4.9; 6.7 ]; >> >> M = (A + B + C) / 3; 31 / 51

Vettori Vettori, esempio: calcolo del centro di massa 8 7 C 6 5 4 3 2 1 A M B Si richiede il calcolo del centro di massa dei punti A,B,C. La formula per n punti è la seguente: 1 nÿ M x i, 1 nÿ y i n n i i 0 1 1 0 1 2 3 4 5 6 7 8 9 10 >>A = [2.0; 3.0 ]; >>B = [7.0; 4.5 ]; >>C = [4.9; 6.7 ]; >> >> M = (A + B + C) / 3; In questo caso si sfrutta il fatto che MatLab esegue la somma di vettori componente per componente e che la divisione viene eseguita su ogni componente. 32 / 51

Matrici Matrici L oggetto principale su cui MatLab lavora è la matrice. Per creare una matrice A come la seguente si utilizza la sintassi valida per i vettori: 4 5 π A 0 6 2 1 0 e >> A = [4 5 pi; 0 6 2; 1 0 exp (1)] A = 4.0000 5.0000 3.1416 0 6.0000 2.0000 1.0000 0 2.7183 >> A (2,3) % Accesso all elemento di riga 2 colonna 3 2 Carattere jolly : I due punti : permettono di accedere a più elementi della matrice (e, quindi, anche di un vettore!) contemporaneamente: consentono di selezionare un intera riga, un intera colonna o una sottomatrice. IMPORTANTE: data una matrice A, l istruzione A(:) crea un vettore contenente gli elementi di A ordinati per colonne ( vettorizzazione ). 33 / 51

Matrici Matrici A 2 5 π 56 2 0 6 2 0 2π 1 0 e 3 5 9 0 3 5 2 >> A (:,1) % seleziona solo la prima colonna 2 0 1 9 >> A (2,:) % seleziona solo la seconda riga 0.0000 6.0000 2.0000 0.0000 6.2832 >> A (3:4,3:5) % seleziona gli elementi dalla 3a % alla 4a riga e dalla 3a alla 5a colonna 2.7183 3.0000 5.0000 3.0000 5.0000 2.0000 34 / 51

Matrici Matrici A 2 5 π 56 2 0 6 2 0 2π 1 0 e 3 5 9 0 3 5 2 >> A (:,1) % seleziona solo la prima colonna 2 0 1 9 >> A (2,:) % seleziona solo la seconda riga 0.0000 6.0000 2.0000 0.0000 6.2832 >> A (3:4,3:5) % seleziona gli elementi dalla 3a % alla 4a riga e dalla 3a alla 5a colonna 2.7183 3.0000 5.0000 3.0000 5.0000 2.0000 35 / 51

Matrici Matrici A 2 5 π 56 2 0 6 2 0 2π 1 0 e 3 5 9 0 3 5 2 >> A (:,1) % seleziona solo la prima colonna 2 0 1 9 >> A (2,:) % seleziona solo la seconda riga 0.0000 6.0000 2.0000 0.0000 6.2832 >> A (3:4,3:5) % seleziona gli elementi dalla 3a % alla 4a riga e dalla 3a alla 5a colonna 2.7183 3.0000 5.0000 3.0000 5.0000 2.0000 36 / 51

Matrici: creazione Matrici Si possono creare matrici riempiendole con vettori. >> v = [2;4]; >> w = [0;1]; >> t = [1;3]; >> A = [v,w, t] A = 2 0 1 4 1 3 >> B = [v;w;t] B = 2 4 0 1 1 3 Si inizializzano tre vettori colonna di dimensioni 2x1 utilizzando il carattere ;. Per creare la matrice A si affiancano i tre vettori utilizzando il carattere,, in modo da avere una matrice 2x3. Se si utilizza il carattere ; i vettori vengono incolonnati e si crea un nuovo vettore di dimensione 6x1. >> v = [2;4]; >> w = [0;0;1]; >> A = [v, w] Attenzione alle dimensioni dei vettori! Error using horzcat CAT arguments dimensions are not consistent. 37 / 51

Matrici: creazione Matrici Si possono creare matrici riempiendole con altre matrici. >> A = [ 2 5 4; 6 9 0]; >> B = [ 9 9 9; 2 5 4]; >> C = [A;B] C = 2 5 4 6 9 0 9 9 9 2 5 4 Allocazione dinamica della memoria La matrice C è stata creata incolonnando la matrice B alla matrice A: rimane necessario prestare attenzione alle dimensioni. MatLab è in grado di creare spazio (memoria) dinamicamente in caso di necessità. >> D = [1 5; 5 6] D = 1 5 5 6 >> D (1,4) = 9 D = 1 5 0 9 5 6 0 0 La matrice D era di dimensione 2ˆ2 ma, avendo inizializzato l elemento di posto p1, 4q, MatLab ha creato dinamicamente la memoria per gli elementi mancanti, inizializzandoli a 0. 38 / 51

Matrici: creazione di matrici speciali Matrici >> eye (3) 1 0 0 0 1 0 0 0 1 Il comando eye(n) crea la matrice identità di ordine n. >> zeros (3) 0 0 0 0 0 0 0 0 0 >> ones (2) 1 1 1 1 Il comando zeros(n) (ones(n)) crea una matrice di ordine n con ogni elemento inizializzato a 0 (1). >> ones (3,7) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 39 / 51

Matrici: esempio Matrici Si ha a disposizione la matrice A di dimensioni 3 ˆ 3 e si vuole creare la matrice strutturata nel seguente modo: I 3 0 3 I 3 0 3 A 0 3 I 3 0 3 I 3 Per creare tale matrice è possibile utilizzare un unico comando MatLab: >>[ eye (3) zeros (3) -eye (3) zeros (3) A zeros (3) - eye (3) zeros (3) eye (3)]; 40 / 51

Matrici: operazioni Matrici >> A = [ 2 5 4; 6 9 0]; >> B = [ 9 9 9; 2 5 4]; >> A+B 11 14 13 8 14 4 >> C = A- B C = -7-4 -5 4 4-4 >> D = [2 6 ; 5 6; 0 0] D = 2 6 5 6 0 0 >> P = A* D P = 29 42 57 90 La somma fra matrici è definita componente per componente. Il prodotto è definito per matrici di dimensioni opportune: se A P R 2ˆ3, D P R 3ˆ2 allora P AD P R 2ˆ2. P 11 ă A 1, D 1 ą ă p2, 5, 4q, p2, 5, 0q ą 2 2 ` 5 5 ` 4 0 29 41 / 51

Matrici: operazioni Matrici >> A*B Il prodotto deve essere fatto fra Error using * matrici di dimensioni opportune. Inner matrix dimensions must agree. >> A\B 0 0 0 0.2222 0.5556 0.4444 1.9722 1.5556 1.6944 >> A/B -0.0000 1.0000 0.3810 0.4286 A\B A 1 B, mentre A/B AB 1. (Queste due funzioni verranno riprese in dettaglio quando verranno trattati i sistemi lineari.) >> A 2 6 5 9 4 0 >> P^2 3235 4998 6783 10494 A A J. L operazione A^p con A matrice e p P N è possibile solo quando A è quadrata. 42 / 51

Matrici: operazioni punto Matrici Si possono effettuare operazioni componente per componente tra matrici utilizzando le operazioni punto.* e./ >> A = [ 2 5 4; 6 9 0] A = 2 5 4 6 9 0 >> B = [ 9 9 9; 2 5 4] B = 9 9 9 2 5 4 >> E = A.*B E = 18 45 36 12 45 0 E 21 A 21 B 21 >> F = A./B F = 0.2222 0.5556 0.4444 3.0000 1.8000 0 F 21 A 21{B 21 >> G = A.^3 G = 8 125 64 216 729 0 G 11 A 3 11 43 / 51

Matrici: confronto fra matrici Matrici È possibile confrontare gli elementi di due matrici. >> A = [ 2 5 4; 6 9 0]; >> B = [ 9 9 9; 2 5 4]; >> A==B 0 0 0 0 0 0 >> A>B 0 0 0 1 1 0 >> A~=B 1 1 1 1 1 1 >> A <=B 1 1 1 0 0 1 Il confronto viene fatto elemento per elemento. Il risultato è una matrice i cui elementi sono valori logici: 1 sta per TRUE e 0 per FALSE. 44 / 51

Matrici: prodotto matrice-vettore Matrici Il prodotto tra una matrice e un vettore può essere eseguito quando le dimensioni sono opportune: se A P R nˆm e x P R m, allora il prodotto Ax è ben definito e Ax P R n. >> A A = 2 5 4 6 9 0 >> x = [2; 3; 0]; >> b = A* x b = 19 39 b 1 ă A 1, x ą 2 2 ` 5 3 ` 4 0 19 >> y = [5;6]; >> A*y Error using * Attenzione alle dimensioni Inner matrix dimensions must agree. 45 / 51

Script M-files - Script Si consideri l esempio del calcolo del centro di massa di tre punti. I comandi sono i seguenti: 8 7 C 6 >>A = [2.0; 3.0 ]; >>B = [7.0; 4.5 ]; >>C = [4.9; 6.7 ]; >> >> M = (A + B + C) / 3; 5 4 3 2 A M B 1 0 1 1 0 1 2 3 4 5 6 7 8 9 10 Se si volessero cambiare le coordinate dei punti (oppure aggiungerne/toglierne uno/altri), allora si dovrebbe ripartire dall inizio e scrivere tutte le istruzioni... M-file... e invece no! Basta salvare la lista delle istruzioni in quello che viene chiamato M-file. Una volta scritta questa lista e salvato il file, è possibile eseguire questa serie di comandi scrivendo il nome del M-file nella shell di comando. 46 / 51

M-files - Script Script: directory, workspace e variabili Nota bene: per eseguire uno script, è necessario essere nella directory dove tale script è salvato; uno script può accedere a tutte le variabile del workspace corrente, modificandole; tutte le variabili create nello script rimarranno in memoria; per rendere effettive le modifiche effettuate in uno script, è necessario salvarle: quando le modifiche fatte non sono salvate, viene mandata in esecuzione l ultima versione salvata dello script. La presenza di un asterisco nella finestra dell editor accanto al nome del file indica che sono presenti modifiche non salvate; per avviare uno script, si può digitare il nome del file nella shell oppure cliccare sul bottone a forma di play sulla barra di modifica dell editor: in questo secondo modo, le modifiche vengono salvate e le istruzioni contenute nello script vengono eseguite; uno script può chiamare un altro script (p.es. una function (in seguito) ); le prime tre righe del primo script che viene chiamato dovrebbero SEMPRE contenere le seguenti istruzioni: clear all close all clc % cancella tutte le variabili nel workspace % chiude tutte le finestre aperte % cancella tutti i comandi sulla shell 47 / 51

Istruzione if then else Istruzioni di controllo e cicli Istruzioni di controllo L istruzione if then else ha la seguente sintassi: if condition1 instructions_1 else instructions_2 end Se condition_1 è soddisfatta, allora la serie di istruzioni instruction_1 viene eseguita, altrimenti viene eseguita la lista di istruzioni instructions_2. if condition1 instructions_1 elseif condition2 instructions_2... elseif condition_n instructions_n end Se condition_1 è soddisfatta, allora la serie di istruzioni instruction_1 viene eseguita; se condition_2 è soddisfatta, allora la serie di istruzioni instruction_2 viene eseguita e così via. Se l istruzione else non contiene istruzioni può essere omessa 48 / 51

Istruzione switch Istruzioni di controllo e cicli Istruzioni di controllo Se sono presenti molti casi da controllare, è possibile utilizzare l istruzione switch : switch var case number_1 instruction_1 case number_2 instructions_2 (equivale a usare elseif) end otherwise instructions_o Se nessuna delle precedenti è soddisfatta, allora vengono eseguite le istruzioni in instructions_o. Esempio Scrivere uno script MatLab che risolva l equazione di secondo grado ax 2 ` bx ` c 0 dati i coefficienti a, b e c. 49 / 51

Ciclo for Istruzioni di controllo e cicli Cicli Il ciclo for esegue una serie di istruzioni ripetute. Per esempio, se si assegnano i seguenti comandi v = 1:10; for ii = 1:10 v(ii) = v(ii)-ii ^2; end il ciclo scritto percorre tutto il vettore v e ad ogni elemento sostituisce l elemento stesso diminuito di ii 2. v = 0-2 -6-12 -20-30 -42-56 -72-90 SINTASSI VETTORIALE Per eseguire calcoli fra matrici e vettori, evitare il più possibile i cicli for!!! MatLab è creato per eseguire velocemente operazioni fra matrici e vettori in maniera automatica, l utilizzo dei cicli for può far aumentare il tempo di calcolo in maniera notevole. 50 / 51

Ciclo while Istruzioni di controllo e cicli Cicli Il ciclo while esegue una serie di istruzioni finché viene soddisfatta una condizione assegnata. while cond_1 instructions end ATTENZIONE! Bisogna sempre assicurarsi che il ciclo while possa avere termine: a = 1; while a < 5 b = a +1; end Nell esempio, l istruzione b = a+1; viene eseguita fino all esaurimento della memoria disponibile sul calcolatore. 51 / 51