Sunteți pe pagina 1din 9

LABORATOR 1

PACHETUL DE PROGRAME MATLAB


1.1. Funcii MatLab de interes general
Funcii de control general
O dat cu lansarea n execuie a programului, utilizatorul afl primele comenzi folosite n lucrul cu
MatLab. Pentru controlul general al mediului de programare MatLab, se utilizeaz funciile:

help - furnizeaz informaii despre MatLab i funciile acestuia;


type - listeaz fiierul (*.m) menionat. Exemplu: type nume_fiier;
which - returneaz calea n care este localizat un fiier sau o funcie MatLab;
who - listeaz variabilele curente din memorie.

Funcii pentru controlul directoarelor i fiierelor


dir - afieaz numele tuturor fiierelor din directorul curent sau din orice alt director precizat ca
argument;
delete - permite tergerea unui fiier sau a unui grafic;
Exemplu: delete nume_fiier;
cd - returneaz numele directorului curent. Dac se schimb directorul, atunci se apeleaz la sintaxa:
cd cale/num_director.

Funcii asociate ferestrei de comenzi


clc - terge fereastra de comenzi;
home - poziioneaz cursorul n locaia corespunztoare primei linii i primei coloane;
more(n) - funcie pentru afiarea succesiv a n linii dintr-un program sau matrice de date. Cu tasta
ENTER se trece la urmtoarea secven de n linii, iar cu tasta Q se prsete modul de afiare cu numr
de linii impus;
echo - funcie cu ajutorul creia se afieaz liniile de program n timpul execuiei acestora. In mod normal
comenzile din fiierele (*.m) nu snt afiate n timpul execuiei.

Funcii pentru importul i exportul de date


load ncarc variabilele dintr-un fiier de date de pe disc. Incrcarea unui fiier de date se apeleaz cu
sintaxa:
load nume_fiier format date
unde:
nume_fiier este numele fiierului care se dorete ncrcat;
format_date este formatul datelor (ASCII sau BINAR) din acel fiier.
Dup ncrcare, datele se regsesc n memoria calculatorului cu numele pe care l-a avut fiierul de date
indiferent de forma n care fuseser stocate anterior;
save salveaz variabilele ntr-un fiier de date pe disc. Se apeleaz cu sintaxa:

save nume_fiier nume variabile format_date


unde nume_fiier este numele fiierului n care se salveaz variabilele nume_variabile, n formatul
format_date (ASCII sau BINAR).

Funcii de control ale variabilelor din memorie


disp - afieaz o matrice fr s tipreasc numele acesteia. Se apeleaz cu sintaxa:
disp(X)
unde X este un text (care se pune ntre apostrofuri) sau matrice;
clear - terge variabilele din spaiul de lucru al aplicaiei. clear X terge variabila X din spaiul de lucru;
size - determin dimensiunea variabilelor n MatLab,
Exemplu: size (X)
returneaz un vector linie cu dou componente [m, n], care conin numrul de linii m i de coloane n ale
matricei X;
length - returneaz dimensiunea maxim a unei matrice sau lungimea unui vector. Aceast funcie este
echivalent cu instruciunea max(size(X)).

Variabile speciale i constante


ans - variabil creat automat, n care este returnat rezultatul unui calcul, atunci cnd expresia nu a avut
atribuit un nume;
eps - variabil n care este memorat eroarea relativ pentru calculele efectuate n virgul mobil.
Valoarea ei implicit este eps = 2,2204e-016, dar poate fi redefinit la orice alt valoare;
pi - variabil permanent pi = 3,141592;
i = 1 - variabil folosit pentru introducerea numerelor complexe z = a + bi;
inf - variabil folosit pentru reprezentarea lui plus infinit, rezultat al mpririi .../0.0;
NaN - variabil folosit pentru reprezentarea lui Not-a-Number, rezultat al mpririi nedefinite 0.0/0.0.

1.2 Calculul numeric cu MatLab


Calculele aritmetice asupra tablourilor de date n MatLab pot fi:
operaii dup regulile calculului matriceal operaii cu matrice;
operaii dup regulile calcului scalar operaii cu tablouri.

Operaii aritmetice cu scalari


Expresiile aritmetice pot fi evaluate i rezultatul memorat n variabilele specificate. Astfel, instruciunea:
X =A+ B
atribuie variabilei X, suma dintre variabilele A i B (ale cror valori sunt cunoscute). La fel se ntmpl i n
cazul operaiilor de scdere, nmulire, mprire i ridicare la putere.
O valoare introdus fr nominalizare este atribuit variabilei ans. In variabila ans este memorat n
permanen valoarea ultimei variabile creia nu i s-a atribuit un nume.
Tabelul 1.1. Forma MatLab a operaiilor cu scalari
Operaia
Forma
Forma
Matlab
Adunare
A+B
A+B
Scdere
AB
AB

Inmulire
Imprire
la
dreapta
Imprire la stnga
Ridicare la putere

AxB
A:B

A*B
A/B

B:A
AB

A\B
A^B

Operaii aritmetice cu tablouri


Operaiile cu tablouri (matrice sau vectori) snt operaii aritmetice ntre elementele situate n aceeai
poziie a tablourilor, cunoscute sub numele de operaii element cu element.
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 .*, adic:
X = A .* B
Pentru efectuarea operaiilor cu tablouri se folosesc aceeai operatori ca n operaiile cu scalari, precedai
de semnul punct ., semn ce indic efectuarea operaiilor n ordinea element cu element. Dac unul dintre
operani este un scalar, acesta opereaz cu fiecare element al tabloului.

1.3. Introducere n programarea MatLab


Matrici, vectori, scalari
MatLab-ul este un pachet de programe care lucreaz cu un singur tip de obiecte, matrici cu elemente
reale sau complexe. In acest sens, scalarii snt asimilai matricilor cu o linie i o coloan (1x1), iar vectorii
snt asimilai matricilor cu o linie (1xn) sau o coloan (nx1).
Pentru folosirea matricilor nu este necesar nici declararea, nici dimensionarea lor. Aceste operaii snt
efectuate automat atunci cnd se lucreaz cu o nou variabil de tip matrice. Mai mult, dimensiunea unei
matrice se modific automat n timpul utilizrii variabilei care identific acea matrice. Definirea matricilor se
face astfel:
elementele unei linii trebuie separate prin virgule sau spaii;
liniile se separ prin punct-virgul;
elementele matricei snt cuprinse ntre paranteze drepte i pot i pot fi numere reale sau complexe.
Exemplu: X = [5 9 12;7 9 10]

Operatori n MatLab
Operatori aritmetici
+ plus; - minus; .* multiplicare tablouri; * multiplicare;
/ mprire la stnga pentru matrici; \ mprire la dreapta pentru matrici;
^ ridicare la putere; - transpunerea unei matrice.

Operatorii relaionali
= = identitate; > mai mare; < mai mic; >= mai mare sau egal;
<= mai mic sau egal; ~ = diferit.
Operatori logici
& (AND) I; ~ (NOT) negare; | (OR) SAU; XOR SAU EXCLUSIV.
La efectuarea calculelor cu valori, true este orice diferit de 0.

Caractere speciale
punct i virgul ; indic sfritul de linie n crearea matricilor i suprimarea afirii cnd se evalueaz
o funcie;
dou puncte : - folosite pentru iniializarea unui vector;
Exemplu: X = 0 : 2 : 10 este echivalent cu X = 0 ;2;4;6;8;10
paranteze rotunde () indic ordinea de efectuare a operaiilor aritmetice, apelul unei funcii sau
adresarea unui element dintr-o matrice;
parantezele drepte [] utilizate n crearea vectorilor sau matricilor;
transpus - transpusa unei matrice;
caracterul % permite introducerea unui comentariu. Dac acest semn va apare ntr-un program, partea
aferent nu este executat.

1.4. Instruciuni repetitive


Instruciunea IF simpl
Instruciunea if poate fi implementat ca instruciune if simpl, sau, poate include clauzele else sau elseif.
Forma general a unei instruciuni if simple, este:
-----------------------------if expresie_logic
grup de instruciuni;
end
- - - -- - - - - - - - - - - - - - - - - - - - - - - - - Dac expresia logic este adevrat se execut grupul de instruciuni dintre if i end. Dac expresia logic
este fals, se trece la prima instruciune ce urmeaz dup end.
Exemplu:
-----------------------------if a < 50
k = k + 1;
s = s + k;
end
- - - -- - - - - - - - - - - - - - - - - - - - - - - - - Dac a este un scalar i dac a < 50, k se incrementeaz cu 1 i apoi se adun cu s. Altfel, cele dou
instruciuni snt omise, s i k rmnnd cu valoarea cu care au fost iniializate nainte de a ajunge la
instruciunea if.
Clauza ELSE
Clauza else este utilizat pentru a executa un set de instruciuni, dac expresia logic este adevrat i un
alt set de instruciuni, dac expresia logic este fals. Forma general a instruciunii if combinat cu clauza
else este urmtoarea:
-----------------------------if expresie_logic
grup de instruciuni A;
else
grup de instruciuni B;
end
- - - -- - - - - - - - - - -- - - - - - - - - - - - - - -

Dac expresia logic este adevrat se execut grupul de instruciuni A, iar dac este fals, se execut
grupul de instruciuni B.
Exemplu:
-----------------------------if X <= 2
f = 2 * X + 8;
else
f = 3 * X ^ 2;
end
- - - - -- - - - - - - - - - -- - - - - - - - - - - - - - Clauza ELSEIF
Dac funcia de calculat are mai multe nivele de instruciuni if-else, este dificil determinarea expresiei
logice adevrate, care selecteaz grupul de instruciuni ce urmeaz a fi executat. In acest caz, se utilizeaz
clauza elseif:
-----------------------------if expresie_logic_1
grup de instruciuni A;
elseif expresie_logic_2
grup de instruciuni B;
elseif expresie_logic_3
grup de instruciuni C;
end
- - - -- - - - - - - - - - -- - - - - - - - - - - - - - - - Daca expresia logic_1 este adevrat, este executat numai grupul de instruciuni A. Dac expresia logic
1 este fals i expresia 2 este adevrat este executat numai grupul de instruciuni B. Dac expresiile
logice_1 i 2 snt false, iar 3 este adevrat este executat numai grupul de instruciuni C.
Clauza elseif poate fi combinat cu clauza else ntr-o structur general:
- - - - - - - - - - - - -- - - - - - - - - - - - - - - - if expresie_logic_1
grup de instruciuni A;
elseif expresie_logic_2
grup de instruciuni B;
elseif expresie_logic_3
grup de instruciuni C;
else grup de instruciuni D;
end
- - - -- - - - --- - - - -- - - - - - - - - - - - - - Dac nici o expresie logic dintre primele trei nu este adevrat, se va executa grupul de instruciuni D.

Instruciunea repetitiv FOR


Aceast instruciune permite repetarea unui grup de instruciuni din corpul buclei, de n ori. Are
urmtoarea schem general:
- - - - -- - - - --- - - - -- - - - - - - - - - - - - - for index = expresie
grup de instruciuni;
end
- - - -- - - - --- - - - -- - - - - - - - - - - - - - -

unde:
index numele contorului;
expresie matrice, vector sau scalar;
grup de instruciuni este orice expresie MatLab.
In aplicaii, expresie este de cele mai multe ori de forma:
k = iniial : pas : final
unde:
iniial prima valoare a lui k;
final ultima valoare a lui k;
pas pasul de incrementare (este omis dac pas = 1).
La fiecare pas de calcul index are valoarea unuia dintre elementele expresiei.
Dac expresie este o matrice, ciclarea se face pe coloane. Pentru un ciclu for cu pas negativ sau nentreg
se genereaz mai nti un vector cu pasul i limitele dorite i se citesc valorile acestuia n cadrul buclei for.
La folosirea lui for trebuie respectate urmtoarele reguli:
indexul trebuie s fie o variabil;
dac expresia este un vector linie, bucla se execut de attea ori cte elemente are vectorul, de fiecare dat
indexul avnd valoarea egal cu urmtorul element din vector;
daca expresia este o matrice, indexul va avea loc la fiecare iteraie valoarea coninut n urmtoarea
coloan a matricei;
la terminarea ciclului, indexul are ultima valoare utilizat;
dac se utilizeaz operatorul : pentru a defini expresia, ca n urmtorul exemplu:
for k = iniial: pas : final
bucla se executa de n ori:
final initial
1.
pas

Instruciunea repetitiv WHILE


Aceast instruciune este o structur ce se utilizeaz pentru repetarea unui set de instruciuni, atta timp ct
o condiie specificat este adevrat. Formatul general al acestei instruciuni:
- - - - -- - - - --- - - - -- - - - - - - - - - - - - - while expresie
grup de instruciuni;
end
- - - -- - - - --- - - - -- - - - - - - - - - - - - - Grupul de instruciuni se executa ct timp expresie are toate elementele nenule. Expresie este de obicei
de forma:
- - - - -- - - - --- - - - -- - - - - - - - - - - - - - expresie_1 condiie expresie_2
- - - -- - - - --- - - - -- - - - - - - - - - - - - - Condiia poate fi constituit din unul dintre operatorii relaionali: ==, <, >, >=, <=, ~=.
In momentul n care condiia este verificat, se execut grupul de instruciuni. Dup ce se execut grupul
de instruciuni, condiia este retestat. Cnd condiia este din nou adevrat, grupul de instruciuni se executa
din nou. Cnd condiia este fals, se trece la urmtoarea instruciune de dup instruciunea end. Dac
expresia este ntotdeauna un adevr logic (valoare diferit de zero), bucla devine infinit, atunci se face
comanda Ctrl + C ieire forat.

Instruciunea BREAK
Aceast instruciune 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 in interiorul unei bucle. Se mai folosete
pentru a nceta execuia ciclurilor for i while. In cazul unor cicluri imbricate, break comand ieirea din
ciclul cel mai interior.

1.5. Reprezentri grafice 2D


Reprezentarea grafic n coordonate liniare
Pentru reprezentarea datelor n coordonate liniare se utilizeaz funcia plot, funcie ce se apeleaz cu una
dintre sintaxele:
plot(Y), plot(X, Y, linie_tip), plot(X, Y), plot(X1, Y1, X2, Y2, )
plot(Y) reprezint grafic argumentul funciei Y funcie de indici, cu urmtoarele precizri:
- dac argumentul Y este complex, plot(Y) este echivalent cu plot(real(Y),imag(Y));
- dac Y este un vector (linie sau coloan), funcia plot traseaz graficul Y = Y(i) , unde i = 1, 2, 3, ..., n
este numrul de ordine al elementului Y;
- dac Y este o matrice m x n, funcia plot traseaz graficele Yj = Yj (i), unde i = 1, 2, 3, ..., n este
numrul de ordine al elementului de pe coloana j;
plot(X, Y) reprezint grafic vectorul Y funcie de vectorul X, cu precizrile urmtoare:
- dac X este vector, iar Y este matrice, atunci coloanele lui Y snt trasate funcie de vectorul X;
- dac X i Y snt matrici de aceeai dimensiune, se reprezint coloanele lui Y funcie de coloanele lui
X;
plot(X1, Y1, X2, Y2) reprezint simultan mai multe grafice n acelai sistem de coordonate.
Pentru reprezentrile grafice, se asociaz fiecrei caracteristici un ir de 1 3 caractere. Aceste iruri de
caractere trebuie cuprinse ntre apostrofuri i menionate n combinaia culoare marker sau culoare linie
tip. Dac se precizeaz o singur caracteristic (marker, linie sau culoare), cea de-a doua este selectat de
calculator.
Pentru o citire mai precis a datelor, pe grafic, reprezentarea se poate asocia cu funcia de trasare a
caroiajului (funcia grid).

Reprezentarea graficelor cu bare


Reprezentarea grafic cu bare se poate face cu funcia bar i se apleaz cu una dintre sintaxele:
bar(Y); bar(X, Y); [xb, yb] = bar(Y); [xb, yb] = bar(X, Y)
bar(Y) traseaz un grafic de bare cu elementele vectorului Y;
bar(X, Y) traseaz un grafic de bare cu elementele vectorului Y, la locaiile specificate de vectorul X,
adic Y = Y(X). Valorile lui X trebuie s fie egal deprtate i cresctoare;
[xb, yb] = bar(Y), [xb, yb] = bar(X, Y) nu reprezint graficele, dar calculeaz vectorii xb, yb, astfel
nct plot(xb, yb) s poat trasa graficul de bare. Aceasta este util n situaiile n care se dorete un
control mai mare asupra graficului.

Divizarea ferestrei grafice


Funcia subplot creeaz i controleaz acoperirea ecranului cu ferestre grafice. Se apeleaz cu sintaxa:
subplot(m, n, p)

Funcia subplot(m, n, p) mparte ecranul ntr-o matrice m x n, creeaz axele n subfereastra p i


returneaz identificatorul de control al noilor axe. Argumentele m, n i p trebuie s fie numere ntregi n
intervalul 1, 9. Scalarul m precizeaz n cte subferestre se mparte fereastra pe vertical, iar n specific
mprirea pe orizontal.

Personalizarea graficelor
Prin personalizarea graficelor se nelege plasarea n cmpul acestora a unor texte, etichete ale axelor, a
unitilor de msur, a scalelor, precum i a titlului.
Titlul graficului curent se plaseaz deasupra acestuia cu funcia title. Se apeleaz cu sintaxa:
title(text)
unde text este un ir de caractere care reprezint titlul graficului.
Precizarea numelui mrimilor reprezentate pe fiecare ax, precum i a unitilor de msur folosite, se
face cu funciile xlabel (pentru axa x) i ylabel (pentru axa y).
Plasarea unui text n cmpul grafic se face cu funcia text; se apeleaz cu sintaxa:
text (x, y, text)

1.6. Aplicaii
1. S se genereze ntr-un vector numerele de la 10 la 100, alegnd un pas arbitrar.
2. Se va considera un sistem de 4 ecuaii cu 4 necunoscute i se va rezolva prin metoda direct.
3. Fie A o matrice i p un scalar. Se cere s se determine: A/p; p*A; Ap, A+p; A-p. determinatul, inversa i
transpusa matricei A (p ntreg pozitiv).
4. Se vor rezolva urmtoarele probleme:
S se descrie i s se reprezinte grafic funcia modul, definit de relaia:

x daca a x 0
y ( x)
x daca 0 x b
S se descrie i s se reprezinte grafic funcia definit de relaia:

x 2 2 * x daca {a x 0} {c x d}

y ( x)

x 3 5 * x 1 daca b x c

S se genereze o matrice A, cu n linii si n+1 coloane, ele crei elemente snt:

2 daca i j 1

A(i, j) 1 daca | i j | 1
0 in rest

5. S se creeze un fiier funcie care s schimbe ordinea coloanelor unei matrice X, astfel nct elementele
din prima linie s fie ordonate cresctor. Parametrul de ieire al fiierului funcie va fi matricea X
modificat.