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 linguaggi mettono a disposizione
almeno i seguenti tipi di istruzioni:
Input
Output
Matematiche
Condizionali
Ripetizione
DEI - Univ. Padova (Italia)
Programmare in MatLab
In MatLab ci sono due modi per scrivere le istruzioni e farle eseguire:
Modalità interattiva: ogni istruzione scritta viene valutata
dall’interprete ed immediatamente elaborata
Script: in un file di testo con estensione “.m” si scrive una
sequenza di istruzioni. Si chiede che venga eseguita tutta la
sequenza
DEI - Univ. Padova (Italia)
Cos’è MatLab
MatLab = Matrix Laboratory
Utilizza come oggetti fondamenteali da gestire le matrici:
Una matrice NxM indica una matrice con N righe ed M colonne,
Cioè un oggetto che contiene NxM elementi disposti ordinatamente
su N righe ed M colonne, ed in cui ogni elemento è identificato dalle
sue coordinate.
Matlab consente:
 L’accesso ad un ambiente di calcolo
 L’utilizzo di funzioni specializzate
 La programmazione
DEI - Univ. Padova (Italia)
Perchè MatLab
• Facilità d’uso:
– Ha moltissime funzioni disponibili
– E’ possibile programmare funzioni ad hoc
– Non ci si deve preoccupare di programmazione
a basso livello
• Esportabilità
– Le funzioni MatLab sono file di testo
DEI - Univ. Padova (Italia)
Lanciare l’ambiente Matlab
Digitare dalla shell di comandi:
>> matlab
Oppure fare doppio click sull’icona di Matlab presente sul desktop
DEI - Univ. Padova (Italia)
La Command Window
Pannelli ausiliari
DEI - Univ. Padova (Italia)
Spazio di lavoro
(workspace)
Istruzione: linea di comando
Istruzione Matlab
da digitare al prompt dello
spazio di lavoro
Cosa voglio fare
stampa la somma di –1.42 e 3.27
>> –1.42+3.27
ans =
1.8500
>>
DEI - Univ. Padova (Italia)
Command Window in modalità interattiva
DEI - Univ. Padova (Italia)
Istruzione: script
Cosa voglio fare
stampa la somma di –1.42 e 3.27
File test.m
A = –1.42
B = 3.27
C = A + B
disp(C)
Dal prompt dello
spazio di lavoro
>> test
DEI - Univ. Padova (Italia)
Punti e virgole
ATTENZIONE!
Il separatore tra la parte intera e frazionaria di un numero è il
punto !
La virgola indica oggetti diversi di una lista …
>>> 1200300
ans =
1200300
>>> 1,200,300 ??
DEI - Univ. Padova (Italia)
Gli ingredienti: variabili
Le variabili sono nomi che si riferiscono ad un
valore.
L’istruzione di assegnazione crea una variabile e le
assegna un valore
>> A = –1.42;
>> B = 3.27;
>> C = ‘Sequenza di caratteri’;
DEI - Univ. Padova (Italia)
Operazioni di assegnazione
>> a=18
Alla variabile “a” è assegnato il valore 18
a =
Matlab fa eco del risultato della operazione
18
>>
>> a=18;
>>
DEI - Univ. Padova (Italia)
Il prompt segnala che Matlab è pronto per
un’altra operazione
Terminando una operazione con “;” Matlab
non fa eco.
Nomi di variabili
Le variabili possono avere qualsiasi nome a patto
che:
 Non inizi con un numero
 Non contenga i caratteri specialii $, %, @, #, !,
&, ‘,
 Non contenga operatori:
*,+,-,/,^
 Non devono essere parole riservate, tra cui:
break, catch, class, continue, if,
else, for, global, return, try,
while …
 Non possono contenere spazi
DEI - Univ. Padova (Italia)
Operazioni aritmetiche
Gli operatori aritmetici e di elevamento a potenza
(^) hanno l’usuale significato per le operazioni fra
numeri in Matlab:
>>> 20+32;
>>> A=5;
>>> A^2;
DEI - Univ. Padova (Italia)
Precedenze
L’ordine di esecuzione delle operazioni segue le
regole di precedenza matematiche.
Per modificare l’ordine devo utilizzare vle
parentesi:
>> (20+32)^2
DEI - Univ. Padova (Italia)
Gestione dello spazio di lavoro
who
produce la lista delle variabili nel workspace
whos
la lista contiene informazioni su tipo e dimensioni
clear
elimina tutte le variabili nel workspace
clear <nomevariabile> cancella solo la variabile con nome nomevariabile
DEI - Univ. Padova (Italia)
Salvataggio e Caricamento
save <nomefile> salva nel file nomefile.mat tutte le variabili del workspace
load < nomefile > carica nel workspace tutte le variabili presenti in nomefile.mat
save < nomefile > < nomevar > salva nel file nomefile.mat le variabili in nomevar
load < nomefile > < nomevar > carica nel workspace le variabili nomevar del file
nomefile.mat
Osservazioni:
con l’opzione –ASCII i comandi precedenti leggono/salvano file di testo
è possibile utilizzare la forma funzionale s=load(nomefile);
DEI - Univ. Padova (Italia)
Richiamare i comandi: limitare la fatica inutile
>> <FrecciaSu>,<FrecciaGiu>
Richiama i comandi già dati dalla
Command Window
>> test + <FrecciaSu>,<FrecciaGiu>
Richiama i comandi già dati dalla
Command Window che cominciano
con test
DEI - Univ. Padova (Italia)
Help di Matlab
DEI - Univ. Padova (Italia)
Help di Matlab
>> help NomeComando
Help in linea per il comando NomeComando
>> help min
MIN Smallest component.
For vectors, MIN(X) is the smallest element in X. For matrices,
MIN(X) is a row vector containing the minimum element from each
column. For N-D arrays, MIN(X) operates along the first
non-singleton dimension.
[Y,I] = MIN(X) returns the indices of the minimum values in vector I.
If the values along the first non-singleton dimension contain more
than one minimal element, the index of the first one is returned.
MIN(X,Y) returns an array the same size as X and Y with the
smallest elements taken from X or Y. Either one can be a scalar.
[Y,I] = MIN(X,[],DIM) operates along the dimension DIM.
When complex, the magnitude MIN(ABS(X)) is used, and the angle
ANGLE(X) is ignored. NaN's are ignored when computing the minimum.
Example: If X = [2 8 4 then min(X,[],1) is [2 3 4],
7 3 9]
…
DEI - Univ. Padova (Italia)
>>
... e quando non si sa che pesci pigliare
>> lookfor NomeComando
Ricerca in tutto l’help in linea la parola NomeComando
>> lookfor mean
RETmeandir.m: % Compute the mean direction of the barycenters distant between 20 and
MEAN Average or mean value.
LMS Construct a least mean square (LMS) adaptive algorithm object.
EQ_GETOPT Computes Equalizer coefficients that minimizes the Mean Square
GWNOISE generate valid mean value, standard deviation and seeds for GWNOISE block.
DSPBLKMEAN Signal Processing Blockset Mean block helper function.
DSPBLKMEAN2 Signal Processing Blockset Mean block helper function.
MEAN2 Compute mean of matrix elements.
ipexhistology.m: %% Color-Based Segmentation Using K-Means Clustering
DMAE Mean absolute error performance derivative function.
DMSE Mean squared error performance derivatives function.
DMSEREG Mean squared error w/reg performance derivative function.
MAE Mean absolute error performance function.
MSE Mean squared error performance function.
…
…
DEI - Univ. Padova (Italia)
Operazioni di confronto
E’ possibile dover confrontare se due variabili siano uguali,
diverse, oppure se una sia maggiore dell’altra.
Le istruzioni che operano questi confronti sono espressioni
booleane in quanto restituiscono un valore binario (vero o
falso).
Il valore vero corrisponde al numero 1
Il valore falso corrisponde al numero 0
>> 20>32
ans =
0
>>
DEI - Univ. Padova (Italia)
Operatori di confronto
>
<
>=
<=
==
~=
~
maggiore
minore
maggiore o uguale
minore o uguale
uguale
diverso
negazione
ATTENZIONE!
L’operatore “=“ indica una assegnazione, mentre
l’operatore logico di controllo dell’uguaglianza è “==“
DEI - Univ. Padova (Italia)
Operatori di confronto
Ricordando che 0 corrisponde a vero e 1
corrisponde a falso:
>> while 1,
disp(‘Sono all’interno del ciclo’);
end;
entra in un ciclo infinito
DEI - Univ. Padova (Italia)
Operatori di confronto
Ricordando che 0 corrisponde a vero e 1
corrisponde a falso:
>> a=2;
>> while (a=1),
disp(‘Sono all’interno del ciclo’);
a=a+a;
end;
entra anch’esso in un ciclo infinito.
Perchè?
DEI - Univ. Padova (Italia)
Scarica

Lezione06