Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Uguale
~
Diverso
<
Minore
>
Maggiore
<
Minore o uguale
>
Maggiore o uguale
&
AND
[
OR (barra verticale)
~
NOT
esempio
ab
a~b
(a<0) & (b<0)
Corso di elementi di programmazione Matlab
Corsi di Studi in Ingegneria Meccanica
ProI. Giulio Concas concasunica.it 6
Comando switch case
Serve quando ci sono una serie di casi previsti con
valori predefiniti
Sintassi
switch variabile
case val1
comandi
case val2
comandi
...
case valN
comandi
otherwise
comandi
end
switch a
case 0
disp('a vale 0`) , disp(a)
case 1
disp('a vale 1`) , disp(a)
otherwise
disp('a ha un valore diverso da 0 ed 1`), disp(a)
end
Corso di elementi di programmazione Matlab
Corsi di Studi in Ingegneria Meccanica
ProI. Giulio Concas concasunica.it 7
Comando for
Sintassi
for variabile inizio:Iine
comandi
end
esempio
b0
for a 1:3
a
bba
end
Il comando for prevede che i comandi siano eseguiti n volte
ed e lesatta trasposi:ione delle formule matematiche quali
la Sommatoria per i da 1 ad n degli elementi di un vettore
J corrisponde esattamente a.
somma0 (ini:iali::o la variabile somma a 0)
for i1:n (eseguo i comandi per i che va da 1 ad n)
sommasommaV(i) (sommo li-esimo di J alla variabile somma)
end
disp(somma) (somma vale esattamente la somma degli elementi di J)
Corso di elementi di programmazione Matlab
Corsi di Studi in Ingegneria Meccanica
ProI. Giulio Concas concasunica.it 8
Esercizio 2.1)
Scrivere uno script M-Iile sommavet.m che dato in ingresso
un vettore V ne calcoli la dimensione con la Iunzione
length(V) e calcoli la somma dei suoi elementi.
Esercizio 2.2)
Scrivere un script M-Iile sommamat.m che data in ingresso
una matrice A ne calcoli la dimensione con la Iunzione
size(A) (veriIicare con help la sintassi) e calcoli la somma
dei suoi elementi.
% Soluzione esercizio 2.1) sommavet.m
V=rand(1,55);
somma=0;
for i=1:length(V)
somma=somma+V(i);
end
disp(somma)
% Soluzione esercizio 2.2) file
sommamat.m
A=rand(33,55); [n,m]=size(A);
somma=0;
for i=1:n
for j=1:m
somma=somma+A(i,j);
end
end
disp(somma)
Corso di elementi di programmazione Matlab
Corsi di Studi in Ingegneria Meccanica
ProI. Giulio Concas concasunica.it 9
Comando while
Il comando while e come il comando for solo che
conclude il ciclo non dopo n passi predefiniti, ma
quando si verifica una condi:ione predefinita.
Sintassi
while condizione
comandi
end
esempio
while a <3
bba
aa1
end
Comando break
Sintassi
break
Corso di elementi di programmazione Matlab
Corsi di Studi in Ingegneria Meccanica
ProI. Giulio Concas concasunica.it 10
Scripts e Funzioni
Matlab e un linguaggio di programma:ione potente, come un
ambiente computa:ionale interattivo.
I Files che contengono codice MATLAB sono chiamati M-files.
Dopo aver creato un M-file usando un qualsiasi editor di testo,
tale file puo essere usato come un comando od una fun:ione
MATLAB.
Ci sono due tipi di M-Iile:
Scripts che non accettano argomenti d`entrata o
argomenti di uscita eseguono i comandi scritti
esattamente come se venissero dati in interattivo ed
operano sulle variabili presenti nel workspace.
Funzioni che possono accettare argomenti d`entrata
e argomenti di uscita e basta, le loro variabili interne
non sono visibili nel workspace.
N.B..
Questi M-Files possono essere richiamati dallambiente
interattivo di Matlab se sono in una directorv presente nel PATH
(di default C.MATLABR11WORK)
Corso di elementi di programmazione Matlab
Corsi di Studi in Ingegneria Meccanica
ProI. Giulio Concas concasunica.it 11
Funzioni
Le Funzioni sono M-Iile che possono accettare argomenti
d`entrata e Iorniscono argomenti di uscita. Il nome dell`M-
Iile e della Iunzione dovrebbero essere lo stesso. Le
Funzioni operano su variabili deIinite nel workspace
proprio, separato dal workspace a cui si accede all`ingresso
di MATLAB, cioe le variabili usate all`interno della
Iunzione sono locali.
SIA1ASSI
function var-output nomefun:ione(par1,par2,.,parN)
dove:
var-output: e la lista di variabili o la variabile che
contiene l`output della Iunzione
nomefun:ione: e il nome della Iunzione e dovrebbe essere
lo stesso dell`M-Iile
par1, .., parN: sono le variabili di output
Le fun:ioni definite dallutente potranno essere richiamate
esattamente come le fun:ioni base di matlab (ad es. det(A))
e la chiamata e basata sul nome del M-file con i parametri
previsti, ed il risultato sara il valore della variabile var-
output.
Corso di elementi di programmazione Matlab
Corsi di Studi in Ingegneria Meccanica
ProI. Giulio Concas concasunica.it 12
Es.
function c = come0(a)
if a<0
c = 'a minore di 0'
elseif a==0
c = 'a uguale a 0'
else
c= 'a maggiore di 0'
end
N.B.. se salvo questa fun:ione di esempio con il nome
pippo.m la dovro richiamare come pippo(a) ed il valore
risultante sara quello contenuto nella variabile di output c
al termine della esecu:ione della fun:ione.
Le fun:ioni per essere richiamate, come ogni M-file devono
essere in una directorv del path (ad esempio
C.MATLABR11work e il default)
Array multidimensionali
Es.
Rrand(3,4,5)
R(:,:,3)
Corso di elementi di programmazione Matlab
Corsi di Studi in Ingegneria Meccanica
ProI. Giulio Concas concasunica.it 13
Esercizio 3.1)
TrasIormare in Iunzione e salvare in un M-File
radiceIun.m l`esercizio 1.3) che rende 2 valori ed ha 3
parametri in ingresso: radicefun(2,6,4)
Esercizio 3.2)
TrasIormare in Iunzione e salvare in un M-File
sommaIun.m l`esercizio 2.2) che rende 1 valore e
riceve in ingresso una matrice: sommafun(A);
(inizializzare una matrice Arand(22,33))
Esercizio 3.3)
Scrivere una Iunzione Iat che calcola il valore di
Iat(n)n*Iat(n-1) e salvarla in un M-File Iat.m.
% Soluzione esercizio 3.1) radicefun.m
function [x1,x2]=radicefun(a,b,c)
delta=b^2 - 4*a*c;
if (a==0)
disp('esiste solo una soluzione');
x1=-c/b
elseif (delta<0)
disp('non esistono soluzioni reali');
else
x1=(-b + sqrt(delta))/(2*a);
x2=(-b - sqrt(delta))/(2*a);
end
Corso di elementi di programmazione Matlab
Corsi di Studi in Ingegneria Meccanica
ProI. Giulio Concas concasunica.it 14
% Soluzione esercizio 3.2) sommafun.m
function somma=sommafun(A)
[n,m]=size(A);
somma=0;
for i=1:n
for j=1:m
somma=somma+A(i,j);
end
end
% Soluzione esercizio 3.3) fat.m
function fatt=fat(N)
if N<0
disp('non esiste il fattoriale di un
numero negativo')
elseif ((N==1)|(N==0))
fatt=1;
else
fatt=1;
for i=1:N
fatt=fatt*i;
end
end