Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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.
ndrumar de laborator selecia direct cu ajutorul mouse-lui. Meniul File conine o serie de comenzi legate de fiiere:
Teoria Sistemelor
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.
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 [ ].
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.
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).
13
ndrumar de laborator
Teoria Sistemelor
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
Prioritatea 1 2 3
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
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 else end grup de instruciuni B expresie logic grup de instruciuni A
Dac funcia de calculat are mai multe nivele de instruciuni if-else este recomandat utilizarea clauzei elseif. Aceasta are urmtoarea form general:
expresie logic 1 grup de instruciuni A elseif expresie logic 2 grup de instruciuni B elseif expresie logic 3 grup de instruciuni C end if
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:
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 if
n acest caz, dac nicio expresie logic nu este adevrat, se execut grupul de instruciuni D.
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.
Not. Dintr-o bucl infinit se iese forat prin apsarea concomitent a tastelor [Ctrl]+[C] !
ndrumar de laborator
Teoria Sistemelor
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.
ndrumar de laborator 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
Teoria Sistemelor
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 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.
X = [5
19