Sunteți pe pagina 1din 11

Elemente de baz privind utilizarea pachetului de programe MATLAB

Pachetul de programe MATLAB (MATrix LABoratory) ofer un mediu performant avnd ca scop
principal simplificarea modului de prelucrare numeric a datelor. Matlab-ul permite exprimarea soluiilor unor
aplicaii cu caracter tiinific sau tehnico-ingineresc ntr-un limbaj simplu, apropiat de formularea analitic
(matematica) a problemei n cauz. n acest mod, utilizatorul se poate concentra n primul rnd asupra metodei
de rezolvare fr a ntmpina dificulti majore n traducerea soluiei n limbajul propriu MATLAB-ului.
Nucleul MATLAB ncorporeaz un numr mare de funcii predefinite destinate operaiilor
matematice de uz general (aritmetica n virgul mobil, calcul polinomial, funcii trigonometrice,
exponeniale, logaritmice, speciale, etc.), manipulrii tablourilor i matricelor, rezolvrii unor probleme de
analiz numeric, reprezentri grafice 2D i 3D, dezvoltrii de programe n limbaj MATLAB i interfarii
acestora cu sistemul de operare gazd. La aceste funcii predefinite disponibile n nucleul de baz se adaug
un numr nsemnat de pachete de programe (toolbox-uri) acoperind domenii specifice (procesarea
semnalelor, teoria controlului, statistica, reele neurale, calcul simbolic, procesarea imaginilor, optimizare,
etc.). Aceste toolbox-uri, ca i programele utilizatorilor, sunt fiiere surs scrise ntr-un limbaj de programare
simplu propriu mediului MATLAB.
Nucleul MATLAB poate opera att n regim de linie de comand - execuia imediat a comenzii
introduse de utilizator - ct i de interpretor - execuia unui program aflat n form surs ntr-un fiier.
Aceast particularitate a sporit extensibilitatea limbajului permind utilizatorilor s adauge funcii proprii la
setul deja existent (predefinit sau cele din toolbox-urile de firma). Flexibilitatea limbajului este avantajat i
de existena unui singur tip de dat de baz, tipul matriceal avnd ca elemente valori reale sau imaginare.
Spre deosebire de alte limbaje, variabilele nu trebuie declarate i nici dimensionate.
Varianta actual a nucleului MATLAB este scris n ntregime n C i poate rula pe diferite tipuri de
sisteme de calcul (IBM- PC, VAX, SUN, Macintosh). Ea ofer facilitile unui sistem complet integrat avnd
la baz un limbaj propriu i un interpretor performant. Aceasta permite ca exprimarea unui algoritm relativ
complicat s se fac ntr-o form compact, execuia acestuia s se desfoare ntr-un timp acceptabil i cu o
acuratee ridicat, iar afiarea soluiei s se realizeze ntr-un format convenabil, alfanumeric, eventual nsoit de
o form grafic.
1. Elemente fundamentale de utilizarea a nucleului MATLAB
1.1. Lansarea n execuie i interfaarea cu sistemul de operare
n varianta existent pe reeaua din laborator, nucleul Matlab se lanseaz n lucru prin intermediul shortcutului cu numele Matlab. Lansarea n execuie se va face din directorul curent (d:\Matlab\users) i tot aici se vor salva
fiierele temporare necesare relurii unei sesiuni MATLAB.
Odat ajuni sub controlul nucleului MATLAB, prompterul implicit este ">". Nucleul accept
introducerea unei comenzi MATLAB interne sau externe. Comenzile de tip extern sunt de fapt funcii scrise n
limbaj MATLAB (forma surs) care sunt ncrcate, interpretate i executate de nucleu. Execuia unei comenzi
externe poate fi realizat dac fiierul surs cu numele corespunztor i extensie .M se afla n directorul curent sau
n unul din directoarele specificate n calea de cutare a MATLAB- ului.
Exemplu:
afiarea directorului de lucru: dir
creerea unui fiier text se face cu ajutorul editorului notepad; fie acesta test.m
lansarea lui n lucru: test.
n timpul unei sesiuni MATLAB, utilizatorul poate crea i atribui valori unui numr de variabile aflate
n memoria intern afectat nucleului. Pentru a salva aceste valori i a relua ulterior execuia cu acelai context
de lucru se pot utiliza comenzi de salvare/restaurare de forma:
>save <nume-fiier> - salveaz variabilele n fiierul cu numele precizat
>load <nume-fiier> - restaureaz contextul de lucru folosind fiierul precizat
Extensia implicit pentru aceste fiiere este .MAT. Dac numele fiierului este omis atunci implicit se
folosete fiierul MATLAB.MAT.
Funcia "help" permite obinerea unor informaii cu caracter general despre comenzile interne i externe
MATLAB. Ea poate fi apelat n mai multe forme:
help - ofer informaii despre elementele limbajului MATLAB i a fiierelor .M din directorul curent.
help <nume-funcie> - ofer informaii despre funcia n cauz.

Odat cu livrarea "toolbox"-urilor MATLAB, sunt ncorporate i o serie de fiiere .M cu meniuri


demonstrative privind capabilitile diferitelor grupe particulare de funcii. Lansarea meniului demonstrativ
se face cu comanda: demo
1.2. Variabile i spaiu de lucru
n cadrul unei sesiuni MATLAB, deci atta timp ct ne aflam sub prompter ">", putem defini
variabile de tip constant numeric, vector sau matrice, dndu-le nume diferite, desemnate att cu majuscule
ct i cu minuscule ( MATLAB-ul este "case-sensitive").
Tastarea returului de car <CR> va determina afiarea rezultatului sau aciunii liniei introduse
(principiul interpretorului). Dac rezultatului liniei introduse nu i s-a desemnat un nume prin atribuiri
explicite: "variabila=expresie", deci are doar forma "expresie", va fi afiat numele "ans" (answer) ce
desemneaz ultimul rezultat nenominalizat (valoarea expresiei). Cu excepia salvrilor explicite, spaiul de
lucru ce conine toate variabilele de lucru dintr-o sesiune MATLAB, se pierde odat cu prsirea voit sau
accidental a mediului.
Vizualizarea, din cadrul unei sesiuni, a spaiului de lucru se face cu comanda: who, iar a listei
fiierelor .M i .MAT din directorul curent cu comanda: what .
Comanda exist('nume') atest prezena variabilei 'nume' n spaiul de lucru prin returnarea valorii 1;
n caz contrar se va returna 0, iar dac 'nume' este numele unui fiier .M se va returna valoarea 2.
n spaiul de lucru sunt create implicit o serie de variabile i constante cu caracter special dup cum
urmeaz:
ans -cel mai recent rspuns;
eps -precizia relativ n virgul flotant;
pi = 3.1415926;
inf infinit;
NAN - simbol folosit pentru un numr ce nu poate fi reprezentat;
flops - numrul de operaii n virgul mobil efectuate;
nargin - numrul de argumente de intrare ale funciei;
nargout - numr de argumente de ieire ale funciei.
1.3 Introducerea i manipularea vectorilor i matricilor
Masivele (vectori i matrici) pot fi introduse n MATLAB astfel:
1. ca lista explicit de elemente;
2. construite cu ajutorul funciilor i instruciunilor specifice;
3. create cu ajutorul fiierelor .M;
4. ncrcate din fiiere externe.
Spaiul de memorare se aloca automat, la orice nou definire de variabil, pn la completarea
spaiului de lucru, a crui dimensiune depinde de calculatorul folosit.
Cel mai simplu mod de introducere a matricilor este introducerea elementelor pe linie. Separatorul
dintre linii este ; , iar ntregul masiv va fi cuprins ntre paranteze ptrate [...]: > A = [1 2 3; 4 5 6; 7 8 9].
Orice instruciune MATLAB urmat de ';' va determina inhibarea afirii pe ecran a rezultatului
respectivei instruciuni; n caz contrar acesta, sau aciunea specifica, vor fi afiate.
Elementele unei matrici pot fi i expresii:
>x = [-1.3 sqrt(3); (1+2+3)*5 4/5]
sau chiar masive:
>r = [10 11 12]
>A = [A; r]
Elementele unui masiv sunt nominalizate prin nscrierea poziiei elementului n paranteze rotunde.
Comanda: >A(1,2)
furnizeaz elementul de pe linia 1, coloana 2. Putem referi submasive mai mici n cadrul unor masive mai mari
astfel: >A=A(1:3,:)
extrage submatricea formata din liniile 1, 2, 3 indiferent de indicele coloanei.
Vectorii pot fi generai prin comenzi de forma: >x=1:5
care duce la generarea unui vector x=[1 2 3 4 5].
Dac este necesar se poate specifica incrementul, de exemplu:
>y=0 : pi/4 : pi
furnizeaz un vector y=[0.000 0.7854 1.5706 2.3562 3.1416].

1.4. Operatori aritmetici, funcionali i relaionali


Operatorii aritmetici de baza pentru lucrul cu expresii i masive sunt:
+ adunare;
- scdere;
* nmulire;
/ mprire dreapta;
\ mprire stnga;
^ ridicare la putere;
mprirea / i \ este analog pentru expresii, dar provoac ieiri diferite n cadrul calculului
matricial:
A\B este echivalent cu nmulirea la stnga cu inversa lui A (sau soluia ecuaiei A*X=B);
A/B este echivalent cu nmulirea la dreapta cu inversa lui A (sau soluia ecuaiei X*A=B);
n afara acestor operatori exista i operatori specifici lucrului cu masive:
a) operatorul de transpunere ('). Comenzile:
>A = [1 2 3; 4 5 6; 7 8 9]
>B = A'
vor determina ca B sa fie egal cu: B = [1 4 7; 2 5 8; 3 6 0]
Dac A este o matrice complex, atunci A' va produce matricea transpus, complex-conjugat. Pentru a
obine doar transpusa, fr conjugare, se recomand folosirea comenzii: conj(A').
b) radical. Comanda: >sqrt(A)
extrage radicalul din fiecare element al masivului;
c) exponeniere. Comanda: >exp(A)
realizeaz operaia de exponeniere fiecrui element al masivului;
d) logaritmare. Comanda: >log(A)
determina obinerea logaritmului natural al elementelor lui A,
iar comanda >log10(A)
este varianta pentru logaritmare n baza 10;
e) expm(A) - este matricea exponeniala a lui A;
f) det(A) - determinantul matricii A;
g) trace(A)- urma matricii A;
h) inv(A) - inversa matricii A;
i) rank(A) - rangul matricii A;
j) size(A) - determina dimensiunea lui A;
k) length(A) - pentru argument vector, va returna lungimea sa;
Acestora li se mai adaug operatorii de cmp:
a) .* ( nmulire cu punct) - are ca efect nmulirea a doua masive, de aceeai dimensiune, element cu
element. Exemplificare:
>x = [1 2 3]; y = [4 5 6];
>z = x .* y
z = [4 10 18]
b) ./ (mprire cu punct, la dreapta).;
c) .\ (mprirea cu punct, la stnga). Exemplificare:
>z = x .\ y;
z = [4.0000 2.5000 2.0000]
d) .^ (ridicarea la putere cu punct) - va ridica la puterea indicat fiecare element al unui masiv;
Exista 6 operatori relaionali pentru compararea a 2 matrici de aceeai dimensiune; compararea se face
pe perechi de elemente corespunztoare:
a) < mai mic;
b) <= mai mic sau egal;
c) >= mai mare sau egal;
d) == egal;
e) ~= diferit;
Aceti operatori sunt valabili i pentru variabilele de tip constant sau expresie.
1.5. Manipularea matricilor
n continuare vor fi prezentate cteva comenzi ce acioneaz asupra matricilor n ntregime sau
numai asupra unor poriuni a acestora:
a. rot90 - rotirea cu 90 grade;

b. diag(A, k) - extrage elementele de pe diagonala k a unei matrici sau formeaz o matrice cu elementele desemnate n
vectorul A plasate pe diagonala k
c. tril(A) - reine elementele de sub diagonala principal, zerorizndu-le pe celelalte;
d. triu(A) - reine elementele de deasupra diagonalei principale, zerorizndu-le pe celelalte.
Operatori pe coloan acioneaz rnd pe rnd, asupra elementelor fiecrei coloane a unui masiv.
Rezultatul este un vector linie:
a) max(A) - determin elementul maxim pe fiecare coloan;
b) min(A) - determin elementul minim pe fiecare coloan;
c) mean(A) - determin valoarea medie pe fiecare coloan;
d) median(A) - determin valoarea median pe fiecare coloan;
e) sum(A) - suma elementelor pe coloan;
f) prod(A) - produsul elementelor pe coloan;
g) cumsum(A) - suma cumulativ a elementelor pe coloan;
h) cumprod(A) - produsul cumulativ a elementelor pe coloan;
i) cov(A) - matricea de covarian (fiecare coloan este considerat o variabil i fiecare linie o observaie);
j) std(A) - deviaia standard (sqrt(diag(cov(x))));
Observaie:
Dac argumentul din funciile de mai sus este un vector, rezultatul este un scalar.
Generarea matricilor utile se face folosind urmtoarele funcii :
a) zeros(M, N) - genereaz o matrice nul cu M linii i N coloane (la matricile ptrate se poate omite
numrul de coloane);
b) ones(M, N) - genereaz o matrice cu elemente unitare;
c) rand(M, N) - genereaz o matrice cu elemente aleatoare;
d) eye(M, N) - genereaz o matrice identitate.
1.6. Comenzi speciale
Faciliteaz lucrul n cadrul sesiunii de lucru :
a) clear X - terge variabila X din spaiul de lucru;
b) clear - terge toate variabilele din spaiul de lucru;
c) clc - terge ecranul de comanda;
d) ... - semnul de continuare a unei instruciuni pe a doua linie;
e) % - plasat la nceputul liniei, desemneaz o linie de tip comentariu;
f) disp - afiarea datelor i mesajelor sub forma :
disp(A) - afieaz matricea A;
disp('mesaj') - afieaz mesaj.
1.7. Exerciii
a.
b.
c.
d.
e.

Generarea un vector x cu elementele cuprinse ntre 0.0 i 3.0, cu pasul de incrementare de 0.2: x =
(0.0:0.2:3.0)';
Generarea unui vector y ale crui elemente s fie produsul dintre:
sinusul elementului corespunztor din primul vector;
rezultatul exponenierii elementului luat cu semn schimbat din primul vector: y = sin(x).*exp(-x);
S se formeze matricea ce are drept coloane vectorii x i y: A=[x y];
S se determine dimensiunea acestei matrici: size(A);
Sa se anuleze, n matrice, elementele de pe linia 5: A(5,:) = [0 0]

1.8. Probleme propuse


a. S se genereze o matrice ptratica, de dimensiune 4, ce are elemente aleatoare, uniform distribuite n
intervalul (0,1).
b. S se determine rangul acestei matrici.
c. S se determine determinantul acestei matrici.
d. S se transpun elementele matricii.
e. S se rezolve sistemul : A * X = b, unde: A = [1 2 3; 4 5 6; 7 8 0] i b= [5; 8; -7]
f.
S se formeze vectorul ce are ca elemente elementele de pe diagonala principal a lui A.
g. S se genereze vectorii: x=[-1 0 2]' i y = [-2 -1 1]' i s se realizeze operaiile:
- A = x * y'
- B = y * x'

- nmulirea elementelor lui x cu constanta pi;


- Ridicarea lui B la puterea a doua;
- Determinarea inversei lui A;
- Determinarea matricii ce are ca elemente radicalul ptratic din elementele lui A;
- Partea superior triunghiular a lui A;
- Maximul valorilor medii pe coloane pentru A i B;
- Elementele maxime pe linii, respectiv pe coloane i maximul absolut pentru matricele A, B;
- Urma matricelor A, B;
h. S se construiasc o matrice ptratic, de ordin 5, tridiagonal, cu elementele unitare, de forma:

1 1 0 0 0
1 1 1 0 0

z 0 1 1 1 0 folosind o singur comanda MATLAB.

0 0 1 1 1
0 0 0 1 1
2. Faciliti MATLAB
Se urmrete o trecere n revist a facilitilor grafice i de lucru cu fiiere n cadrul mediului
MATLAB. De asemenea, se vor detalia instruciunile ce exercit controlul asupra execuiei comenzilor,
formatele de editare i modul n care se creeaz i se opereaz cu fiierele .M.
2.1. Structuri pentru controlul execuiei comenzilor
2.1.1. Bucla for
Forma general a unei bucle for este:
for variabila=start : pas : final
instruciuni
end
unde:
variabila reprezint variabila de contorizare a buclei;
start reprezint valoarea atribuit iniial variabilei de contorizare;
pas reprezint pasul de incrementare al variabilei de contorizare;
final reprezint valoarea final atribuit variabilei de contorizare;
instruciuni reprezint o succesiune de una sau mai multe comenzi MATLAB;
end marcheaz sfritul buclei for.
Dac instruciunile sunt urmate de caracterul ";" se inhib afiarea rezultatelor intermediare din bucla
for (se recomand folosirea lui).
Exemplu:
n=10;
for i=1:n
x(i)=i^2;
end;
Pot exista i situaii n care este necesar folosirea mai multor bucle for imbricate; n aceste cazuri
buclele trebuie s fie strict incluse una n cealalt i s respecte forma general de scriere.
Exemplu:
m=6; n=8;
for i=1:m
for j=1:n
A(i,j)=1/(i+j-1);
end
end
A
Observaie:
Neintroducerea terminatorului end n bucla for determin neexecuia buclei. Sistemul rmne n stare de
ateptare pn la introducerea lui end.

2.1.2. Bucla WHILE


Aceasta permite ca o instruciune sau un grup de instruciuni s fie repetat de un numr neprecizat de
ori n funcie de o condiie logic. Forma sa general este:
while condiie
instruciuni
end
Exemplu:
S se determine primul numr ntreg n, pentru care factorialul (n!) este un numr de 5 cifre:
n=1;
while prod(1:n)<1.e4
n=n+1;
end
n
Bucla va fi executat att timp ct condiia (n!<1.e4) este ndeplinit.
2.1.3. Instruciunea IF
Instruciunea IF este folosit pentru luarea unei decizii multiple. Forma sa general este:
if condiie-1
instruciuni-1
elseif condiie-2
instruciuni-2
.................
else
instruciuni-rest
end
iar forma cea mai simpl:
if condiie
instruciuni
end
Dac condiia-1 este ndeplinit, se vor executa instruciuni-1; dac ns ea nu este ndeplinit, se
testeaz condiia-2; dac aceasta este satisfcut, se va executa grupul 2 de instruciuni .a.m.d. Dac nici
una din condiii nu este ndeplinit, se execut grupul instruciuni-rest.
n general condiia apare sub forma:
expresie operator-relaional expresie
unde operatorul relaional poate fi: <, <=, >, >=, ==, ~=.
Exemplu:
S se construiasc o matrice ptratic de dimensiune n = 4 n care elementele de pe diagonala principal sunt
egale cu 2, cele de pe diagonala de deasupra i de dedesubtul diagonalei principale sunt egale cu 1 iar restul
cu 0.
for i=1:n
for j=1:n
if i==j
a(i,j)=2;
elseif abs(i-j)==1
a(i,j)=-1;
else
a(i,j)=0;
end
end
end
Observaie:
Ori de cte ori este posibil, n vederea obinerii vitezei maxime de lucru sub MATLAB, se ncearc transformarea buclelor
for i while n operaii matriciale.
Exemplu:
Secvena de mai jos poate fi transformat astfel:

i=0;
for t=0:0.01:10
t=0:0.01:10;
i=i+1;
y=sin(t);
y(i)=sin(t);
end
O astfel de transformare determin o cretere a vitezei de lucru de aproximativ 25 de ori. O alt metod de
mrire a vitezei de lucru este cea de prealocare a oricror vectori pentru care se dorete determinarea elementelor.
Exemplu:
y=zeros(1,100);
for i=1:100
y(i)=2*i^2;
end
Fr prealocare, interpretorul MATLAB-ului redimensioneaz, la fiecare pas din for vectorul iniial
mrindu-i dimensiunea cu o unitate; acest pas este eliminat la prealocare, memoria fiind utilizat mult mai
eficient. Principalul inconvenient n memorarea n spaiul de lucru deriv din faptul c memoria tinde s
devin fragmentat n cursul unei sesiuni de lucru, astfel nct, dei exist suficient spaiu de stocare, acesta
nu este contiguu pentru a permite stocarea unei variabile de dimensiune mare. Spaiul de memorare
disponibil, afiat n urma lansrii comenzii who reprezint spaiul contiguu disponibil pentru memorare;
spaiul disponibil total este sensibil mai mare. Acest spaiu devine vizibil mai mare dac tergem variabila de
dimensiune maxim din spaiul de lucru.
2.1.4. Instruciunea BREAK
Aceast instruciune determin ieirea forat dintr-o bucl for, while sau dintr-un if.
Exemplu:
S se determine precizia de calcul pentru maina de lucru:
eps=1;
for i=1:1000
eps=eps/2;
if (eps+1<=1)
break;
end
end
eps=eps*2;
2.2. Fiiere de comenzi indirecte ( .M) i fiiere funcii
MATLAB-ul este capabil s execute secvene de comenzi memorate n fiiere cu extensie .M. Un
fiier.M este format dintr-o succesiune de instruciuni MATLAB ce pot include i referiri la alte fiiere .M,
incluznd chiar fiierul n cauz (apel recursiv). Lansarea n lucru a unui astfel de fiier se face prin
introducerea numelui su. n acest fel se pot memora i executa secvene mai lungi de comenzi fr ca ele s
fie introduse de fiecare dat de la tastatur. Prelucrrile efectuate afecteaz n mod global zona de variabile.
Exist i un al doilea tip de fiiere .M, care permite extinderea pachetului MATLAB i construire de noi
funcii. n acest caz se specific argumentele funciei iar variabilele folosite au caracter local. Ambele tipuri de fiiere .M
sunt fiiere text ASCII i pot fi create cu ajutorul unui editor de texte.
2.2.1. Fiiere de comenzi indirecte ("script files")
La apelarea unui fiier script, MATLAB-ul va executa instruciunile cuprinse n acesta, linie cu linie,
neateptnd nici o comand de la tastatur.
Exemplu:
%se calculeaz numerele lui Fibonnaci
f=[1 1];
i=1;
while f(i)+f(i+1)<1000
f(i+2)=f(i)+f(i+1);
i=i+1;
end
Dup execuia unui fiier.M controlul revine MATLAB-ului. Meniurile demonstrative ncorporate n
MATLAB reprezint un exemplu de folosire a fiierelor.M.

2.2.2. Fiiere funcii


Dac un fiier.M specific o funcie, atunci prima linie trebuie s conin cuvntul function. Un
fiier funcie se deosebete de un fiier document prin faptul c el poate s transfere argumente cu spaiul de
lucru, iar variabilele definite n interiorul su sunt locale, neopernd global asupra spaiului de lucru.
Exemplu:
Funcia MEAN ce calculeaz valoarea medie, pe coloane, ntr-o matrice:
function y=mean(x)
% MEAN calculeaz valoarea medie a unui vector sau media, pe
% coloane, intr-o matrice; in ultimul caz va returna un vector linie
[m,n]=size(x);
if m==1
m=n % izolam cazul vector linie
end
y=sum(x)/m;
Exemplu de apel:
>z=1:99;
>mean(z)
>ans=50
Exemplul prezentat pune n evident urmtoarele:
- prima linie declar numele funciei, argumentele de intrare i cele de ieire; fr aceast linie, fiierul ar
fi de tip script;
- simbolul % marcheaz restul liniei drept comentariu; comentariile vor fi afiate la introducerea comenzii
"help mean";
- variabilele m,n sunt locale funciei mean i nu vor exista n spaiul de lucru dup prsirea funciei (sau,
dac exist cu acest nume, nu vor fi schimbate prin apelul funciei);
- la apelul lui mean, funciei i se transmite argumentul efectiv z, pe poziia parametrului formal
corespunztor x.
Observaie:
Exist 2 variabile permanente nedetaliate la descrierea spaiului de lucru:
- nargin - numrul argumentelor de intrare ntr-o funcie;
- nargout - numrul argumentelor de ieire dintr-o funcie;
n momentul apelului pentru prima dat intr-o sesiune de lucru a unui fiier funcie, acesta va fi compilat
i plasat n memorie. El va putea fi ulterior reapelat, fr a fi necesar o recompilare. Codul respectiv va fi pstrat
n memoria de lucru pe durata ntregii sesiuni dac lipsa de spaiu nu face necesar tergerea sa. La un apel
oarecare n cadrul unei sesiuni de lucru a unui nume oarecare, nucleul MATLAB face urmtoarele verificri:
- verific dac acesta este o variabil n spaiul de lucru;
- verific dac acesta este o funcie;
- verific daca numele coincide cu numele unui fiier.M n:
- directorul curent;
- calea de directoare specificat in MATLABPATH.
2.2.3. Comenzi utile in lucrul cu fiiere funcii
n mod normal, execuia unui fiier.M nu determin afiarea comenzilor sale pe ecranul de comand.
Pentru a produce aceast imprimare se folosete una din comenzile:
>echo
>echo on
% activeazafiarea in ecou;
>echo off
% inhib afiarea in ecou;
Aceasta poate fi util pentru vizualizare, demonstraii i depanare. Furnizarea datelor de ctre
utilizator, att n sesiunea de lucru, ct i n interiorul funciilor se face prin comanda: variabila =
input('mesaj'), unde:
variabila reprezint variabila care va cpta ca valoare expresia introdus de utilizator;
mesaj reprezint mesajul afiat pe monitor nainte de citirea unei valori.
2.3. Funcii grafice n MATLAB
2.3.1. Grafica n coordonate rectangulare
Dac y este un vector, comanda: plot(y) produce afiarea elementelor lui y n funcie de indexul
elementelor.

Observaie: Datele sunt autoscalate i axele x i y sunt desenate pe ecran. Desenul este afiat pe ecranul
grafic; pe sistemele cu varianta MATLAB sub Windows ambele ecrane - de comanda i grafic- pot fi
vizualizate simultan.
Acestei comenzi de desenare simpl i se pot adaug:
- inscriptionarea unui titlu;
- etichetarea axelor;
- trasarea verticalelor i orizontalelor n dreptul fiecrei diviziuni de pe axe;
Exemplu:
y = [0 48 84 1 91 6 14];
plot(y);
title('Primul desen'), xlabel('Abscisa'),
ylabel('Ordonata'), grid
Dac x i y sunt vectori de aceeai lungime, comanda: plot(x,y) deseneaz elementele lui y funcie de
elementele lui x.
Exemplu:
t = 0:0.05:4*pi;
y = sin(t);
plot(t,y)
Pentru a suprapune mai multe grafice pe aceeai fereastr, se va proceda astfel:
- dac y este o matrice i x este un vector, plot(x,y) va trasa graficele corespunztoare liniilor sau
coloanele lui y n funcie de vectorul x, folosind caractere diferite pentru fiecare dintre ele;
- dac x este o matrice i y un vector se aplic o regul similar trasndu-se graficele corespunztoare liniilor
lui x n funcie de vectorul y;
- dac x i y sunt matrici de aceeai dimensiune, se va trasa graficul corespunztor coloanelor lui y funcie
de coloanele lui x.
Un alt mod de a realiza desene multiple este exemplificat prin comanda:
plot(x1,y1,x2,y2,...,xn,yn)
unde (x1,y1),(x2,y2),... sunt perechi de vectori. n acest fel se obine reprezentarea grafic pentru fiecare pereche
(x,y). cest tip de grafic are avantajul c permite afiarea simultan a vectorilor de lungimi diferite. Fiecare pereche
de vectori va folosi un alt tip de linie pentru afiare. Se poate indica tipul de caracter cu care se face trasare.
Valorile posibile sunt:
solid
intrerupt(dashed)
-doua puncte(dotted)
:
linie-punct(dashdot)
-.
punct(point)
.
plus
+
stea(star)
*
cerc(circle)
o
x-mark
x
Pentru monitoare color se poate utiliza o opiune de culoare: 'w' (white), 'r' (red), 'g' (green), 'b' (blue).
2.3.2. Grafic n coordonate polare i logaritmice
Aceast facilitate permite folosirea altor tipuri de coordonate. Funciile specifice sunt similare cu
cele prezentate mai sus.
- polar(theta,rho) - reprezint grafic, n coordonate polare, unghiul "theta" (n radiani) n funcie de raza
"rho";
- loglog(x,y) - realizeaz grafice n coordonate logaritmice pentru ambele axe;
- semilogx(x,y) - realizeaz grafice reprezentnd pe x n coordonate logaritmice i pe y liniar.
- semilogy(x,y) - analog ca mai sus inversnd x cu y.
2.3.3. Suprafee mesh 3-D i grafice de tip contur
Comanda urmtoarea creeaz imaginea tridimensionala a matricii Z: mesh(Z).
O suprafa mesh este definit prin coordonatele de cot z determinate de elementele matricei
deasupra unei suprafee x-y, plane. Funcia mesh poate fi astfel folosit pentru vizualizarea matricilor de
dimensiune mare, imposibil de reprezentat sugestiv prin forma numeric. De asemenea, aceast comand
poate fi folosit pentru reprezentarea grafic a funciilor ce depind de dou variabile: z=f(x,y). Pentru a putea

face reprezentarea se creeaz mai nti, o reea plan, echidistant divizat pe cele dou axe sub forma unei
matrici:
Exemplu:
x = -8:0.5:8;
y = x';
X = ones(y)*x; % creeaz o matrice cu linii identice
Y = y*ones(x);
R =sqrt(X.^2 +Y.^2)+eps; % conine distanele de la centrul suprafeei plane;
Z = sin(R)./R;
mesh(Z)
Generarea matricilor X i Y poate fi optimizat prin apelul funciei meshdom.
Observaie:
Opiunile comenzii mesh permit diferite unghiuri de vedere i deprtri de suprafaa generat.
O alt categorie de grafice l constituie cele de tip "contur". Efectul lor se poate observa dup
secvena de forma:
p = rand(4,7);
contour(p)
2.3.4. Controlul ecranului
Comutarea ntre ecranul grafic i cel de comand precum i divizarea ecranului grafic sunt disponibile n
MATLAB cu ajutorul urmtoarelor comenzi:
- shg - comut pe ecranul grafic;
- clg - terge ecran grafic;
- home - mut cursorul n coltul stnga-sus al ecranului (analoga clc);
- subplot(m,n,p) - subdivizeaz ecranul grafic; parametrii m, n, p au urmtoarea semnificaie:
m reprezint numrul de grafice pe linie;
n reprezint numrul de grafice pe coloan;
p reprezint poziia primului grafic inscripionat n partiia ecran realizat;
Exemplu:
subplot(2, 1, 1), plot(abs([2 -7 3 5 17 -25]))
subplot(2, 1, 2), plot(rand(1,10));
Observaie:
1. Se pot scrie mai multe instruciuni pe aceeai linie, separate prin virgule.
2. n unele situaii se renun la scalarea automat a graficului n favoarea unei scalri manuale, cu ajutorul
comenzilor:
v = [x_min, x_max, y_min, y_max];
axis(v)
3. Pentru a evita efectul deformant introdus de ecran se poate utiliza comanda: axis('square')
4. Meninerea unui grafic pe ecran n vederea suprapunerii unui alt grafic poate fi obinut cu ajutorul
funciei hold.
2.4. Probleme propuse
1. S se scrie o funcie MATLAB, rangk(x, k) care s permit determinarea elementului aflat pe rangul k (dac x este
un vector) sau a vectorului de elemente aflate pe rangul k n coloanele matricei (dac X este o matrice).
function y=rangk(x, k) % RANGK elementele de pe rangul K
% Daca X este un vector, RANGK(X,K) furnizeaz elementul de pe
% rangul K din X. Daca X este o matrice, RANGK(X,K) furnizeaz un vector %linie continnd elementele de
pe rangul K al fiecrei coloane
if nargin ~= 2
error('argument missing');
end
[m,n]=size(x);
if(n == 1) x=x';
temp=m;
m=n;
n=temp;
end

10

if(k > n | k < 1)


error('invalid rang');
end
if (m==1)
y=x(k);
else
y=x(k,:);
end
2. S se vizualizeze folosind acelai ecran grafic urmtoarele funcii:
a) f(x)=x3+4x-15; g(x)=sinx+sin2x+sin4x;
b) f(x)=e-1/xcosx; g(x)=cosx+cos3x+cos5x; h(x)=tgx/x,
1 5 x 1 3x 4 pentru x [ 1,50 )
c) f ( x )

x1 / 2 pentru x [ 50 ,100 ]
3. S se deseneze suprafaa mesh i contur pentru matricea 25x25:
- matrice de numere aleatoare uniform distribuite n intervalul (0,1);
- matrice de numere normal distribuite de medie zero i dispersie 1;
Obs. Pentru generarea numerelor aleatoare se folosesc funciile Matlab rand i randn.
4. S se genereze un vector de numere aleatoare uniform distribuite n intervalul (1,100); s se mpart
intervalul [1,100] n 10 intervale echidistante i s se determine cte numere aleatoare sunt n fiecare din
cele 10 intervale.
5. S se scrie o funcie MATLAB, coincid(x,y) care s primeasc ca argument doi vectori x, y i s ntoarc
numrul de coincidente ntre elementele acestora. Argumentele care lipsesc se vor prelua de la tastatur.
6. S se modifice funcia RANGK descris anterior astfel nct dac numrul de argumente este 1, vectorul
sau matricea x se citesc dintr-un fiier ASCII al crui nume se preia de la tastatur. Verificai existena
fiierului n cauz. (indicaie: folosii funciile LOAD, EXIST.)

11