Sei sulla pagina 1di 4

Corso di elementi di programmazione Matlab

Corsi di Studi in Ingegneria Meccanica


ProI. Giulio Concas concasunica.it 1
Input ed Output
save nomeIile
load nomeIile
(il file puo essere od un .mat, e quindi contenere i dati
in formato binario, od un ascii file, quindi con i dati
in formato testo)
diary nomeIile
diary oII
(salva la sequen:a di comandi di una sessione, finche
non si da il comando diarv off)
disp(stringa)
disp(variabile)
(manda a schermo il valore della variabile o della
stringa)
es.
disp(inserisci il valore di a`)
disp(a)
varinput(stringa)
es.
ainput(inserisci il valore di a`)
Stringhe
Es s1Ciao` s2`Giulio` s12|s1,s2| s22|s1;s2|
Corso di elementi di programmazione Matlab
Corsi di Studi in Ingegneria Meccanica
ProI. Giulio Concas concasunica.it 2
Comando if
Sintassi 1)
if condizione
comandi
end
Sintassi 2)
if condizione
comandi
else
comandi
end
Sintassi 3)
if condizione
comandi
elseif condizione
comandi
else
comandi
end
esempio
if a0
disp(a uguale a 0`)
else
disp(a diverso da 0`)
end
Corso di elementi di programmazione Matlab
Corsi di Studi in Ingegneria Meccanica
ProI. Giulio Concas concasunica.it 3
Il significato del comando if e poter gestire casi
particolari a seconda dei valori in input attraverso
script files (M-files) che possono essere richiamati da
Matlab
Esercizio 1)
Salvare in un M-Iile di nome radice1.m la procedura per il
calcolo delle radici di un`equazione di secondo grado del
tipo ax
2
bxc0 (sqrt e la Iunzione radice quadra)
(testarla con i valori a2 b5,2 c2).
x1(-b sqrt(b
2
- 4ac))/2a e x2(-b - sqrt(b
2
- 4ac))/2a
Esercizio 1.1)
Salvare in un M-Iile di nome radice2.m la procedura per il
calcolo delle radici di un`equazione di secondo grado del
tipo ax
2
bxc0 considerando il caso della radice negativa
quindi usando il comando if (sqrt e la Iunzione radice
quadra) (testarla con i valori a2 b1 c2).
x1(-b sqrt(b
2
- 4ac))/2a e x2(-b - sqrt(b
2
- 4ac))/2a
Esercizio 1.2)
Salvare in un M-Iile di nome radice2.m la procedura per il
calcolo delle radici di un`equazione di secondo grado del
tipo ax
2
bxc0 considerando il caso della radice negativa
ed anche il caso di a0. quindi usando il comando if (sqrt e
la Iunzione radice quadra) prevedere che i dati vengano dati
attraverso direttamente da tastiera e quindi con il comando
varinput (testarla con i valori a0 b1 c2).
x1(-b sqrt(b
2
- 4ac))/2a e x2(-b - sqrt(b
2
- 4ac))/2a
Corso di elementi di programmazione Matlab
Corsi di Studi in Ingegneria Meccanica
ProI. Giulio Concas concasunica.it 4
M-files con le soluzioni
% Soluzione esercizio 1) file radice1.m
a=2, b=3, c=2
x1=(-b + sqrt(b^2 - 4*a*c))/(2*a)
x2=(-b - sqrt(b^2 - 4*a*c))/(2*a)
% Soluzione esercizio 1.1) radice2.m
a=2, b=3, c=4
delta=b^2 - 4*a*c
if (delta<0)
disp('non esistono soluzioni reali')
else
x1=(-b + sqrt(delta))/(2*a)
x2=(-b - sqrt(delta))/(2*a)
end
% Soluzione esercizio 1.2) radice3.m
a=input('inserire a: ');
b=input('inserire b: ');
c=input('inserire c: ');
delta=b^2 - 4*a*c
if (a==0)
disp('esiste solo una soluzione')
x=-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 5
Operatori di conIronto

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

Potrebbero piacerti anche