Sunteți pe pagina 1din 11

ndrumar de laborator

Teoria Sistemelor

INTRODUCERE N MATLAB

OBIECTIVE

Descrierea programului Matlab.


Lucrul cu ferestre.
Meniurile programului Matlab.
Programarea n Matlab.
Crearea fiierelor script i function.
Instruciuni i funcii de control logic.
Variabile speciale.

1.1. Introducere
Matlab este un pachet de programe de nalt performan, ce integreaz
calculul numeric i reprezentrile grafice n domeniile tiinei i ingineriei. Matlab
ofer, pe baza unor lucrri matematice, o analiz matriceal, sinteza i identificarea
sistemelor i programe grafice inginereti att 2D ct i 3D. Matlab-ul integreaz
toate acestea ntr-un mediu uor de nvat i folosit, n care enunurile problemelor i
rezolvrile acestora sunt exprimate n modul cel mai natural posibil, aa cum sunt
scrise matematic, fr a fi necesar programarea tradiional.
O caracteristic important a acestui limbaj de programare este uurina cu
care acesta poate fi extins. Astfel, orice utilizator poate aduga propriile programe
scrise n Matlab la fiierele originale, dezvoltnd aplicaii specifice domeniului n care
lucreaz. Structural, Matlab-ul, este realizat sub forma unui nucleu de baz, cu
interpretor propriu, n jurul cruia sunt construite toolbox-urile. Toolbox-urile sunt
colecii extinse de funcii Matlab care dezvolt mediul de programare de la o versiune
la alta, pentru a rezolva probleme specifice anumitor domenii.
Firma The MathWorks Inc. (care a realizat acest limbaj) a pus n circulaie o
serie de toolbox-uri cum ar fi: Signal Processing, Image Processing, Symbolic Math,
Neural Network, Control System Design, Robust Control, System Identification,
Optimisation, Spline, Statistics, Wavelet, Simulink, Analysis and Synthesis, Finance,
Fuzzy, etc.

1.2. Lansarea n execuie


Programul se lanseaz n execuie din mediul Windows, prin selecia
pictogramei Matlab,
9

ndrumar de laborator

Teoria Sistemelor

MATLAB 7.0.lnk

n momentul n care se lanseaz suprafaa de lucru (desktop) a sistemului de


operare (figura 1.2.1). Versiunea descris n aceast lucrare este Matlab 7 - Release
14.

Fig. 1.2.1 Suprafaa de lucru Matlab

Din afara mediului Windows (de exemplu DOS) programul poate fi lansat n
execuie direct, cu o comand de forma:
win c:\MATLAB\BIN\matlab
dac fiierul matlab.exe se gsete n calea c:\MATLAB\BIN.

1.3. Ferestrele de lucru


Programul Matlab lucreaz cu dou tipuri de ferestre: o fereastr de comenzi
i o fereastr pentru reprezentri grafice.

1.3.1. Fereastra de comenzi


Este utilizat pentru scrierea, modificarea i depanarea funciilor programelor
(fiierelor de tip M). Meniul din bara superioar este accesibil prin tastarea simultan
a tastei [Alt] i a literei subliniate a comenzii dorite sau prin selecia direct cu mouseul.
Fiecare comand din meniul principal furnizeaz un meniu specific, selecia
comenzii dorite fcndu-se prin deplasarea zonei active cu ajutorul sgeilor sau prin
10

ndrumar de laborator

Teoria Sistemelor

selecia direct cu ajutorul mouse-lui.


Meniul File conine o serie de comenzi legate de fiiere:

New este folosit pentru deschiderea unui fiier nou de tip M (M - file), a
unei noi ferestre grafice (Figure), a unui model Simulink nou (Model) sau a
unei interfee grafice de tip Graphical User Interface (GUI);

Open permite deschiderea unor fiiere deja existente pentru editare i


lansare;

Close Command Window nchide fereastra de comand Matlab;

Import Data opiune destinat importului de date din fiiere;


Save Workspace As salveaz toate variabilele din spaiul de lucru
mpreun cu valorile lor atribuite ntr-un fiier desemnat;
Set Path permite setarea cii fiierelor Matlab;
Preference acceseaz o caset de dialog n care se pot seta o serie de
caracteristici ale programului Matlab;

Print i Print Selection tiprete coninutul ferestrei de comand,


respectiv a prii selectate;

Exit MATLAB opiune folosit pentru prsirea mediului Matlab.

Meniul Edit conine o serie de comenzi cunoscute din Windows destinate


editrii: Undo, Redo, Cut, Copy, Paste, Paste Special, Select All, Delete, precum
i trei comezi specifice pentru tergerea coninutului ferestrei de comand, ferestrei
istoric i suprafeei de lucru: Clear Command Window, Clear Command History i
Clear Workspace.
n meniul View se regsesc comenzi destinate manipulrii diferitelor ferestre
aferente instrumentelor utilizate n Matlab. Comenzile din meniul Web pot accesa
resursele din Internet ale companiei productoare (pagina de web, suportul tehnic,
etc.).
n meniul Window sunt afiate toate ferestrele deschise n timpul sesiunii de
lucru curente, putndu-se afia fereastra activ. Ultimul meniu este Help, n care,
prin intermediul comenzilor existente, se poate accesa documentaia ataat
programului.

1.3.2. Fereastra de reprezentri grafice


Este o form elevat de reprezentare a graficelor. Pot exista mai multe
ferestre grafice deschise simultan, dar numai o singur fereastr de comenzi.

1.4. Programarea n Matlab


1.4.1. Matrice, vectori i scalari
Matlab-ul lucreaz numai cu un singur tip de obiecte, matrice numerice
rectangulare, cu elemente reale sau complexe. n acest sens, scalarii sunt asimilai
matricelor cu o linie i o coloan ( 1x1), iar vectorii sunt asimilai matricelor cu o linie
( 1xN ) sau cu o coloan ( Nx1 ).
Elementele unei matrice pot fi identificate prin una dintre notaiile: Aij , A[i , j ] ,

A(i , j ) , etc. i semnific elementul de la intersecia liniei i cu coloana j. Notaia


adoptat n Matlab este ultima dintre cele trei prezentate i anume A(i , j ) .
11

ndrumar de laborator

Teoria Sistemelor

Dimensiunea unei matrice este precizat de o pereche de numere care arat


numrul de linii i coloane ale matricei respective.
Pentru a face referire la un element A(i , j ) al unei matrice A , sunt necesari
doi indici, indicele de linie i indicele de coloan, n aceast ordine. Referirea unui
element al unui vector poate fi fcut numai cu un singur indice.
Definirea matricelor se poate face prin una din urmtoarele metode:
- introducerea explicit a listei de elemente;
- generarea prin instruciuni i funcii;
- crearea de fiiere M1;
- ncrcarea din fiiere de date externe.
Matlab-ul nu conine instruciuni de dimensionare i declaraii de tip, iar
memoria este alocat n mod automat pn la valoarea maxim disponibil. Cea mai
simpl metod de definire a matricelor mici const n utilizarea unei liste explicite. La
introducerea unei astfel de liste trebuie respectate urmtoarele reguli:
-

elementele unei linii trebuie separate prin spaiu liber sau virgul;
liniile se separ prin semnul punct-virgul ;;
elementele unei matrici sunt cuprinse ntre paranteze drepte [ ].

1.4.2. Declaraii i variabile


Matlab-ul este un limbaj de expresii. Expresiile tiprite de utilizator sunt
interpretate i evaluate. Instruciunile Matlab sunt, de cele mai multe ori, de forma:
variabil=expresie,

sau, mai simplu:


expresie.

Expresiile sunt compuse din operatori sau alte caractere speciale, din funcii i
nume de variabile. Evaluarea expresiei produce o matrice care este afiat pe ecran
i atribuit unei variabile. Dac numele variabilei i semnul egal (variabil =) sunt
omise, Matlab-ul creaz automat o variabil cu numele ans.
Orice instruciune este n mod normal terminat cu Enter. Dac ultimul
caracter al unei instruciuni este punct-virgul ;, instruciunea este executat, dar
tiprirea este suprimat. Utilizarea acestui caracter la sfritul unei instruciuni n
fiiere M este necesar n situaiile n care nu se dorete afiarea datelor
intermediare. Numele de variabile i de funcii au ca prim caracter o liter, urmat de
litere, cifre sau caracterul special liniu de subliniere (adic _). Matlab-ul face
deosebirea ntre litere mari i mici. Funcia casesen permite trecerea Matlab-ului n
modul senzitiv/nesenzitiv, n vederea separrii literelor mari de cele mici. La lansare,
Matlab-ul este n modul senzitiv, iar cu comanda casesen off se trece n modul
nesenzitiv. Revenirea se face cu comanda casesen on. Numele de funcii este
obligatoriu s fie redate cu litere mici.

1.4.3. Structura programelor n Matlab


Matlab-ul lucreaz fie n modul linie de comand, caz n care fiecare linie este
prelucrat imediat i rezultatele sunt afiate, fie cu programe scrise n fiiere. Aceste

Fiierele de tip M sunt fiiere ce conin instruciuni Matlab i se numesc aa deoarece au extensia
m. Acestea sunt de fapt programe Matlab.
12

ndrumar de laborator

Teoria Sistemelor

dou moduri de lucru formeaz mpreun un mediu de programare uor de nvat i


de utilizat. 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, cu posibilitatea apelrii altor fiiere M precum i a apelrii
recursive.
Un program Matlab poate fi scris sub forma unor fiiere script sau sub form
de fiiere function. Ambele tipuri de fiiere sunt scrise n format ASCII.
1.4.3.1.

Fiierele script

Aceste fiiere sunt fiiere externe ce conin secvene de instruciuni Matlab.


Prin apelarea numelui fiierului, se execut secvena de instruciuni Matlab coninut
de acesta. Dup execuia complet, variabilele cu care a operat fiierul rmn n
zona de memorie a aplicaiei. Fiierele script nu permit integrarea n programe mari
realizate pe principiul modularizrii, ele fiind folosite pentru rezolvarea unor probleme
care cer comenzi succesive lungi, ce ngreuneaz lucrul n modul linie de comand.
1.4.3.2.

Fiierele funcie (function)

Dac prima linie a fiierului conine cuvntul cheie function, fiierul respectiv
este declarat ca fiier funcie. Spre deosebire de un fiier script, un fiier funcie
poate lucra cu argumente. Variabilele definite i utilizate n interiorul fiierului funcie
sunt localizate la nivelul acestuia. Deci, la terminarea execuiei unei funcii, n
memorie rmn doar variabilele de ieire ale funciei.
Forma general a primei linii a unui fiier funcie este urmtoarea:
function[param_ieire]=nume_funcie(param_intrare),

unde:
function - este cuvntul cheie care declar fiierul ca fiier funcie; prezena
acestui cuvnt cheie este obligatorie;
nume_funcie - este numele funciei, adic numele sub care se salveaz fiierul,
fr extensie. Nu poate fi identic cu cel al unui fiier M preexistent.
param_ieire - parametrii de ieire trebuie separai cu virgul i cuprini ntre
paranteze drepte (dac funcia nu are parametri de ieire, parantezele drepte i
semnul egal nu mai au sens, pot s lipseasc).
param_intrare - parametrii de intrare trebuie separai cu virgul i cuprini ntre
paranteze rotunde (dac funcia nu are parametri de intrare, parantezele rotunde nu
mai au sens, pot s lipseasc).

1.4.4. Comentariile i help-ul ntr-un program


ntr-un program Matlab, un comentariu se introduce prin caracterul procent
% plasat la nceputul liniei. n cazul n care caracterul procent apare pe prima
poziie ntr-o linie, aceasta este omis de compilator, iar dac apare ntr-o linie de
program, partea de linie care urmeaz dup semnul procent va fi omis.
ntr-un program, un comentariu poate aprea n orice poziie, dar este
recomandat prezena unui comentariu dup prima linie care declar o funcie. n
acest caz, comentariul, care apare imediat dup prima linie de declarare a funciei,
constituie help-ul fiierului respectiv. Dac se apeleaz n fereastra de comand:
help nume_funcie,

se va afia help-ul fiierului funciei respective.

13

ndrumar de laborator

Teoria Sistemelor

1.5. Instruciuni i funcii de control logic


Instruciunile de control logic n Matlab sunt: if, else, elseif, for, while, break,
return, end, error.

1.5.1. Instruciunea condiional if


Aceast instruciune este folosit n cazul n care este necesar o selecie a
grupului de instruciuni ce urmeaz a fi executat, selecie condiionat de valoarea de
adevr a unei expresii. Instruciunile condiionale utilizeaz operatorii relaionali i
operatorii logici.
Matlab-ul are ase operatori relaionali, care sunt utilizai pentru a compara
dou matrice de dimensiuni egale. Lista acestor operatori este prezentat n tabelul
1.5.1. Operatorii relaionali compar dou matrice sau dou expresii matriceale,
element cu element. Rezultatul este o matrice de aceeai dimensiune cu a matricelor
care se compar, cu elemente 1 cnd relaia este ADEVRAT i cu elemente 0
cnd relaia este FALS. Primii patru operatori compar numai partea real a
operatorilor, partea imaginar fiind ignorat, iar ultimii doi operatori trateaz att
partea real ct i partea imaginar. Dac unul dintre operanzi este un scalar i
cellalt este o matrice, scalarul se extinde pn la dimensiunea matricei.
Forma general de utilizare a acestor operatori este:
rezultat=expresie_1 operator_relaional expresie_2.
Tab. 1.5.1 Operatorii relaionali

Operatorii relaionali

Semnificaia

<

mai mic

<=

mai mic sau egal

>

mai mare

>=

mai mare sau egal

==

identic

~=

diferit

Pentru combinarea a dou sau mai multe expresii logice se utilizeaz


operatorii logici prezentai n tabelul 1.5.2. Operatorii logici I, SAU compar doi
scalari sau dou matrice de dimensiuni egale.
Tab. 1.5.2 Operatorii logici

Operatori logici

Simbol Matlab

Prioritatea

NU (not)

I (and)

&

SAU (or)

14

ndrumar de laborator

Teoria Sistemelor

Pentru cazul n care cei doi operanzi sunt matrice, se opereaz element cu
element. Operatorul logic NU (sau complementul logic) este operator unar. Aceti
operatori au prioritate mai mic dect operatorii relaionali i aritmetici.
Operatorii logici au prioritate mai mic dect operatorii relaionali sau cei
aritmetici. n tabelul 1.5.3. este dat tabela de adevr a operatorilor logici.
Tab. 1.5.3 Tabelul de adevr al operatorilor logici

~A

A|B

A&B

FALS

FALS

ADEV.

FALS

FALS

FALS

ADEV.

ADEV.

ADEV.

FALS

ADEV.

FALS

FALS

ADEV.

FALS

ADEV.

ADEV.

FALS

ADEV.

ADEV.

Instruciunea if poate fi implementat ca instruciune if simpl, sau poate


include clauzele else sau elseif. Forma general a unei instruciuni if simpl este
urmtoarea:
if
end

expresie logic
grup de instruciuni

Dac expresia logic este adevrat, se execut grupul de instruciuni cuprins


ntre instruciunea if i instruciunea end. n caz contrar, se trece la prima instruciune
care urmeaz dup instruciunea end.
Clauza else este folosit pentru a executa un set de instruciuni (grupul de
instruciuni A) dac expresia logic este adevrat i un alt set de instruciuni (grupul
de instruciuni B) dac expresia logic este fals.
Forma general este:
if

expresie logic
grup de instruciuni A

else
end

grup de instruciuni B

Dac funcia de calculat are mai multe nivele de instruciuni if-else este
recomandat utilizarea clauzei elseif. Aceasta are urmtoarea form 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
end

Aceast instruciune este evaluat n modul urmtor:


-

dac expresia logic 1 este adevrat, se execut numai grupul de


instruciuni A;

15

ndrumar de laborator
-

Teoria Sistemelor

dac expresia logic 1 este fals i expresia logic 2 este adevrat, se


execut numai grupul de instruciuni B;
dac expresiile logice 1 i 2 sunt false i expresia logic 3 este adevrat,
se execut numai grupul de instruciuni C;
dac mai multe expresii logice sunt adevrate, prima expresie logic
adevrat determin care grup de instruciuni se execut prima dat;
dac nicio expresie logic nu este adevrat, nu se execut niciun grup de
instruciuni din structura if.

Clauza elseif poate fi combinat cu clauza else ntr-o structur general de


forma:
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

n acest caz, dac nicio expresie logic nu este adevrat, se execut grupul
de instruciuni D.

1.5.2. Instruciunea repetitiv for


Instruciunea for permite repetarea unui grup de instruciuni din corpul buclei,
de un anumit numr de ori. Structura general a acestei instruciuni este urmtoarea:
for

index = expresie
grup de instruciuni

end

unde:
index - este numele contorului;
expresie - este o matrice, un vector sau un scalar;
grupul de instruciuni - este orice expresie Matlab.
n aplicaii, index = expresie are de cele mai multe ori urmtoarea form:
k = iniial:pas:final

unde:
iniial - este prima valoare a variabilei k;
pas - este pasul, dac acesta este omis, este considerat implicit 1;
final - este cea mai mare valoare pe care o poate lua variabila k.
La fiecare pas de calcul, index are valoarea unuia dintre elementele
expresiei. Dac expresia este o matrice, ciclarea se face pe coloane. Pentru un ciclu
for cu pasul negativ sau nentreg se genereaz mai nti un vector cu pasul i limitele
dorite i apoi se citesc valorile acestuia n cadrul buclei for. La folosirea buclei for
trebuie respectate urmtoarele reguli:
- indexul buclei for trebuie s fie o variabil;
- dac expresia este o matrice goal, bucla nu se execut. Se va trece la
urmtoarea instruciune dup end;
16

ndrumar de laborator
-

Teoria Sistemelor

dac expresia este un scalar, bucla se execut o singur dat cu indexul


dat de valoarea scalarului;
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;
dac expresia este o matrice, indexul va avea la fiecare iteraie valorile
coninute n urmtoarea coloan a matricei;
la terminarea ciclului for, indexul are ultima valoare utilizat;
dac se utilizeaz operatorul dou puncte : pentru a defini expresia,
final initial
bucla se execut de n =
+ 1 ori, dac n este pozitiv, i nu
pas

se execut dac n este negativ. Prin [ ] s-a notat valoarea ntreag a


numrului.

1.5.3. Instruciunea repetitiv while


Instruciunea repetitiv while este o structur care se utilizeaz pentru
repetarea unui set de instruciuni, att timp ct o condiie specificat este adevrat.
Formatul general al acestei instruciuni este urmtorul:

while expresie
grup de instruciuni
end
Grupul de instruciuni este executat ct timp expresia este adevrat. Dac
expresia nu este adevrat, se trece la executarea primei instruciuni care urmeaz
dup end. Dac expresia este ntotdeauna adevrat logic, bucla devine infinit.

Not. Dintr-o bucl infinit se iese forat prin apsarea concomitent a tastelor
[Ctrl]+[C] !

1.5.4. Instruciunea break


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

1.5.5. Instruciunea return


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

1.5.6. Instruciunea error


Instruciunea error permite afiarea unor mesaje la ntlnirea unei erori. Se
apeleaz cu sintaxa: error(mesaj).
Dup afiarea textului mesaj controlul este redat tastaturii.

1.5.7. Funcii de control logic


n continuare, se vor prezenta pe scurt funciile de control logic. n Matlab
exist urmtoarele funcii de control logic:
17

Teoria Sistemelor

ndrumar de laborator

exist - verific dac variabilele sau funciile argument sunt definite;


any - testeaz dac cel puin un element al unei matrice verific o condiie logic
dat (testeaz dac un vector are cel puin un element diferit de zero; returneaz 1
dac condiia este verificat i 0 n caz contrar);
all - testeaz dac toate elementele unei matrice verific o condiie logic dat
(testeaz dac un vector are toate elementele diferite de zero; returneaz 1 dac
condiia este adevarat i 0 n caz contrar);
find - returneaz indicii elementelor diferite de zero;
isnan - testeaz dac elementele unei matrice sunt NaN2;
isinf - testeaz dac elementele unei matrice sunt infinite;
finite - testeaz dac elementele unei matrice sunt finite.
Aceste funcii sunt des asociate cu instruciunea if.

1.6. Variabile speciale n Matlab


eps - variabil n care este memorat variabila relativ, pentru calcule efectuate n
virgul mobil, valoarea implicit fiind 2.2204e-016;
pi - variabil permanent ce are asociat valoarea 3.14159265358;
i = j = 1 - variabil folosit pentru reprezentarea unitii imaginare;
inf - variabil folosit pentru reprezentarea lui plus infinit n aritmetica IEEE;
nargin - variabil permanent folosit pentru testarea numrului argumentelor de
intrare ce trebuie introduse pentru apelarea unei funcii;
nargout - variabil permanent folosit pentru testarea numrului argumentelor de
ieire ale unei funcii;
flops - returneaz numrul de operaii n virgul mobil efectuate de ctre calculator;
computer - variabil folosit pentru obinerea informaiilor referitoare la tipul
calculatorului i numrul maxim de elemente pe care le poate gestiona versiunea
respectiv de Matlab.
realmax - reprezint cea mai mare valoare pozitiv n virgul mobil care poate fi
folosit n calcule, respectiv 1.7977e+308;
realmin - reprezint cea mai mic valoare pozitiv n virgul mobil care poate fi
folosit n calcule, respectiv 2.2251e-308;
isieee - funcie ce returneaz 1 dac calculatorul este compatibil cu aritmetica IEEE
i respectiv 0 n caz contrar;
version, ver - funcii pentru determinarea versiunii Matlab i a toolbox-urilor instalate
pe calculator.

1.7. Exerciii propuse


Exerciiul 1.7.1
S se introduc i s se afieze urmtoarele matrice:
1
1 2
; B = [1 3 5 7]; C = 4 ;
A=

3 4
9

NaN Not a Number, nu este un numr


18

ndrumar de laborator

Teoria Sistemelor

S se afieze urmtoarele elemente:


- elementul de pe linia 2 i coloana 1 din matrice;
- elementul al patrulea din vectorul linie;
- elementul al treilea din vectorul coloan.
Exerciiul 1.7.2
S se scrie un fiier funcie, denumit funcie1, n care s se calculeze
urmtoarea funcie:
x 3 + y 3 , dac 0 x y 10

f (x, y ) = x 2 + y 2 , dac x y < 0 i y 0


(x y )2 , n restul cazurilor

Aceast funcie se va implementa n dou moduri:

Folosind instruciunea if-else.


Folosind instruciunea if-elseif.

S se calculeze urmtoarele valori: f(1,3), f(1,-3), f(-3,1), f(-4,-1).


Exerciiul 1.7.3
1 0 2
Fie X = 0 0 1
0 0 4

S se determine:
- coloanele n care matricea are cel puin un element diferit de zero;
- coloanele n care matricea are toate elementele diferite de zero;
- coloanele n care matricea are cel puin un element mai mare ca 1.
Exerciiul 1.7.4
S se calculeze suma primelor 100 de numere naturale. Se va calcula n dou
moduri: folosind instruciunea repetitiv for i folosind instruciunea repetitiv while.
Pentru rezolvare, se vor deschide dou fiiere de tip M, n care se vor scrie cele dou
programe.
Exerciiul 1.7.5

X = [5

S se scrie un program care calculeaz suma elementelor vectorului


2 9 10 1 9 1] pn cnd ntlnete un numr mai mare de 8.

19

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