Sunteți pe pagina 1din 21

Capitolul 1

1. Elemente de baz ale mediului MATLAB


1.1. Introducere
Matlab este un mediu interactiv, de nalt performan, utilizat pentru calcule
tiinifice i inginereti. MATLAB nglobeaz diverse posibiliti de lucru, cum ar fi
analiza numeric, calculul matriceal, procesare de semnale i trasarea grafic, ntr-un
mediu uor de utilizat, enunurile i soluiile fiind exprimate exact cum sunt scrise
matematic, nefiind necesar o programare tradiional.
Numele acestui mediu provine de la matrix laboratory. A fost dezvoltat pornind
de la dou pachete de programe, LINPACK i EISPACK, reprezentnd bazele soft-ului
pentru calcul matriceal.
Elementele de baz ale MATLAB-ului sunt matricile, nefiind necesar o
dimensionare a acestora. Acest mediu de programare este util n rezolvarea
problemelor numerice.
1.2. Utilizarea mediului MATLAB
1.2.1.

Lansarea mediului

Pentru lansare se deschide, n mediul de programare Windows, grupul Matlab


for Windows i se d un click pe icon-ul Matlab. La iniializare, se afieaz prompterul
mediului, constnd n simbolul >>. La prompter se pot scrie liniile de comand.
1.2.2.

Liniile de comand

Pentru scrierea liniilor de comand se utilizeaz tastatura calculatorului. Tastele


sgei pot fi utilizate pentru editarea liniilor sau pentru rechemarea unei comenzi
anterioare (tasta sgeat sus).
O linie de comand arat n modul urmtor:
log(sqrt(atan2(3,4)))
Tastele sgei acioneaz asupra unor copii ale liniilor de comand anterioare,
aceste copii fiind salvate ntr-un buffer.
Funciile tastelor sunt prezentate n continuare:
5

Sgeat sus
Sgeat jos
Sgeat stnga
Sgeat dreapta
Ctrl+sgeat stnga
Ctrl+sgeat dreapta
Home
End
Esc
Ins
Backspace

Recheam comanda dat anterior


Recheam linia de comand urmtoare
Deplasare la stnga cu un caracter
Deplasare la dreapta cu un caracter
Deplasare la stnga cu un cuvnt
Deplasare la dreapta cu un cuvnt
Deplasare la nceputul liniei de comand
Deplasare la sfritul liniei de comand
Abandoneaz linia de comand curent
Trecere ntre modurile Insert i Overtype
terge un caracter la stnga cursorului

1.3. Fundamente MATLAB


MATLAB lucreaz cu un singur tip de elemente, i anume matrici rectangulare,
elementele acestora put\nd fi numere reale sau chiar complexe. n unele situaii, acest
mediu lucreaz i cu scalari (reprezentai ca matrici cu o linie i o coloan) sau cu
matrici care au o singur linie sau coloan, acestea din urm fiind vectori.
1.3.1.

Introducerea matricilor

Matricile pot fi introduse n MATLAB n diverse moduri:

explicit;
ca rezultat al unor calcule;
create n fiiere de tip M;
ncrcate din fiiere externe.

Cea mai simpl metod de a introduce o matrice este scrierea explicit. De exemplu,
introducnd linia de comand:
A=[1 2 3;4 5 6;7 8 9]
se obine rezultatul:
A=
1
4
7

2
5
8

3
6
9

Matricea A este salvat n vederea unor prelucrri ulterioare. Matricile de dimensiuni


mari pot fi introduse pe mai multe linii, utiliznd RETURN n locul ;. Pentru
exemplificare, o matrice poate fi introdus astfel:
A=[ 1 2 3
456
6

Elemente de baz ale mediului Matlab

789]
1.3.2.

Elementele matricilor

Elementele matricilor pot fi orice expresii MATLAB. De exemplu comanda:


x=[ -1.3 sqrt(3) (1+2+3)*4/5]
conduce la rezultatul:
x=
-1.3000

1.7321

4.8000

Elementele matricilor pot fi referite i individual, cu indicele cuprins ntre paranteze


rotunde. De exemplu,
x(5)=abs(x(1))
va produce:
x=
-1.3000

1.7321

4.8000

1.3000

Matricile de dimensiuni mari pot fi construite utiliznd ca elemente matrici de


dimensiuni mai mici. De exemplu, se poate ataa un nou rnd matricii A prin comenzile:
r=[10 11 12];
A=[A;r]
rezultatul fiind:
A=
1
4
7
10

2 3
5 6
8 9
11 12

O matrice poate fi extras dintr-o matrice de dimensiune mai mare. De


exemplu, comanda:
A=A(1:3,:)
va avea ca efect extragerea din matricea A a unei matrici format din primele trei
rnduri i toate coloanele matricii curente.
1.3.3.

Variabile i declaraii

Expresiile introduse de utilizator sunt interpretate i evaluate. n MATLAB


declaraiile sunt, de cele mai multe ori de tipul:
7

variabil=expresie.
Sau simplu:

expresie.

Evaluarea unei expresii produce o matrice afiat pe ecran i alocat unei


variabile, n vederea utilizrii ulterioare. Dac numele variabilei i semnul = sunt
omise, este creat automat o variabil cu numele ans (de la answer).
Dac o linie de comand se termin cu caracterul ; afiarea rezultatului este
inhibat. Dac linia de comand este mai lung dect o linie ecran, se poate utiliza
secvena pentru indicarea continurii scrierii liniei de comand pe urmtoarea linie
ecran.
Numele variabilelor sunt formate din o liter, urmat de litere i cifre. Sunt
memorate doar primele 19 caractere ale numelor variabilelor.
MATLAB este sensibil la tipul de caractere utilizate, mici sau mari. Toate
numele funciilor se scriu cu litere mici.
1.3.4.

Informaii asupra spaiului de lucru

Variabilele create anterior sunt memorate n spaiul de lucru al MATLAB-ului.


Execuia comenzii:
who
va avea ca rezultat afiarea tuturor variabilelor din acest spaiu.
1.3.5.

Expresii aritmetice

Pentru numere este utilizat reprezentarea cu punct zecimal, cu semnul - n


cazul numerelor negative, sau n modul baz exponent. Exemple de numere declarate
corect sunt:
3
3.83745683
-77
1.896E-10
0.002
7.231e21
Intervalul n care pot fi introduse numere este de la 10-308 la 10308.
MATLAB are implementate multe funcii n fiiere de tip m. De exemplu,
abs, sqrt, log, sin.
De asemenea exist funcii ce returneaz valori speciale, cum ar fi pi, ce returneaz
valoarea lui , sau Inf, ce returneaz valoarea .

Elemente de baz ale mediului Matlab

1.3.6.

Numere complexe

Numerele complexe sunt introduse n MATLAB utilizndu-se funciile speciale


i sau j. Exemple:
z=3+4*i ; z=3+4j ; w=r*exp(i*theta).
Pentru introducerea matricilor complexe se poate recurge la:
A=[1 2;3 4]+i*[5 6;7 8]
sau
A=[1+5*i 2+6*i; 3+7*i 4+8*i]
comenzi care vor conduce la acelai rezultat.
1.3.7.

Formatul de ieire

Rezultatul declaraiilor i evalurilor executate sunt afiate pe ecran. Pentru a


explicita formatele posibile, se consider urmtorul exemplu: dndu-se
x=[4/3 1.2345e-6]
atunci formatele ce pot fi utilizate sunt:
short
short e
long
long e
hex
format +
1.3.8.

1.3333
1.3333E+000
1.333333333333338
1.333333333333338E+000
3FF5555555555555
+

0.0000
1.2345E-006
0.000001234500000
0.000001234500000E-006
3EB4B6231ABFD271
+

Faciliti oferite de HELP

Pentru a obine informaii ajuttoare se va tasta:


help
Dac se dorete o informaie specific, atunci se va tasta:
help eig
Comanda anterioar va avea ca efect afiarea informaiilor referitoare la valorile proprii
ale unei matrici (eig=eigenvalues), iar comanda:
Help [
va furniza informaii referitoare la utilizarea parantezelor ptrate.
1.3.9.

Salvarea spaiului de lucru

Pentru prsirea mediului se va tasta quit sau exit. Terminarea sesiunii de lucru
are ca efect pierderea valorilor variabilelor din spaiul de lucru. Inainte de terminare, se
poate salva coninutul spaiului de lucru utiliznd comanda:
save

Ca urmare a acestei comenzi, se vor salva toate variabilele din spaiul de lucru ntr-un
fiier numit matlab.mat. La urmtoarea sesiune de lucru, se poate restaura spaiul de
lucru cu comanda:
load
Comenzile anterioare pot fi folosite n conjuncie cu nume de fiiere sau numai pentru
variabile selectate.
save temp X
save temp x z y
vor avea ca efect salvare n fiierul temp.mat a variabilelor x i respectiv x, y, z.
1.3.10. Funcii
MATLAB pune la dispoziia utilizatorului o multitudine de funcii. Unele dintre
acestea sunt intrinsece, iar altele sunt construite. De asemenea, exist funcii specifice
domeniilor de lucru ale MATLAB-ului, disponibile n modulele de instalare (MATLAB
TOOLBOX). O caracteristic important a acestui mediu este c utilizatorul i poate
construi propriile funcii, ele putnd fi apelate exact ca funciile intrinsece ale mediului.
1.4. OPERAII CU MATRICI
1.4.1.

Transpusa unei matrici

Caracterul special (apostrof) semnific transpusa unei matrici. Declaraiile:


A=[1 2 3; 4 5 6; 7 8 0];
B=A
conduc la:
B=
1
2
3

4
5
6

7
8
0

iar:
x=[-1 0 2]
produce:

x=
-1
0
2
In principal, utilizndu-se , are loc o transpunere formal a matricii. Dac matricea
este complex, atunci A este conjugata complex transpus. Acest lucru poate
conduce uneori la rezultate eronate, mai ales n cazul lucrului cu numere complexe.
Pentru transpusa neconjugat se va utiliza A. sau conj(A).
1.4.2.

10

Adunarea i scderea matricilor

Elemente de baz ale mediului Matlab

Operaiile de adunare i scdere a matricilor sunt simbolizate prin + i -.


Operatorii sunt definii numai dac matricile au aceeai dimensiune. Operaia de
adunare sau scdere mai este definit i atunci cnd unul din operanzi este scalar
(matrice cu o linie i o coloan). De exemplu:
y=x-1
va produce:
y=
-2
-1
1
1.4.3.

nmulirea matricilor

Operaia este simbolizat prin *. Operaia este valid numai n ipoteza


concordanei dintre dimensiunile matricilor (indicele de interior). De asemenea, se
poate vorbi de produsul scalar a doi vectori, definit ca:
x*y sau y*x
rezultatul fiind acelai. Sunt posibile i produsele:
x*y sau y*x
Alte operaii de nmulire pot fi executate n cazul operanzilor de tip matrice i vector,
scalar i vector, scalar i matrice.
1.4.4.

mprirea matricilor

n MATLAB sunt dou tipuri de mpriri, simbolizate prin \ i /. Dac A este o


matrice nesingular, atunci A\B i B/A corespund formal nmulirii la stnga i la
dreapta a matricii B cu inversa lui A, adic inv(A)*B i B*inv(A), rezultatul fiind
obinut direct, fr calculul inversei matricii A. n general,
X=A\B este soluia ecuaiei A*X=B
X=A/B este soluia ecuaiei X*A=B
1.4.5.

Ridicarea la putere

Expresia A^p denot matricea A ridicat la puterea p. Operaia este valid dac
A este matrice ptratic i p este scalar.
1.5. Operaii cu tablouri
Utilizarea expresiei operaii cu tablouri se refer la operaii aritmetice
executate element cu element (spre deosebire de operaiile liniare cu matrici,
simbolizate prin * / \ ^ ). Dac un operator este precedat de un punct . atunci
nseamn c operaia este executat element cu element.
1.5.1.

Adunarea i scderea

Pentru aceste operaii, situaia este identic cu cea din cazul matricilor. Se
utilizeaz aceleai simboluri, + i -.
11

1.5.2.

nmulirea i mprirea

nmulirea element cu element este simbolizat prin .* . Dac A i B au aceeai


dimensiune, atunci A.*B denot produsul element cu element al celor dou matrici. De
exemplu, dac:
x=[ 1 2 3 ] y=[ 4 5 6 ]
z=x.*y
z=[ 4 10 18 ]
Expresiile A./B i A.\B dau ca rezultat ctul mpririi element cu element.
z=x.\y
z=[ 4.0000 2.5000 2.0000 ]
1.5.3.

Ridicarea la putere

Ridicarea la putere element cu element este simbolizat prin .^.


Exemple:
z=x .^y
z=[ 1 32 729 ]
z=x .^2
z=[ 1 4 9 ]
z=2 .^[x y]
z=[ 2 4 8 16 32 64 ]
Important: ultimul exemplu ilustreaz una din subtilitile MATLAB-ului. Este
dificil de vzut c exist un spaiu ntre 2 i punct. Dac acest spaiu nu ar fi existat,
punctul ar fi fost interpretat ca punct zecimal asociat cu 2. MATLAB ar fi sesizat
numai ^ i ar fi ncercat s calculeze puterea unei matrici, lucru care ar fi condus la o
eroare, deoarece exponentul nu este ptratic. O alternativ pentru aceast operaie ar fi
utilizarea parantezelor.
1.5.4.

Operatori relaionali

MATLAB pune la dispoziia utilzatorului un numr de ase operatori


relaionali:
<
mai mic
<=
mai mic sau egal
>
mai mare
>=
mai mare sau egal
==
egal
~
=
non egal
Comparaia este fcut ntre elemente corespondente. Rezultatul este o matrice
format din elemente 0 i 1, reprezentnd FALSE i TRUE. De exemplu,
12

Elemente de baz ale mediului Matlab

2+2~=4
va fi 0.
Operatorii relaionali pot fi utilizai pentru localizarea elementelor unei matrici,
elemente ce satisfac anumite condiii. De exemplu, se consider o matrice magic
(matrice avnd elemente cuprinse ntre 1 i n2, avnd sumele pe linii i coloane
identice).
A=magic(6)
A=
35 1
3 32
31 9
8 28
30 5
4 36

6 26 19 24
7 21 23 25
2 22 27 20
33 17 10 15
34 12 14 16
29 13 18 11

Se poate observa c elementele divizibile cu 3 sunt dispuse la fiecare a treia diagonal a


matricii. Pentru a vedea acest lucru, se tasteaz:
P=(rem(A,3)==0)
ceea ce semnific un test al egalitii cu 0 al resturilor mpririi elementelor matricii A
la 3. P va deveni o matrice cu elemente 0 i 1.
P=
0 0 1 0 0 1
1 0 0 1 0 0
0 1 0 0 1 0
0 0 1 0 0 1
1 0 0 1 0 0
0 1 0 0 1 0
Funcia find este util n lucrul cu operatorii relaionali, servind la gsirea
elementelor nenule ntr-o matrice cu elemente 1 i 0, i chiar a elementelor care satisfac
o anumit condiie. De exemplu, dac Y este un vector, find(Y<3.0) va returna un
vector coninnd indicii elementelor lui Y care sunt mai mici dect 3.
Declaraiile:
i=find(Y>3.0)
Y(i)=10*ones(i)
vor conduce la nlocuirea cu 10.0 a elementelor din Y mai mari dect 3. Aceste operaii
sunt valide i la lucrul cu matrici, deoarece o matrice poate fi referit ca un vector
coloan cu un singur indice.
1.5.5.

Operaii logice

Operatorii logici sunt:


&
|
~

AND
OR
NOT
13

Primul dintre ei compar doi scalari sau dou matrici de dimensiuni egale.
Pentru matrici, aceti operatori lucreaz asupra elementelor corespondente. Dac A i
B sunt matrici formate din elemente 1 i 0, atunci A&B va fi o alt matrice 0-1
reprezentnd produsul logic al elementelor corespondente. Acest operator consider
orice element diferit de 0 ca fiind 1.
Operatorul NOT este un operator unar. Expresia ~A returneaz 0 acolo unde A
este non zero i 1 unde A este 0. Expresiile:
P&(~P)
P|(~P)
vor returna zerouri i respectiv elemente 1.
Funciile any i all sunt utile n conjuncie cu operatorii logici. Dac x este un
vector de elemente 1 i 0, atunci any(x) va returna 1 dac cel puin un element al lui x
este diferit de 0, i 0 n restul cazurilor. Funcia all(x) va returna 1 dac toate
elementele lui x sunt nenule. Aceste funcii sunt utile n declaraii de tipul:
if all(A<.5)
execut secven de operaii
end
Unele din funciile logice disponibile n MATLAB sunt prezentate n tabelul
urmtor:
any
all
find
exist
isnan
finite
isempty
isstr
strcmp
1.5.6.

condiie logic
condiie logic
gsete indicii valorilor logice
caut dac variabilele exist
detecteaz elemente care nu sunt numere
detecteaz valoarea infinit
detecteaz o matrice fr elemente
detecteaz iruri de caractere
compar variabile de tipul irurilor de caractere

Funcii matematice elementare

MATLAB pune la dispoziie o gam larg de funcii elementare i


trigonometrice, prezentate n tabelele urmtoare:
Funcii trigonometrice
sin
cos
tan
asin
acos
atan
sinh
cosh
14

sinus
cosinus
tangent
arc sinus
arc cosinus
arc tangent
sinus hiperbolic
cosinus hiperbolic
Elemente de baz ale mediului Matlab

tanh
asinh
acosh
atanh

tangent hiperbolic
arc sinus hiperbolic
arc cosinus hiperbolic
arc tangent hiperbolic

Funcii elementare
abs
angle
sqrt
real
imag
conj
round
sign
rem
exp
log
log10

valoare absolut sau modul


argumentul
rdcina ptrat
partea real
partea imaginar
conjugatul unui numr complex
rotunjire ctre cel mai apropiat ntreg
funcia signum
restul mpririi
exponenial, baza e
logaritm natural
logaritm zecimal

1.6. Lucrul cu matrici i vectori


1.6.1.

Generarea vectorilor

Simbolul : este foarte important n MATLAB. Declaraia:


x=1:5
genereaz un vector coninnd elementele de la 1 la 5, cu incrementul 1:
x=[1 2 3 4 5]
Dac se dorete un alt increment (pozitiv sau negativ), atunci declaraia va fi de tipul:
y=0:pi/4:pi
O alt posibilitate de a genera vectori este utilizarea funciilor linspace sau logspace,
care determin generarea unui numr de puncte ntr-un interval considerat. De
exemplu,
k=linspace(-pi,pi,4)
conduce la:
k=
-3.1416 -1.0472 1.0472 3.1416
1.6.2.

Utilizarea indicilor

15

Elementele unei matrici pot fi accesate prin utilizarea indicilor lor, plasai ntre
paranteze. O expresie utilizat ca indice este rotunjit ctre cel mai apropiat ntreg.
Exemplu:
A(3,3)=A(1,3)+A(3,1)
n loc de indice se poate folosi i un vector. Dac, de exemplu, X i V sunt vectori,
atunci X(V) este [X(V(1)), X(V(2)),,X(V(n))]. Pentru matrici, indicii se pot utiliza
pentru a referi submatrici. Dac A este o matrice 10 x 10, atunci:
A(1:5,3)
va referi o submatrice cu 5 linii i o coloan, constnd din primele 5 elemente ale
coloanei 3 a matricii A. n mod identic,
A(1:5,7:10)
este o submatrice format din elementele primelor 5 rnduri ale ultimelor 4 coloane.
Dac se utilizeaz doar cele dou puncte, fr indici, atunci acestea se vor
referi la toate elementele liniilor sau coloanelor. De exemplu,
A(:,3) A(1:5,:)
reprezint a treia coloan a matricii i respectiv primele 5 rnduri ale matricii A.
Declaraia:
A(:,[3 5 10])=B(:,1:3)
va conduce la nlocuirea coloanelor 3, 5 i 10 ale matricii A cu primele 3 coloane ale
matricii B.
Funcie de plasamentul celor dou puncte, se pot ntlni situaiile:
a)
A=[1 2; 3 4; 5 6]
b=A(:)
va conduce la obinerea unui vector coloan cu toate elementele matricii A.
b) dac acestea sunt plasate n partea dreapt, ele pot fi utilizate pentru
redimensionarea unei matrici. Pentru aceasta, matricea A trebuie s existe. n aceste
condiii, A(:) denot o matrice de aceeai dimensiune cu A, dar cu coninut schimbat n
partea dreapt. Dac A are 3 rnduri i 2 coloane, atunci:
A(:)=11:16
aranjeaz un vector de ase elemente ntr-o matrice 3 x 2.
1.6.3.

Indexarea utiliznd vectori de elemente 1 i 0

Vectorii de acest gen, creai, de obicei, prin operaii relaionale, pot fi utilizai
pentru a referi submatrici. Dac, de exemplu, A este o matrice m x n i L este un vector
de lungime m, format din elemente 0 i 1, atunci:
A(L,:)
16

Elemente de baz ale mediului Matlab

specific rndurile matricii A unde elementele lui L sunt nenule.


Pentru eliminarea unor elemente ale unui vector, se pot utiliza secvene de
tipul:
x=x(x<=3*std(x))
sau
L=X(:,3)>100;
X=X(L,:);
ultima conducnd la nlocuirea lui x cu acele rnduri ale lui X ale cror a treia coloan
este mai mic dect 100.
1.6.4.

Matrici vide

Declaraia

x=[ ]

determin generarea unei matrici de dimensiune 0 x 0. Utilizarea acestei comenzi nu va


conduce la o eroare. Matricile vide exist n spaiul de lucru (deci declaraia anterioar
este diferit de declaraia clear x, care terge pe x din lista variabilelor curente) dar au
dimensiunea 0. Funcia exist poate fi utilizat pentru verificarea existenei unei matrici,
iar isempty indic dac o matrice este vid.
O posibilitatea de a terge rnduri sau coloane ale unei matrici este de a le
declara vide. Astfel,
A(:,[2 4])=[ ]
va terge coloanele 2 i 4 ale matricii A.
1.6.5.

Declararea matricilor mari

Matricile mari pot fi create din matrici mici. De exemplu,


C=[ A eye(4);ones(A) A^2]
creeaz o matrice, presupunnd c A are patru rnduri.
1.6.6.

Calculul valorilor proprii ale unei matrici

Dac A este o matrice de dimensiune n x n, cele n numere ce satisfac relaia


Av=v poart denumirea de valori proprii ale matricii A. Ele sunt calculate utiliznd
funcia eig(A) ce returneaz valorile proprii ntr-un vector coloan. Valorile i vectorii
proprii se pot obine utiliznd comanda [V,D]=eig(A). V este matricea vectorilor
proprii.
Exemplu:
A=[0 1 -1;-6 -11 6;-6 -11 5];
[V,D]=eig(A)
17

Rezultatul obinut este:


V=
-0.7071
0.0000
-0.7071

0.2182 -0.0921
0.4364 -0.5523
0.8729 -0.8285

D=
-1.0000
0
0
0 -2.0000
0
0
0 -3.0000

1.7. Controlul fluxului de operaii


MATLAB are posibilitatea controlului fluxului de operaii, exact ca orice alt
limbaj de programare. Structurile repetitive i decizionale puse la dispoziie
utilizatorului sunt prezentate n continuare.
1.7.1.

Bucla FOR

MATLAB posed o versiune mai veche a buclelor DO i FOR. Acestea


presupun executarea unei instruciuni (sau secven de instruciuni) de un numr
determinat de ori.
Structura general a unei bucle FOR este:
for v=expresie
secven de instruciuni
end
Exemple de bucle For:
for i=1:m
for j=1:n
A(i,j)=1/(i+j-1);
end
end
A
n=max(size(t));
for j=1:n
for i=1:n
A(i,j)=t(i)^(n-j);
end
end
A(:,n)=ones(n,1)
18

Elemente de baz ale mediului Matlab

for j=n-1:-1:1
A(:,j)=t.*A(:,j+1)
end
1.7.2.

Bucla WHILE

Aceast bucl este utilizat atunci cnd se dorete executarea unei instruciuni
(sau secven de instruciuni) de un numr indefinit de ori, sub controlul unei condiii
logice. Forma general este urmtoarea:
while expresie
secven de instruciuni
end
Exemple de bucle WHILE:
n=1
while prod(1:n)<1.e100, n=n+1; end
n
E=zeros(A);
F=eye(A);
k=1;
while norm(E+F-E,1)>0
E=E+F;
F=A*F/k
k=k+1;
end
1.7.3.

Comenzile IF i BREAK

Pentru a ilustra modul de folosire a acestor comenzi, se consider dou


exemple. n primul este efectuat un calcul dependent de semnul i paritatea lui n , iar n
cel de-al doilea este prezentat o problem din teoria numerelor.
Exemplul 1.
If n<0
A=negative(n)
elseif rem(n,2)==0
A=even(n)
else
A=odd(n)
end

%par
%impar

Exemplul 2. Se consider un ntreg pozitiv, oarecare. Dac este par, se va divide cu 2,


iar dac este impar, se va multiplica cu 3 i se va aduna 1 la produs. Se va repeta acest
algoritm pn cnd se va ajunge la valoarea 1. n teoria numerelor se pune problema
dac exist un ntreg pentru care programul ruleaz la infinit. Programul ilustreaz

19

modul de folosire a comenzilor while i if. De asemenea, sunt utilizate funciile input
(ateapt introducerea unei secvene de la tastatur) i break.
while 1
n=input(Introduceti un intreg pozitiv: );
if n<=0, break, end
while n>1
if rem(n,2)==0
n=n/2
else
n=3*n+1
end;
end
end
1.8. Trasarea graficelor n MATLAB
1.8.1.

Reprezentri bidimensionale

MATLAB poate crea diverse tipuri de grafice, cum ar fi: 2D, 3D, liniare,
logaritmice, semilogaritmice, reprezentri n coordonate polare, etc. Cteva dintre
modalitile de reprezentare a graficelor 2D sunt: plot, loglog, semilogx, semilogy,
polar i bar. Comanda grid adaug linii ajuttoare graficelor, iar comenzile title(text),
xlabel(text), ylabel(text) i text(x, y, text) pot fi utilizate pentru plasarea de
etichete sau texte pe grafice. Sintaxa comenzii pentru trasarea graficelor include i o
serie de simboluri opionale (., +, *, o, x) precum i cteva litere asignate culorilor (r,
b, g, w) cu care lucreaz mediul de programare. De exemplu, comanda:
plot(t, y1, r, t, y2, +b)
va determina trasarea unor curbe de culoare roie (y1) i respectiv albastr (y2).
Scalarea graficelor este efectuat automat. Comanda:
axis([xmin xmax ymin ymax])
foreaz o scalare manual a graficului. De exemplu, comanda:
axis([-10 40 -60 60])
va produce o reprezentare cuprins ntre -10 i 40 pe axa x i respectiv -60 i 60 pe axa
y.
n continuare se vor prezenta cteva exemple ce ilustreaz posibilitile
MATLAB-ului de a reprezenta diverse funcii.
Exemplul 1.
S se traseze n coordonate x-y evoluia:
t
0
1
2
3
4
5
6
7
8
9
10 11 12
y
0
0.55
1
2
4
7.2 11 14 15.1 16 16 16 16
Pentru un numr mic de date, acestea pot fi introduse n MATLAB utiliznd paranteze
ptrate:
20

Elemente de baz ale mediului Matlab

t = [0 1 2 3 4 5 6 7 8 9 10 11 12];
y= [ 0 0.55 1 2 4 7.2 11 14 15.1 16 16 16 16];
plot(t, y)
grid
Rezultatul execuiei secvenei de comenzi anterioare este afiarea urmtorului grafic:
20
15
10
5
0

10

15

Fig. 1.1. Evoluia semnalului din exemplul 1.


Pentru un numr mare de date, se poate utiliza un editor de texte pentru a crea un fiier
cu extensia .m. Tastarea comenzii nume_fisier va produce aducerea datelor din fiier n
spaiul de lucru.
Exemplul 2.
S se reprezinte grafic funcia y=sin(x)/x pentru -4<x<4.
x=-4*pi: 0.05:4*pi;
y=sin(x)/x;
plot(x,y), title(Exemplul 2- Functia sin(x)/x)
xlabel(Radian)
ylabel(sin(x)/x)
grid
E x e m p lu l 2 - F u n c t ia s in ( x ) / x

1
0 .8
0 .6
0 .4
0 .2
s in ( x ) / x
0
-0 .2
-0 .4
-1 5

-1 0

-5

0
R a d ia n

10

15

Fig. 1.2. Evoluia semnalului din exemplul 2.

21

subplot va mpri spaiul pentru trasarea graficelor n mai multe subspaii, aceast
posibilitate de lucru fiind util atunci cnd se dorete trasarea mai multor grafice n
acelai timp. Comanda subplot(mnp) mparte spaiul n m x n subspaii, utilizndu-l pe
cel cu numrul de ordine p pentru reprezentarea grafic. Acest lucru este demonstrat n
exemplul urmtor.
Exemplul 3.
a) s se traseze grafic funcia v=120 sint i i=100sin(t-/4) n raport cu t (n
colul din stnga sus).
b) s se traseze p=vi (dreapta sus).
c) dac Fm=3.0, s se traseze fa=Fmsint, fb=Fmsin(t-2/3) i fc=Fmsin(t-4/3)
funcie de t (stnga jos).
d) dac fR=3Fm, s se construiasc o reprezentare n coordonate polare (dreapta jos).
clg
wt=0 : 0.05: 3*pi;
i=100*sin(wt-pi/4);
v=120*sin(wt);
p=v.*i;
subplot(221), plot(wt, v, wt, i)
title( tensiune si curent)
xlabel(wt - radiani);

%terge fereastra

subplot(222), plot(wt, p)
title(Putere)
xlabel(wt - radiani);
ylabel(Watt);

%puterea instantanee

%puterea instantanee
%trasare v i i n raport cu wt

Fm=3.0
fa=Fm*sin(wt);
fb=Fm*sin(wt-2*pi/3);
fc=Fm*sin(wt-4*pi/3);
subplot(223), plot(wt, fa, wt, fb, wt, fc)
title(Faze);
xlabel(wt - radiani);
fR=3/2*Fm*(wt+1). /(wt+1);
subplot(224), polar(wt, fR)
title(Coord. Polare)
Rezultatul execuiei comenzilor de mai sus este prezentat n figura urmtoare:

22

Elemente de baz ale mediului Matlab

t e n s iu n e s i c u r e n t

200
100

10000

5000
W a tt

-1 0 0
-2 0 0

5
w t - r a d ia n i
Faze

10

-5 0 0 0

2
0

5
10
w t - r a d ia n i
C o o r d . P o la r e
906
120
60
4
150
30
2
180

-2
-4

P u te re

15000

210

330
240

5
w t - r a d ia n i

10

270

300

Fig. 1.3. Evoluia semnalelor de la exemplul 3.


1.8.2.

Reprezentri tridimensionale

Comanda mesh(Z) creaz o reprezentare tridimensional a elementelor matricii


Z. O suprafa tridimensional este definit de coordonatele x, y, z ale punctelor.
Reprezentarea este format prin unirea punctelor adiacente cu linii drepte. Funcia
meshdom transform un domeniu specificat prin vectorii x i y ntr-un tablou X i Y.
Un exemplu des ntlnit este reprezentarea funciei Bessel
J0 x2 y2

n domeniul -12 < x < 12, -12 < y < 12.


Urmtoarele comenzi:
clg
[x, y]=meshgrid(-12: .6 :12, -12: .6 :12);
r=sqrt(x.^2+y.^2); z=bessel(0, r);
m=[-45 60];
mesh(z,m)
vor conduce la afiarea urmtorului grafic:

23

Fig. 1.4. Reprezentare tridimensional.


1.9. Fiiere
MATLAB este utilizat, cel mai adesea, n modul comand. Atunci cnd la
prompterul mediului este introdus o linie de comand, aceasta este procesat i sunt
afiate rezultatele. Dar, acest mediu este capabil de a executa secvene de comenzi ce
au fost scrise anterior n fiiere.
Fiierele ce conin comenzi MATLAB sunt denumite fiiere de tip m, deoarece
ele au aceast extensie. Un fiier de tip m const ntr-o secven de instruciuni
normale, fiind posibil apariia unor apeluri ale altor fiiere de tip m. Un astfel de fiier
se poate apela el nsui.
Una din utilitile fiierelor m este nglobarea unor secvene lungi de comenzi.
Astfel de fiiere se numesc fiiere script (text). O alt categorie de fiiere sunt fiierele
funcii. Ele permit adugarea unor noi funcii la cele existente. Capacitatea de a se crea
noi funcii, utile pentru rezolvarea unor probleme specifice, fac din MATLAB un mediu
puternic i flexibil.
Amndou tipurile de fiiere prezentate sunt, n esen, fiiere ASCII i pot fi
create utiliznd un editor de texte.
1.9.1.

Fiiere script (script files)

Cnd este apelat un astfel de fiier, MATLAB execut comenzile pe care le


gsete n acesta, fr a atepta introducerea lor de la tastatur. Aceste fiiere sunt utile
n rezolvarea unor probleme ce implic un numr mare de instruciuni. Aceste
instruciuni opereaz asupra variabilelor din spaiul de lucru. Dup terminarea
execuiei, variabilele utilizate rmn n spaiul de lucru.
De exemplu, secvena de instruciuni urmtoare poate fi scris ntr-un fiier f.m
%Fisier m pentru calcularea numerelor lui Fibonacci
f=[1 1];i=1;
while f(i)+f(i+1)<1000
f(i+2)=f(i)+f(i+1);
i=i+1;
end
24

Elemente de baz ale mediului Matlab

plot (f)
Dac la prompterul mediului se tasteaz f , atunci se va executa secvena anterioar ce
calculeaz o secven a numerelor Fibonacci.
1.9.2.

Fiiere funcii (function files)

Dac prima linie a unui fiier conine cuvntul function, atunci fiierul este de
tip funcie. O funcie difer de un fiier text prin aceea c argumentele pot fi transmise,
variabilele definite i manipulate n interiorul fiierului fiind locale. De exemplu, o
funcie pentru calcularea valorii medii este urmtoarea:
function y=medie(x)
%Calculeaza media.
%Pentru vectori returneaza media elementelor.
%Pentru matrici returneaza un vector linie ce contine
%media elementelor fiecarei coloane a matricii.
[m,n]=size(x);
if m==1
m=n
end
y=sum(x)/m;
Existena acestui fiier definete o nou funcie MATLAB. Presupunnd c
numele fiierului este medie.m, atunci aceast funcie poate fi utilizat ca oricare alta.
Elementele ce apar la un fiier funcie sunt:

prima linie conine numele funciei, argumentele ei precum i argumentele ce vor fi


returnate;
simbolul % indic faptul c restul liniei este un comentariu;
liniile de comentariu de la nceputul fiierului vor fi afiate ca informaii ajuttoare,
la tastarea comenzii help medie
variabilele m, y i n sunt variabile locale;
o funcie poate returna i un numr mai mare de argumente sau poate primi un
numr mai mare de argumente, prima linie punnd n eviden acest lucru. De
exemplu, function[x,y]=nume_functie(z) sau function x=nume_functie(z,y,m). Se
poate observa c numrul de argumente de intrare i ieire sunt elemente
importante n construcia funciilor. MATLAB este prevzut cu dou funcii pentru
aflarea acestor numere, i anume nargin i nargo

25

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