Sunteți pe pagina 1din 23

1

1. Ce este MATLAB-ul?

MATLAB-ul (denumirea vine de la "matrix laboratory") este un mediu
computaional, dezvoltat de firma The Math Works Inc., dedicat calculului numeric i
vizualizrii datelor prin intermediul reprezentrilor grafice. Este de asemenea un pachet
de programe de nalt performan i un limbaj de programare al crui element de baz
este matricea ( scalar, vector, matrice sau tablouri multi-dimensionale ). El integreaz
analiza numeric, calculul matriceal, procesarea semnalelor i reprezentrile grafice ntr-
un mediu uor de nvat i de folosit.

MATLAB-ul include aplicaii specifice, numite TOOLBOX-uri. Acestea sunt
colecii extinse de funcii MATLAB ( fiiere-M ) care dezvolt mediul de programare de
la o versiune la alta, pentru a rezolva probleme din domenii variate. Structural,
MATLAB-ul este realizat sub forma unui nucleu de baz, cu interpretor propriu, n jurul
cruia sunt construite toolbox-urile. Astfel, una dintre facilitile pe care le ofer
MATLAB-ul const n posibilitatea de extindere, care const n crearea unor noi funcii
n limbajul MATLAB care pot fi folosite n acelai mod precum funciile predefinite n
mediul MATLAB. De fapt, toolbox-urile care extind funcionalitatea MATLAB-ului sunt
definite n acest mod.

2. Modul de lucru n MATLAB

Putem scrie comenzi n mod interactiv n linia de comand, caz n care fiecare
linie este prelucrat imediat i rezultatele sunt afiate, sau le putem salva n fiiere-M.
Fiierele ce conin instruciuni MATLAB se numesc fiiere-M ( deoarece au extensia
.m ) i sunt programe MATLAB. Un fiier-M const dintr-o succesiune de instruciuni
MATLAB; avnd posibilitatea de a apela alte fiiere-M i a apelrii recursive.
Un program MATLAB poate fi scris sub forma fiierelor script sau a fiierelor
function ( aceste tipuri de fiiere obligatoriu cu extensia .m permit crearea de noi
funcii care le pot completa pe cele existente ). Prin aceast facilitate, MATLAB-ul poate
fi extins la aplicaii specifice utilizatorului, care are posibilitatea s scrie noi funcii.
2

3. Utilizarea help-ului n MATLAB

Una dintre posibilitile de a obine informaii legate de funciile MATLAB sau
realizate de un utilizator al pachetului de programe este utilizarea sistemului de help a
MATLAB-ului. Funciile din aceast seciune permit obinerea informaiilor de interes
general referitoare la mediul de lucru MATLAB.

Modaliti de obinere de informaii utiliznd help-ul n MATLAB:

a. n linia de comand: tastm help nume, unde nume poate fi un nume de
funcie sau un nume de director. Dac acesta este un nume de funcie n
linia de comand vor aprea informaiile de care avem nevoie despre
funcia cutat, dar acestea nu vor conine toate posibilitile i utilizrile
acesteia. Se furnizeaz de asemenea nu doar informaii despre funcia
cutat, ci se ofer i trimiteri ctre alte funcii nrudite. Dac nume este
nume de director, help-ul afieaz fiierele coninute n directorul
specificat.
b. din meniu: fiierele help pot fi accesate i folosind help-ul din meniu.
Informaiile pot fi obinute folosind index.


4. Gestiunea fiierelor i a zonei de memorie

MATLAB-ul reine comenzile folosite i valorile variabilelor create n timpul
unei sesiuni. Aceste variabile sunt reinute n zona de memorie a MATLAB-ului numit
workspace. Valorile acestor variabile pot fi aflate tastnd n linia de comand numele
variabilei fr a folosi vreun semn de punctuaie la sfritul acesteia. Trebuie reinut
faptul c MATLAB-ul este case sensitive, deci Temp, temp sau TEMP reprezint
variabile diferite. n MATLAB, comenzile utilizate apar ntr-o fereastr separat numit
command history. Acestea pot fi reutilizate sau reeditate n linia de comand folosind
sgeile.
3

- Funcii pentru controlul directoarelor i fiierelor

Comanda utilizare

dir, ls afieaz numele tuturor fiierelor din directorul
curent sau din orice alt director precizat ca
argument
delete nume_fiier permite tergerea unui fiier sau a unui grafic
cd, pwd returneaz numele directorului curent
cd cale/nume_director schimb directorul
type nume_fiier afieaz fiierul nume_fiier pe ecran, fr a-l
putea modifica
edit nume_fiier returneaz fiierul nume_fiier n care se pot
face modificri
which nume_fiier returneaz calea n care este localizat un fiier
sau o funcie MATLAB. Aceast comand
poate fi utilizat pentru a determina dac un
fiier face parte dintr-un pachet MATLAB
standard
what returneaz fiierele *.m, *.mat, *.mex din
directorul curent

- Comenzi utilizate n gestionarea workspace-ului

Comanda utilizare

who listeaz variabilele curente din memorie
whos listeaz variabilele curente, dimensiunile lor,
precum i tipul lor ( reale sau complexe )

clear terge toate variabilele din memorie
4

clear x y terge variabilele x i y din memorie

5. Matrice, vectori i scalari. Declaraii i variabile.

Elementul de baz cu care lucreaz MATLAB-ul este matricea. n MATLAB
scalarii sunt asimilai matricelor de dimensiune 1 1 i vectorii sunt asimilai matricelor
de dimensiune 1 n sau n 1. Elementele unei matrice A pot fi identificate prin notaia
A(i,j) i semnific elementul de la intersecia liniei i cu coloana j. Elementele unei
matrice pot fi numere reale ( tipul de baz n MATLAB este double ) sau complexe,
precum i orice expresie MATLAB.
Introducerea explicit (de la tastatur) a unei matrice se realizeaz innd cont de
urmtoarele reguli:
Elementele unei linii trebuie separate prin blank-uri sau virgule;
Liniile se separ prin punct-virgul ; ;
Elementele matricei sunt cuprinse ntre paranteze drepte [ ].
Exemplu: O matrice introdus cu secvena A = [ 1 2 3; 4 5 6 ] returneaz
rezultatul:
A=
1 2 3
4 5 6
Obs: Indicii matricei ncep de la 1.

Dac se asigneaz o valoare unui element care ocup o poziie n afara
dimensiunii maxime a matricei sau vectorului referit, dimensiunea acestuia este mrit
automat pn la valoarea indicelui noului element, iar elementele nedefinite sunt setate la
valoarea zero.
Exemplu: Fie A = [ 1 2; 3 4 ]
Instruciunea A(3,3) = 5 genereaz:
A = [ 1 2 0; 3 4 0; 0 0 5 ]
Obs: Folosirea operatorului : permite utilizarea sau afiarea unei linii/coloane fr a
parcurge linia/coloana respectiv.
5

Exemplu: Pentru matricea A = [ 1 2; 3 4 ]
A(2,:) returneaz linia
3 4, iar
A(:,1) afieaz
1
3
MATLAB-ul este un limbaj de expresii. Expresiile tiprite de utilizator sunt
interpretate i utilizate. Orice instruciune se termin n mod normal cu Enter. Dac
ultimul caracter al instruciunii este punct-virgul ;, instruciunea este executat, dar
tiprirea rezultatului este suprimat. Dac expresia este aa de mare nct declaraia nu
ncape pe o singur linie, se utilizeaz semnul ...(trei puncte) urmat de Enter, pentru a
preciza c instruciunea se continu pe linia urmtoare.

6. Generarea vectorilor

Pentru a genera un vector cu pas liniar MATLAB -ul ofer dou metode:
Dac se cunosc limitele intervalului (xmin i xmax) i pasul (pas) dintre dou
elemente, se genereaz vectorul cu instruciunea:
x = xmin : pas : xmax
Dac pasul e negativ atunci e necesar ca xmin > xmax. Dac se omite
specificarea valorii pasului, atunci acesta va fi luat implicit egal cu 1.
Dac se cunosc limitele intervalului (amin i amax) i numrul de elemente (N)
ale vectorului generat cu pas liniar, atunci se folosete instruciunea:
x = linspace(xmin, xmax, N)
Dac valoarea lui N este omis, implicit se va lua 100.
Exerciiu: Fie v = [ 1 2 3 4 ] si fie A = [ 1 2 3 4; 5 6 7 8; 9 10 11 12 ]. Cu
ajutorul comenzii >>help nume_funcie aflai ce calculeaz fiecare din urmtoarele
comenzi MATLAB:
w1=max(v),B1=min(A)
w2=mean(v),B2=mean(A)
w3=median(v),B3=median(A)
6

w4=sum(v);w5=cumsum(A)
w6=prod(v);w7=cumprod(A)
w8=sort(v), [w9, w10]=sort(v), B4=sort(A)
size(v),length(A)

7. Matrice speciale
Anumite matrice des utilizate sunt disponibile n MATLAB ca funcii utilitare:
>>eye(n), unde n este un numr natural, returneaz o matrice identitate de
dimensiune n n. Dac n este un numr ntreg negativ, va fi returnat o matrice nul.
Dac sintaxa este de forma eye(A) , unde A este o matrice, atunci va fi returnat o matrice
identitate de dimensiune egal cu dimensiunea matricei A. Dac avem sintaxa eye(m, n),
va fi creat o matrice identitate de dimensiunea maxim posibil, iar restul va fi
completat cu zerouri pn se ajunge la o matrice dimensiunea m n.

>>ones(n), unde n este un numr natural, returneaz o matrice de
dimensiune n n cu toate elementele egale cu 1. Dac n este un numr ntreg negativ, va
fi returnat o matrice nul. Dac sintaxa este de forma ones(A) , unde A este o matrice,
atunci va fi returnat o matrice cu toate elementele egale cu 1, de dimensiune egal cu
dimensiunea matricei A. Dac avem sintaxa ones(m,n), va fi creat o matrice
dimensiunea m n, avnd toate elementele egale cu 1.

>>zeros(n) , unde n va fi un numr natural, returneaz o matrice de
dimensiune n n cu toate elementele egale cu zero. Restul observaiilor de la matricea
anterioar sunt valabile i aici, cu diferena c de fiecare dat matricea generat va avea
toate elementele egale cu zero.

>>rand(n) , unde n va fi un numr natural, returneaz o matrice de
dimensiune n n avnd ca elemente numere aleatoare uniform distribuite ntre 0 i 1.

7

>>randn(n) , unde n va fi un numr natural, returneaz o matrice de
dimensiune n n avnd ca elemente numere distribuite normal standard (media = 0,
dispersia =1).

>>g=[]
va genera o matrice g de dimensiune 0, dar care va exista n spaiul de lucru.

8. Calcul numeric cu MATLAB -ul
Calculele aritmetice asupra tablourilor de date n MATLAB pot fi:
operaii dup regulile calculului matriceal operaii cu matrice;
operaii dup regulile calculului scalar operaii cu tablouri.
Operaiile cu tablouri sunt operaii aritmetice ( nmulire, mprire, ridicare la
putere, etc. ) ntre elementele situate n aceeai poziie a tablourilor, cunoscute sub
numele de operaii element cu element. Pentru efectuarea operaiilor cu tablouri se
folosesc aceiai operatori ca n operaiile cu scalari, precedai de semnul punct ., semn
ce indic efectuarea operaiilor n ordinea element cu element. Pentru a putea fi efectuate
operaii element cu element, trebuie ca dimensiunile tablourilor cu care se opereaz s fie
identice. Dac unul dintre operanzi este un scalar, acesta opereaz cu fiecare element al
tabloului.
n cazul operaiilor de adunare i scdere, operatorul nu va mai fi
precedat de punct.
Exercitiu: Fie: A = [ 2 2 5; 1 4 7 ], B = [ 3 4 1; 2 5 3 ], p = 2. S se
calculeze: C=A+B, D = B - A, E = p - A, F = B - p, G = p + A.

n cazul operaiei de nmulire, pentru a preciza c nmulirea se efectueaz
element cu element, ntre componentele a dou matrice de aceleai dimensiuni, se
utilizeaz operatorul de nmulire precedat de punct (.*). Instruciunea este de forma:
C = A .* B
Exercitiu: Fie A = [ 1 3 2 ], B = [ 3 4 6 ] , p = 3. S se calculeze,
folosind calculul element cu element, nmulirea matricelor A i B, nmulirea scalarului
p cu matricea A i nmulirea matricei B cu scalarul p.
8


Operaia de mprire la dreapta, element cu element, ntre dou
tablouri este simbolizat cu operatorul punctslash (./). Instruciunea este de forma:
C = A ./ B
i reprezint mprirea la dreapta, element cu element, a tablourilor A i
B, cu aceleai dimensiuni, rezultnd elementele:
C (i,j) = A(i,j) / B(i,j)
Operaia de mprire la stnga, element cu element, ntre dou
tablouri este simbolizat cu operatorul punctbackslash (.\). Instruciunea este de forma:
C = A.\B
i reprezint mprirea la stnga, element cu element, a tablourilor A i B, cu aceleai
dimensiuni, rezultnd un tablou cu elementele:
C(i,j)=A(i,j)\B(i,j)=B(i,j)/A(i,j)
Prin urmare: C = A .\ B = B ./ A
Operaia de ridicare la putere, element cu element, ntr-un tablou
este simbolizat cu operatorul punct-^ (.^). Instruciunea este de forma:
C = A.^B
i reprezint ridicarea fiecrui element din tabloul A la puterea indicat de valoarea
elementului din aceeai poziie a tabloului B, adic:
C(i,j)=A(i,j)^B(i,j)
Dac A e un scalar, se las un blank ntre scalar i operatorul de ridicare la
putere.
Operaia de transpunere a unui tablou este simbolizat de operatorul punct-
apostrof. Instruciunea este de forma:
B=A.'
i liniile tabloului A vor deveni coloanele tabloului transpus B. Acest lucru face ca un
tablou B , cu dimensiunea m n, s devin un tablou A cu dimensiunea n m.
Operaiile uzuale de algebr liniar cu matrice sunt simbolizate cu semnele
grafice: *, /, \, ^, , i se efectueaz dup regulile cunoscute din
calculul matriceal.

9

Exerciiu: Fie A=[1 2; 3 4], B=[5 6; 7 8]. S se calculeze:
C=A/B, D=A\B, E=A^2, F=A./B, G=A.\B, H=A.^2, I=A+2, J=B*4, K=A-2.
Cu ajutorul comenzii >>help nume_functie aflai ce calculeaz fiecare
dintre urmtoarele comenzi MATLAB:
v=[1 2 3], V=diag(v), W=diag(v,2)
A=[1 2 3;4 5 6;7 8 9], B=diag(diag(A))
C=inv(A), d=det(B), t=trace(B)
D=[1 2 3 4 5 6], E=D(3:5), F=D(2:2:6)
H=[1 2 3 4 5 6;2 3 4 5 6 1;3 4 5 6 1 2;...
4 5 6 1 2 3; 5 6 1 2 3 4; 6 1 2 3 4 5]
I=H(2,:), J=H(:,3), K=H(1:2,4:6), L=H([1,4],[2,4:5]),
m=1:4, n=2:2:6, M=H(m,n)

9. Tipuri de date
Matlab-ul nu conine multe tipuri de date spre deosebire de multe alte limbaje de
programare, dar prezint totui i alte tipuri nafar de matrice i string-uri. Cele mai
importante sunt:
- tablourile multidimensionale
- matricele de celule
- structurile

Tablouri multidimensionale
Matricele nu sunt restricionate la dou dimensiuni. De exemplu pot fi definite
matrice tridimensionale.
Exemplu: Pentru a defini un tablou de dimensiune 2 3 4 de 1 se poate folosi
comanda:
>>A = ones(2,3,4); 2 3 4

Matrice de celule
10

Matricele de celule sunt structuri cu o mai mare flexibilitate, deoarece pot
conine elemente de orice tip ( chiar i alte matrice de celule ) i pot fi de dimensiuni
diferite. Matricea de celule are o structur general similar cu cea a matricelor de date
de baz. De exemplu, o matrice de celule 2 3 va avea dou linii care vor conine fiecare
cte 3 celule. Totui, elementele matricei pot fi de dimensiuni sau/i tipuri diferite. O
celul poate conine o dat de tip char, alta o dat de tip double sau altele pot fi goale. O
alt caracteristic particular este aceea c operaiile matematice nu sunt definite pe
mulimea matricelor de celule.
Voi prezenta cteva dintre cile de acces la elementele matricei de celule. Pentru
a obine coninutul unei celule a matricei A se folosete notaia A{ , }, iar pentru a obine
celula se folosete notaia uzual folosit pentru a accesa un element al matricei. De
exemplu, A{1,1} reprezint coninutul celulei ( de tip double sau char ), iar A(1,1)
reprezint insi celula i conine o dat de tip cell. Combinnd cele dou notaii putem
avea acces la elementele celulei. De exemplu, pentru a obine primele dou elemente ale
celulei A{1,1}, presupunnd c ea conine un vector, le putem accesa prin A{1,1} (1:2).
Pentru a construi o matrice de celule folosim comanda:
>>cell(m,n) care returneaz un tablou de matrice de dimensiune 0, de dimensiune m n
dup care vom iniializa elementele matricei de celule.
Exemplu 1: Comanda cell(2,3) va returna o matrice de celule de
dimensiune 2 3 ale crei elemente sunt matrice de dimensiune 0.
>> cell(2,3)

ans =

[] [] []
[] [] []
Pentru a iniializa de exemplu primul element al matricei cu matricea [1 2 3; 3 4 5] vom
folosi comanda:
>> a{1,1}=[1 2 3; 2 3 4]

a =
11


[2x3 double] [] []
[] [] []
Exerciiu: Accesai elementul aflat pe poziia (1,2) al primei celule.

Exemplu 2: Consider matricea X = [ 1 2 3 4 5; 6 7 8 9 10; 11 12 13 14
15; 16 17 18 19 20 ], folosind funcia mat2cell ( consultai help-ul pentru a nelege cum
este apelat aceast funcie ) mpart matricea X ntr-o matrice coninnd patru celule.
C = mat2cell(X, [2 2], [3 2]) reprezint matricea format din cele patru celule.
C =
[2x3 double] [2x2 double]
[2x3 double] [2x2 double]
Cele patru celule se acceseaz prin

C{1,1} C{1,2}
ans = ans =
1 2 3 4 5
6 7 8 9 10

C{2,1} C{2,2}
ans = ans =
11 12 13 14 15
16 17 18 19 20
Exerciiu: S se afieze prima linie a primei celule, a doua coloan a
celei de a doua celule i primele dou elemente ale primei linii din celula a treia.

O structur reprezint un ansamblu de variabile la care se face referire cu un singur
nume, ceea ce reprezint un mijloc confortabil de a menine la un loc informaii din
aceeai sfer. Variabilele care alctuiesc structura sunt denumite membrii sau cmpurile
acelei structuri.
O structur este declarat folosind funcia struct astfel:
12

S = STRUCT('cmp1',valoare1,'cmp2',valoare2,...)
i returneaz o structur avnd cmpurile i valorile corespunztoare specificate prin
argumentele setate. Tablourile de valori trebuie s fie tablouri de celule de aceeai
dimensiune, celule scalare sau simple valori. Tablourile de valori sunt atribuite
cmpurilor corespunztoare.
Exemplu: s = struct('nume',{{'Matei','Andrei'}},'cod',[1 2]);

10. Operatori logici
Matlab-ul dispune de operatorii relaionali obinuii.
Verificarea egalitii a doi operanzi se realizeaz folosind operatorul = = , iar
operatorul care verific inegalitatea este notat ~=. Rezultatul operaiei relaionale este o
matrice coninnd 0 i 1, n care fiecare intrare adevrat are valoarea 1 i fiecare intrare
fals conine valoarea 0.
Funcia Matlab find returneaz indicii elementelor matricei care satisfac anumite
condiii logice; aceasta poate fi folosit pentru a selecta i pentru a modifica elementele
care satisfac anumite condiii.
Exemplu: Exemplul de mai jos mai nti determin elementele matricei Y care sunt mai
mari dect 3 i apoi nlocuiete valorile acestor elemente cu 10.
>> I = find( Y > 3 );
>>Y(I) = 10 * ones(size(I));

11. Reprezentri grafice elementare n MATLAB
>>plot(x,y) ploteaz vectorul x versus vectorul y ( adic reprezint punctele
(x(i),y(i)) i unete dou puncte consecutive prin linii drepte ). Vectorii trebuie s aib
aceeai lungime.
>>subplot(m,n,i) mparte ecranul n m n ferestre i introduce plotul curent
n fereastra i.
Exerciiu: Fie codul Matlab urmtor:
x=-pi:0.1:pi;
y=sin(x);
subplot(2,2,1);
13

plot(x,y,'or');
xlabel('x');
ylabel('sin(x)'); title('Graficul functiei sin(x)');
Realizai n celelalte 3 ferestre graficele funciilor cos(x), arcsin(u),
arccos(u) (u=-1:0.01:1) utiliznd o varietate ct mai mare de linii si culori.
Observaii:
1. Axele sunt scalate implicit astfel nct s se permit vizualizarea ntregului grafic.
Pentru a avea mai mult control asupra graficului se poate utiliza funcia axis.
Exerciiu: S se ploteze funcia sinus la care se adaug un zgomot repartizat uniform
pe intervalul [0,1] pe intervalul [0,1]. S se seteze intervalul pe care trebuie plotat
funcia folosind funcia Matlab axis.
2. De fiecare dat cnd este apelat funcia plot, din figur sunt eliminate (terse)
informaiile anterioare. Pentru a aduga informaii noi unei figuri (precum legende
i etichete ale axelor) sau grafice suplimentare se utilizeaz funcia hold on dup
prima apelare a funciei plot.
3. Alte tipuri de plot-uri bidimensionale disponibile sunt:
- semilogy: utilizeaz o scar logaritmic pe axa y i o scar liniar pe axa
x;
- semilogx: utilizeaz o scar logaritmic pe axa x i o scar liniar pe axa
y;
- loglog: utilizeaz o scar logaritmic pe ambele axe;
- imagesc: reprezint o matrice printr-o imagine colorat
- hist: afieaz histograma unei mulimi de date.

4. Pentru a reprezenta grafic o funcie bidimensional, de exemplu, z = f(x,y) putem
folosi plot-uri tridimensionale. Pentru a realiza acest grafic, vom construi mai nti
o matrice Z a crei i, j element reprezint valoarea funciei peste o reea avnd
coordonatele corespunztoare axelor x i respectiv y reinute n matricele X i Y.
Funciile Matlab care se folosesc sunt:
- meshgrid: transform domeniul specificat prin vectorii x i y n matricele X
i Y folosite pentru a evalua funcii de dou variabile i n plotarea
14

suprafeelor. Liniile matricei X sunt copii ale vectorului x, iar coloanele
matricei Y sunt copii ale vectorului y.
- surf i mesh: reprezint o funcie de dou variabile ca o suprafa i
respectiv ca o reea.
- contour: reprezint punctele suprafeei aflate la nivelul z, ntr-un spaiu
bidimensional, adic sunt puncte din mulimea A = { } | ( ) x Domf f x z e = .
Exerciiu: S se reprezinte grafic funcia de dou variabile
2 2
( , ) exp( ) f x y x x y = i
respectiv liniile de contur folosind funcia contour pe domeniul [ 2, 2] [ 2, 2] .

12. Fiierele script i fiierele funcie

Fiierele script

Un fiier script este un fiier-M care conine o secven de comenzi MATLAB.
Prin apelarea numelui fiierului n linia de comand, se execut secvena MATLAB
coninut n acesta, executndu-se fiecare comand ca i cum ar fi tastat interactiv n
linia de comand. Comenzile unui fiier script au acces la zona de memorie principal,
iar dup execuia complet a unui fiier script, variabilele cu care acesta a operat rmn
n zona de memorie. Fiierele script sunt folosite pentru rezolvarea unor probleme care
cer comenzi succesive att de lungi, nct ar putea deveni greoaie pentru lucrul n mod
interactiv, adic n modul linie de comand. De asemenea, utilizarea lor este recomandat
pentru executarea unor experimente.

Fiierele funcie

Dac prima linie a fiierului-M conine cuvntul function, fiierul respectiv este
declarat ca fiier funcie. O funcie difer de un script prin faptul c poate lucra cu
argumente. Variabilele definite i manipulate n interiorul fiierului funcie sunt
localizate la nivelul acesteia, deci fiierele funcie au o zon de memorie proprie. Prin
15

urmare, la terminarea execuiei unei funcii, n memoria calculatorului nu rmn dect
variabilele de ieire ale acesteia. Comunicarea de informaii dintre zona de memorie
alocat funciei i zona de memorie principal se face prin intermediul parametrilor de
intrare i al parametrilor de ieire. Fiierele funcie sunt utilizate pentru extinderea
MATLAB -ului, adic pentru crearea unor funcii noi MATLAB.
Forma general a primei linii a unui fiier funcie este:
function [param_ieire 1, , param_ieire m] = nume_funcie(param_intrare 1,,
param_intrare n)
unde:
function este cuvntul cheie care declar fiierul ca fiier funcie (prezena
lui este obligatorie);
nume_funcie numele funcie, adic numele sub care se salveaz fiierul
fr extensie. Trebuie s avem grij s nu coincid cu cel al unui fiier deja existent;
param_ieire 1, , param_ieire m parametrii de ieire care trebuie
separai prin virgule i cuprini ntre paranteze drepte. Dac funcia nu are parametri de
ieire, parantenzele drepte i semnul egal nu mai au sens.
param_intrare 1, ,, param_intrare n parametrii de intrare care trebuie
separai prin virgule i cuprini ntre paranteze rotunde. Dac funcia nu are parametri de
intrare, parantenzele rotunde i semnul egal nu mai au sens.
Aceste fiiere pot fi adugate ca funcii noi n MATLAB.
Comenzile i funciile care sunt utilizate de noua funcie sunt nregistrate ntr-un fiier cu
extensia .m. Dac vrem s introducem un comentariu, n cadrul unui fiier, vom preceda
comentariul respectiv de semnul procent % . Acest lucru e foarte util de reinut,
ntruct, atunci cnd crem un fiier funcie, este bine ca pe liniile care urmeaz imediat
dup linia de declarare a fiierului funcie, s introducem un comentariu prin care s dm
informaii despre fiierul respectiv. Astfel, atunci cnd un alt utilizator dorete s afle
informaii despre fiierul respectiv, poate tasta:
>>help nume_fisier
i pe ecranul de comenzi va aprea comentariul introdus n fiier.

16

Exerciiu: Screi o funcie cu numele medie care primete ca argumente 2
numere a i b i returneaz media aritmetic, media geometric i media armonic a
numerelor a i b. Scriei o a doua funcie cu numele medie_gen care primete ca
argumente un vector i returneaz media aritmetic si media geometric a
componentelor. Scriei pentru ambele funcii comentarii si rolul lor.

Exist o funcie Matlab special, pe care o vom folosi atunci cnd avem de calculat
valorile unei funcii particulare n mai multe puncte i nu dorim s o reinem ntr-un fiier
separat. Aceast funcie este denumit funie inline i creeaz un obiect inline, avnd ca
argument un string care reprezint anumite expresii matematice sau comenzi pe care
dorim ca Matlab-ul s le execute. Ca argumente opionale putem specifica argumentele
obiectului funcie inline. De exemplu, variabila func din exemplul de mai jos reprezint
un obiect inline.
func = inline('sin(2*pi*f + theta)','f','theta');

Aceast funcie calculeaz sin(2 ) f t u + pe baza variabilelor de intrare f i u i poate fi
apelat precum orice funcie Matlab astfel:

x = 0:.1:4*pi;
theta= pi/2;
ys = func(x, theta);

13. Instruciuni i funcii de control n programe
Instruciunile de control logic n MATLAB sunt urmtoarele:
if instruciune pentru executarea condiionat a unui set de instruciuni;
else clauz asociat cu if;
elseif clauz asociat cu if;
for instruciune pentru realizarea ciclurilor cu un numr determinat de repetri;
while instruciune pentru realizarea ciclurilor pe baza unei condiii logice;
break instruciune pentru terminarea forat a unui ciclu;
return instruciune pentru returnarea execuiei n modulul apelant;
error instruciune ce permite afiarea unui mesaj de eroare;
17

end instruciune pentru ncheierea ciclurilor for, while i if.
Pe lng structura de secven, aceste instruciuni de control permit realizarea
unor structuri de program fundamentale ( ciclul for, ciclul while i if..else ) ce
permit programarea structurat n MATLAB.
n MATLAB este indicat utilizarea programrii vectoriale ( i.e.
prelucrarea ntregului tablou, fr a folosi instruciuni care realizeaz cicluri
pentru a opera asupra unui element ) din motive de eficien.

Instruciunea if simpl, clauza else, clauza elseif
n cadrul unui program este uneori necesar executarea unor grupuri de
instruciuni numai dac o condiie exprimat printr-o expresie logic are o anumit
valoare de adevr. Instruciunea if are rolul de a permite construirea unei structuri de
program pentru executarea condiionat a unor grupuri de instruciuni.
Instruciunea if poate fi folosit ca instruciune simpl n relaie cu clauza
end sau ca instruciune complex, caz n care include i clauzele else i elseif.

Forma general a unei instruciuni if simpl este urmtoarea:

if expresie_logic
secven_de_instruciuni
end

care are urmtoarea interpretare: dac expresia_logic are valoarea adevrat
atunci se execut secvena_de_instruciuni care urmeaz pn la clauza end, altfel dac
expresia_logic este fals se trece la executarea instruciunilor care urmeaz dup clauza
end.
Forma general a instruciunii if poate fi combinat cu clauza else ( obinem
astfel instruciunea if-else ) ca n exemplul urmtor:

if expresie_logic
18

secven_de_instruciuni1
else
secven_de_instruciuni2
end

Dac avem nevoie de mai multe nivele de instruciuni if-else este recomandat
folosirea clauzei elseif, cu sau fr clauza else.

if expresie_logic_1
secven_de_instruciuni 1
elseif expresie_logic_2
secven_de_instruciuni 2
elseif expresie_logic_3
secven_de_instruciuni 3

elseif expresie_logic_n
secven_de_instruciuni n
end

if expresie_logic_1
secven_de_instruciuni 1
elseif expresie_logic_2
secven_de_instruciuni 2
elseif expresie_logic_3
secven_de_instruciuni 3

else
secven_de_instruciuni n
end


19

Instruciunea repetitiv FOR

Aceast instruciune permite repetarea de un numr determinat de ori a unui grup
de instruciuni i are urmtoarea structur general:

for index = iniial : pas : final
secven de instruciuni repetate
end

Instruciunea repetitiv WHILE

Aceast comand permite execuatarea repetat a unui grup de instruciuni de un
numr nedeterminat de ori sub controlul unei condiii logice. Forma generel este:

while expresie
secven de instruciuni
end

Instruciunile din bucla while sunt executate atta timp ct expresie are elemente
nenule. De regul expresie are o singur valoare TRUE sau FALSE.

Instruciunea break

Instruciunea break se utilizeaz pentru a iei dintr-o bucl nainte ca aceasta s se
fi terminat. Se recomand a fi utilizat dac o condiie de eroare este detectat n
interiorul unei bucle. Instruciunea break nceteaz execuia ciclurilor for i while. n
cazul unor cicluri imbricate, break determin ieirea din ciclul cel mai interior. Se
apeleaz cu sintaxa:
break

20

Instruciunea return

Instruciunea return determin o ieire normal din fiierul-M ctre funcia care
l-a apelat sau ctre tastatur. Se apeleaz cu sintaxa:
return

Instruciunea error
Instruciunea error permite afiarea unor mesaje la ntlnirea unei erori. Se
apeleaz cu sintaxa:
error(mesaj)

Exemplu: procedura urmtoare verific dac funcia test a fost apelat cu dou
argumente de intrare i semnaleaz eroare dac nu este ndeplinit aceast condiie:

function test(x,y)
if nargin~=2
error(Numrul argumentelor de intrare este greit)
end.

Exerciii:
Exerciiul 1: Scriei codul MATLAB care traseaz graficul funciei urmtoare:

f : [-10, 10] R, f(x) =

>
s +
2 dac 3
2 dac 8 2
2
x x
x x


Exerciiu 2: S se genereze o matrice A cu n linii i n+1 coloane ale crei
elemente sunt:

A(i,j) =

=
=
rest n 0,
1 | j - i | dac 1, -
j i dac , 2

21


Exerciiu 3: S se scrie un program, utiliznd o bucl while care calculeaz suma
elementelor vectorului x = [2 -3 8 3 2 1 -5 9 7] pn cnd se ntlnete un numr mai
mare ca 8.

14. iruri de caractere

1. Funcii generale
Constanta ir se reprezint printr-un ir de octei n care se pstreaz codurile
ASCII ale caracterelor irului respectiv. Codurile ASCII 0 31 sunt caractere negrafice,
iar codurile 32 127 sunt caractere grafice. Un ir de caractere este constituit din unul
sau mai multe caractere delimitate prin apostrofuri. Apostrofurile nu fac parte din irul de
caractere. Pentru a introduce apostroful ntr-un ir de caractere se scriu dou
apostrofuri.

Funciile MATLAB folosite pentru operarea cu iruri de caractere sunt:
abs
Funcia abs convertete irurile de caractere la valorile numerice ale codului
ASCII; se apeleaz cu sintaxa:
y = abs(ir_de_caractere)
setstr
Funcia setstr returneaz caracterul corespunztor codului ASCII dat ca
argument; se apeleaz cu sintaxa:
s = setstr(t)
isstr
Detectarea irurilor de caractere se face cu funcia isstr , care se apeleaz cu
sintaxa:
a = isstr(t)
i returneaz 1 pentru modul text i 0 pentru modul cod numeric ASCII.
eval
22

Funcia eval interpreteaz irurile de caractere coninnd expresii MATLAB; se
apeleaz cu una dintre sintaxele:
x = eval(ir_de_caractere) sau eval(ir_de_caractere)
feval
Funcia feval permite evaluarea funciilor; se apeleaz cu una dintre sintaxele:
feval(nume_ funie,x
1
,, x
n
)
[y
1
,, y
m
] = feval(nume_ funie,x
1
,, x
n
)

2. Funcii de comparare a irurilor de caractere
strcmp
Funcia strcmp compar dou iruri de caractere; se apeleaz cu sintaxa:
a = strcmp(S
1
,S
2
)
i returneaz 1 dac acestea sunt identice i 0 n caz contrar. Funcia lucreaz n
mod senzitiv, adic include n procesul de comparare spaiile dintre caractere i tipul
caracterelor mari sau mici folosite.
findstr
Cutarea unui ir de caractere, S
2
ntr-un alt ir de caractere, S
1
, se face cu funcia
findstr, care se apeleaz cu sintaxa:
M = findstr(S
1
,S
2
)
upper
Conversia literelor mici dintr-un ir de caractere, n litere mari, se face cu funcia
upper care se apeleaz cu funcia:
t = upper(s)
lower
Conversia invers a literelor mari n litere mici se face cu funcia lower, care se
apeleaz cu sintaxa:
t = lower(s)
isletter
Determinarea literelor alfabetului dintr-un ir de caractere se face cu funcia
isletter, care se apeleaz cu sintaxa:
A = isletter(S)
23

Rezultatul conine 1 n poziiile n care elementele irului sunt litere i 0 n
celelalte poziii ( numere, blank-uri, etc ).

3. Conversia ir-numr i numr-ir
num2str
Conversia numerelor n iruri de caractere este utilizat la introducerea
valorilor numerice n titluri, la etichetarea axelor i se face cu funcia num2str care se
apeleaz cu sintaxa:
s = num2str(x)
int2str
Funcia int2str convertete numerele ntregi n iruri de caractere; se apeleaz cu
sintaxa:
s = num2str(x)
str2num
Funcia str2num convertete irurile care au caracterele ASCII ale valorilor
numerice, n numere; se apeleaz cu sintaxa:
x = str2num(s)
Exerciii:
1) S se determine codurile ASCII ale irului de caractere MATLAB.
2) S se afieze caracterele ASCII grafice ntr-o matrice 3 32 .
3) S se evalueze expresia: y = 2x
2
+ 3 n valorile x = 1:10.
4) S se genereze 3 matrice cu elemente numere aleatoare cu numele test1,
test2, test3.
5) Realizai conversia irului s = 123.25e-2 n numr.

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