Sunteți pe pagina 1din 13

Curs 2

Elemente fundamentale de programare în Matlab. Funcţii


elementare în Matlab şi instrucţiuni de control logic

Introducere
Un mare număr de funcţii sunt construite direct în Matlab. Ele se
pot apela folosind numele funcţiei împreună cu parametrii care
definesc funcţia. Aceste funcţii pot returna una sau mai multe
valori. Tot în cadrul acestui curs sunt prezentate instrucţiuni de
control logic, precum şi comenzi de citire şi afişare în Matlab.

Obiective
Studentul trebuie să cunoască noţiuni introductive de Matlab, să fie
capabil să scrie fişiere în Matlab, precum şi instrucţiuni de control
logic.

Durata medie a studiului: 2 ore


Funcţii elementare în Matlab
Toate numele funcţiilor trebuie scrise obligatoriu cu litere mici. Sintaxa
generală cu care se apelează toate funcţiile în Matlab este:
x = nume_functie(argument)
O mică parte din funcţiile Matlab sunt date mai jos:
- sqrt calculează radicalul de ordinul doi:
f = sqrt(2*x^3+2);
- abs calculează valoarea absolută (modulul):â
f = abs(x+2)/y;
- conj calculează conjugata:
f = conj(6*x);
- sin calculează sinusul:
f = sin(8*x)+4.3*x;
- log calculează logaritmul natural:
f = log(4.5*x+10);
- log2 calculează logaritmul în baza doi:
f = log2(2.4*x);
- log10 calculează logaritmul zecimal:
f = log10(10-2*x);
- cosh calculează cosinusul hyperbolic:
f = cosh(pi*x);
- exp calculează exponenţiala:
f = 0.6*exp(y+6);
- expm calculează exponenţialul matricei:
F = expm(M+N);
- sqrtm calculează radicalul matricei:
F = sqrtm(P);
- imag extrage partea imaginară:
f = imag(y);
- real extrage partea reală:
f = real(y);
- angle calculează faza (unghiul) în radiani:
f = angle(x);
În completarea numărului mare de funcţii matematice în Matlab sunt
prevăzute câteva funcţii utile care pot fi folosite în examinarea operaţiei de scriere.
Acestea sunt:

- clock afişează data şi ora curentă sub forma:


[an luna zi oră minut secundă];
- etime(t2,t1) calculează trecerea timpului de la variabila de timp t1 la variabila
de timp t2. Aceată funcţie este folositoare pentru calcularea timpului necesar
executării unor segmente scrise în program;
- tic, toc este o cale alternativă pentru găsirea timpului necesar executării unui
segment din program (scriere). Funcţia tic porneşte calcularea timpului şi funcţia
toc afişează timpul trecut de la ultima apelare a functiei tic;
- cputime afişează timpul trecut (în secunde) de când Matlab-ul a fost lansat în
execuţie;
- flops permite utilizatorului să verifice numărul de operaţii cheie, adică numărul
total de adunări, scăderi, multiplicări şi împărţiri într-un segment al scrierii;
- echo on duce fiecare line în fereastra de comenzi înainte de execuţie. Această
funcţie este folosită pentru demonstaţii. Pentru oprirea acestei funcţii se foloseşte
funcţia echo off. [18], [24]

Alte funcţii Matlab


Funcţiile min şi max determină minimul, respectiv maximul unui vector, dacă
argumentul v este un vector sau al unei matrici, dacă M este o matrice.
min (v) min (M)
max (v) max (M)
Funcţiile sum şi prod calculează suma, respectiv produsul elementelor unui vector
(v) sau ale unei matrici (M).
sum (v) sum (M)
prod (v) prod (M)
sort - sortează în ordine crescătoare elementele unui vector sau ale unei matrici.
[ Y , I ] = sort (x)
Y = elementele coloanelor sortate în ordine ascendentă
I = indicii elementelor sortate
Funcţiile mean şi median determină media aritmetică şi mediana (elementul
de la mijlocul unui set de date ordonat crescător) unui vector sau a unei matrice.
feval - evaluează funcţii Matlab
eval - evaluează şiruri de caractere cu expresii Matlab

Instrucţiuni în Matlab

Instrucţiunea “if“

În multe cazuri este necesară selectarea grupului de instrucţiuni de executat


în funcţie de o condiţie logică. Aceasta poate fi executată cu ajutorul instrucţiunii
if. Acesta se încheie cu end şi poate avea operatori relaţionali în expresia
matematică. Combinarea a două sau mai multe expresii logice se face cu ajutorul
operatorilor logici.
Cea mai simplă formă de apelare este:
if expr_logică
grup_de_instrucţiuni
end
Instrucţiunea if poate fi completată cu două clauze (else şi elseif) permiţând
introducerea mai multor nivele de instrucţiuni ramificate
Clauza “else”

Clauza else este utilizată pentru a executa un set de instrucţiuni, dacă expresia
logică este Adevărată şi un alt set de instrucţiuni dacă expresia logică este Falsă.
[6], [20], [24]
Forma generală de apelare a clauzei else este:
if expr_logică
grup_de_instrucţiuni_1
else
grup_de_instrucţiuni_2
end

Clauza “elseif”

Clauza elseif se foloseşte atunci când funcţia de calculat are mai multe
nivele de instrucţiuni elseif. [6], [20], [24]
Forma generală de apelare a clauzei elseif este:
if expr_logică 1
grup_de_instrucţiuni_1
elseif expr_logică 2
grup_de_instrucţiuni_2
elseif expr_logică 3
grup_de_instrucţiuni_3
-------------------------------------
else
grup_de_instrucţiuni_n
end
Instrucţiunea “for”

În situaţiile în care este necesară repetarea unui grup de instrucţiuni de un număr


predefinit de ori se utilizează instrucţiunea repetitivă for. [6], [24], [20]

Structura generală a acestei instrucţiuni:


for index = expresie
grup_de_instrucţiuni
end
unde index este o variabilă numită numele contorului, iar expresie poate fi o
matrice, un vector sau un scalar, în cele mai multe cazuri este un vector de forma:
g = val. iniţială : pas : val. Finală

Instrucţiunea “while”

În cazul în care un grup de instrucţiuni trebuie repetat până când o anumită


condiţie, testată la începutul fiecărei iteraţii, este îndeplinită este folosită
instrucţiunea while. [20], [24]
Structura generală a acestei instrucţiuni este :
while expresie
grup_de_instrucţiuni
end

Instrucţiunea “break”

Pentru a ieşi dintr-o buclă înainte ca aceasta să se fi terminat se utilizează


instrucţiunea break.
Se apelează cu sintaxa:
break
Instrucţiunea “error”

Instrucţiunea error afişează mesaje la întâlnirea unei erori. Se apelează cu sintaxa:


error(‘msj’)
afişează şirul ‘msj’ şi întrerupe forţat execuţia funcţiei (sau scriptului), cu revenire
în Matlab.

Comenzi de citire şi afişare în Matlab

Comanda “input”

Are ca parametru un şir de caractere. La execuţie se afişează şirul de caractere


şi se aşteaptă răspunsul utilizatorului.
De exemplu comanda:
h = input ( ‘ introduceţi variabila x : ‘ )
afişează mesajul, iar valorile pe care le introduce utilizatorul ca răspuns la mesaj
sunt atribuite variabilei x. [18], [20], [22]

Comanda “disp”

Afişează valoarea unei matrici fără a tipări numele ei. Dacă matricea este un mesaj
va tipări respectivul mesaj (text).
Se apelază cu sintaxa:
disp(A)
unde A este un text şir sau o matrice. [6], [20]
Formatul în care valorile numerice vor fi afişate poate fi modificat de utilizator
prin instrucţiunile:
format short % 5 cifre semnificative cu virgulă fixă
format long % 15 cifre semnificative cu virgulă fixă
format short e % 5 cifre semnificative cu exponent
format long e % 15 cifre semnificative cu exponent

Comanda “fprintf”

Permite tipărirea unui mesaj şi a unei liste de variabile pe ecran sau într-un
fişier. Se apelează cu sintaxa:
fprintf ( ‘ filename ‘ , ‘ format string ‘ , lista )
unde: - lista este o listă de nume de variabile separate prin virgulă
- filename este numele fişierului care este un parametru opţional
Elementele folosite în ‘ format string ‘ sunt:
% P.Qe – pentru operaţii exponenţiale
% P.Qf – numere reale
% P.Qg – scrierea numărului în formatul cel mai potrivit (% P.Qe sau % P.Qf )
\ n operatorul pentru linie nouă.
P şi Q sunt întregi.
unde: P setează lăţimea punctului de afişare, iar Q setează numărul de locaţii pe
care va fi aşezată partea zecimală a numărului ce urmează a fi afişat.
De exemplu % 5.3f – este un număr real cu lăţimea câmpului de afişare de 5
caractere, din care 3 este numărul de caractere pe care se afişează partea zecimală
a numărului real. [18], [22]

Comanda “pause”

Introduce o pauză de câteve secunde sau aşteaptă apăsarea unei taste pentru a relua
execuţia următoare.
De exemplu comanda:
pause(n)
introduce în execuţia programului o întârziere de n secunde.

Comenzile “save” şi “load”

Sunt comenzi de încărcare şi salvare a fişierelor de pe (pe) discul curent.


Încărcarea unui fişier de date se face cu funcţia load, se apelează cu sintaxa:
load nume_fis format
unde nume_fis este numele fişierului de date care se doreşte a se încărca, iar format
este formatul datelor (ASCII sau BINAR) în acel fişier.
Salvarea variabilelor în spaţiul de lucru foloseşte funcţia save; se apelează cu
sintaxa:
save nume_fis num_variabile format
unde nume_fis este numele fişierului de date în care se stochează variabilele din
lista num_variabile în formatul format.
În cazul când comanda save este folosită fără alte specificaţii:
save
- toate variabilele sunt salvate în fişierul matlab.mat
Dacă se specifică după comanda save un nume de fişier atunci salvarea tuturor
variabilelor se face în fişierul nume_fis.mat,
save nume_fis
iar când vrem să regăsim variabilele vom scrie:
load nume_fis
Dacă nu se doreşte salvarea tuturor variabilelor se selectează numele ce urmează a
fi salvate . De exemplu:
save nume_fis a b c
Pentru regăsirea lor în fişierul nume_fis.mat vom da comanda
load nume_fis
fără numele variabilelor. [18], [22]
Exemple

2.1. Să se determine valorile minime şi maxime ale unui vector şi ale unei matrice:
V = [ 1 2 –8 0 ]
M = [ 1 2 3 ; - 4 0 9 ; 13 7 –10 ]
A = max (V)
B = min (V)
C = max (M)
D = min (M)

se obţin rezultatele:
A=2 C = [ 13 7 9 ]
B = -8 D = [ -4 0 -10]

2.2. Să se determine suma şi produsul vectorului şi matricei de mai jos


Sl = sum ( [ 1 3 –9 0 ] )
Sl = -5
Sc = sum ([ 1 3 –9 0 ]‘)
Sc = -5
Sm = sum ([ 1 2 3 ; - 4 0 9 ; 13 7 –10 ])
Sm = 10 9 2

Pl = prod ( [ 1 3 9 2 ] )
Pl = 54
Pc = prod ( [ 1 3 9 2 ] ‘ )
Pc = 54
Pm = prod ([ 1 2 3 ; - 4 0 9 ; 13 7 –10 ] )
Pm = -52 0 -270

2.3. Să se sorteze vectorii şi matricea de mai jos în ordine crescătoare


Vl = sort ( [ 3 8 2 5 ] )
Vl = 2 3 5 8
Vc = sort ( [ 7 4 1 5 ] ‘ )
Vc = 1
4
5
7
M = sort ( [ 8 2 9 ; 1 7 3 ] )
M=1 2 3
8 7 9

2.4. O instrucţiune de condiţionare simplă este:


if x = = 0
y=z
k=5+z
end

2.5. Fie funcţia:

3x - 5, dacă ≤ 3
f (x ) = 
5x 2 , dacă > 3

În Matlab avem:
if x <= 3
f = 3*x-5
else
f=5*x^2
end
2. 6.Să se genereze o matrice M , cu n linii şi n+1 coloane ale cărei elemente sunt:

 1 , dacă k = p

G =  − 1 , dacă k < p
 0 , în rest

În Matlab avem:
n=2
for k=1:n
for p=1:m
if k==p
z(k,p)=1;
t=t + z(k,p)
elseif k<p
z (k,p)=-1
t=t + z(k,p)
else
z(k,p)=0
end
end
end

2.7. Prezentăm un exemplu simplu de utilizare a instrucţiunii for:

for g = 1: 3 : 10
h=2*g
end

2.8. Prezentăm un exemplu de utilizare a instrucţiunii while:


g=1
while g < 8
g = g + 1;
h=g^2
end
Executarea grupului de instrucţiuni este repetată atâta timp cât “expresie” are toate
elementele nenule .
Vectorul rezultat în urma executării acestei secvenţe de program este:
B = [ 4 9 16 25 36 49 64]

2.9. Secvenţa de comenzi:

x=2.678;
disp(['valoarea iteraţiei este', num2str(x), 'la acest nivel'])
afişează:
valoarea iteratiei este 2.678 la acest nivel.
sau
y=ones(3); disp(y)
afişează:
1 1 1
1 1 1
1 1 1

2.10. Secvenţa de comenzi:


x = 1007.46; y = 2.1278; k = 17;
fprintf (‘ \nx = %8.2f y = %8.6f k = %2.0f \n ‘,x ,y ,k );
afişează:
x = 1007.46 y = 2.127800 k = 17
Comanda: fprintf (‘ format exponenţial: %18.5e\n’ , 156789.1)
va afişa:
format exponential: 1.56789e+005

S-ar putea să vă placă și