Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MATLAB/Octave
Introduzione, input/output, script, strutture di controllo
Informatica B
Matlab
! Cos’è Matlab:
! strumento (e corrispondente linguaggio) per elaborazioni di
calcolo numerico
! NB: sta per MATrix LABoratory
» centrato sulle matrici (ma include generiche funzionalità matematiche)
! usato nei successivi corsi di calcolo numerico
! MATLAB è uno strumento commerciale
! distribuito, su licenza NON gratuita, da “The MathWorks Inc”
! Student edition disponibile qui http://www.software.polimi.it
! Esiste un altro strumento di nome Octave
! identico nella concezione, molto simile per gli aspetti operativi
! disponibile gratuitamente, vedi www.gnu.org/software/octave/
-2-
Caratteristiche del linguaggio di Matlab/
Octave (1)
-3-
Caratteristiche del linguaggio di Matlab/
Octave (2)
! Linguaggio dinamico
! NON occorre dichiarare le variabili
! risultano definite dal punto in cui vengono introdotte
– e vengono incluse in una struttura detta tabella dei simboli
! il tipo delle variabili è dinamico
! a una variabile si possono assegnare, successivamente, valori
di tipo diverso (scalari, stringhe, vettori, matrici...)
! Esempio
! a = 10;
! b = 20.5;
! a+b
! a = ‘stringa’
! a cambia tipo dopo l’ultimo assegnamento di valore
-4-
Screenshot interfaccia MATLAB
Contenuto della
directory corrente
-5-
Screenshot dell’interfaccia
OCTAVE
-6-
Comandi in Matlab
-7-
Esempi
Input Output Commento
- 11 -
Diagrammi a due dimensioni
! Diagramma = insieme di coppie che rappresentano coordinate
di punti
! Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinate
! plot(x,y) disegna diagramma cartesiano dei punti che hanno
! valori delle ascisse in x, delle ordinate in y
! e li congiunge con una linea, per dare continuità al grafico
! funzioni xlabel per visualizzare nome asse ascisse, ylabel per
ordinate, title per il titolo 1000
cubica
800
ordinate
>> xlabel('ascisse'); 0
-600
-800
- 12 - -1000
-10 -8 -6 -4 -2 0 2 4 6 8 10
ascisse
Un esempio di cinematica
- 13 -
Soluzione
t=0:1:300;
p1=50 * t;
p2=15000 – 30 * t;
plot(t,p1);
hold on %adesso è possibile inserire nuove curve sul grafico
plot(t,p2)
hold off
- 14 -
Risultati ottenuti con l’esempio
- 15 -
Istruzioni e ‘;’
- 16 -
Commenti
- 17 -
Continuazione di linea
! %equivalente a
! x = [(2+3)/2 (3+4)/3 …
! (5+6)/4]
- 18 -
Input/output
Acquisizione dati da tastiera
! Funzione input
! valore = input(‘inserisci un valore ‘);
! Matlab stampa a video la stringa ‘inserisci un valore’
ed aspetta di ricevere un dato
! Valore scalare
! Array racchiuso tra [ e ]
! Stringa racchiusa tra ‘ e ’
! Il dato inserito dall’utente viene memorizzato nella
variabile valore
- 20 -
Stampa dei risultati (1)
- 21 -
Stampa dei risultati (2)
! …altro modo
! fprintf
! fprintf(‘Il valore di pi e` %f \n’, pi);
! stringhe di formato: %d (interi), %e (formato
esponenziale), %f (virgola mobile), %g (il più corto tra il
formato esponenziale e quello in virgola mobile)
! disp vs. fprintf
! disp è in grado di stampare anche valori complessi
! x=2*(1-2*i)^3;
! str=[‘disp: x = ‘ num2str(x)];
! disp(str); disp: x = -22+4i
! fprintf ne stampa solo la parte reale
! fprintf(‘fprintf: x = %8.4f\n’, x); fprintf: x =
-22.0000
- 22 -
Script in MATLAB
Script (m-file)
- 24 -
Script: caratteristiche principali
- 25 -
Come creare uno script
- 27 -
Suggerimenti per strutturare e
documentare uno script
1. Sezione dei commenti:
! Il nome del programma e una breve descrizione, nella prima riga
! La data di creazione e i nomi degli autori nella seconda riga
! La definizione dei nomi delle variabili per ogni variabile di input e di
output
! Il nome di ogni funzione creata dall’utente che viene usata nel
programma (ne parleremo tra qualche lezione)
! Il comando help visualizza tutta la sezione dei commenti all’inizio dello
script
2. Sezione di Input: inserimento dei dati in input e/o uso di
funzioni di input
3. Sezione di calcolo
4. Sezione di output: uso di funzioni per visualizzare i risultati
del programma
- 28 -
Dati su cui opera uno script file
! Usano
! variabili già presenti nel workspace
! variabili acquisite da tastiera o file
! nuove variabili introdotte nello script
! A differenza delle funzioni, non accettano argomenti
d’entrata e d’uscita
- 29 -
Sezione di calcolo
! Calcoli matematici
! Assegnamenti
! Strutture di controllo
! Condizioni
! Cicli
! Comandi per la costruzione di grafici
! Chiamate a funzioni
- 30 -
Strutture di controllo
- 31 -
Istruzioni della programmazione strutturata: if e while
>> x=3;
>> quadWhile
>>x=15; >>x=8; >>x=17;
quad = >>divisible >>divisible
1 4 9 >> divisible
divisible by 3 even prime or divisible by x>5
>>
- 32 -
Il costrutto if
34
Il costrutto switch: esempio
- 35 -
Il ciclo while
while espressione
istruzioni da ripetere finché espressione è vera
end
! espressione deve essere inizializzata (avere un valore) prima
dell’inizio del ciclo
! Il valore di espressione deve cambiare nelle ripetizioni
! Esempio: Calcoliamo gli interessi fino al raddoppio del capitale
value = 1000;
year = 0;
while value < 2000
value = value * 1.08
year = year + 1;
fprintf('%g years: $%g\n', year,value)
end
36
Il ciclo for
38
Esempi
! Inizializzazione dell’indice del for a partire da una matrice
board = [ 1 1 1 ; 1 1 -1 ; 0 1 0 ];
for x = board 1
x alla prima iterazione x e` il vettore colonna 1
0
end
! Inizializzazione dell’indice del for a partire da una stringa
for x = 'EGR106‘
disp(x) %alla prima iterazione x vale ‘E’
end
39