MATLAB IN INGINERIE - tmt.ugal.ro

104
MATLAB ÎN INGINERIE Sumar 1. INTRODUCERE ÎN MATLAB .................................................................................................. 3 1.1. Ce este MATLAB ? ............................................................................................................. 3 1.2. Structura sistemului MATLAB............................................................................................ 4 1.3. Lansarea şi ieşirea din MATLAB ........................................................................................ 5 1.4. Ferestrele de lucru MATLAB .............................................................................................. 9 1.5. Configurarea Desktop-ului ................................................................................................. 20 2. Manipularea matricelor .............................................................................................................. 28 2.1. Definirea matricelor ........................................................................................................... 28 2.2. Operaţiuni de baza cu matrici ............................................................................................ 28 2.3. Indicii elementelor matricei ............................................................................................... 30 2.4. Operatorul ”:”..................................................................................................................... 31 2.5. Expresii .............................................................................................................................. 32 2.6. Generarea matricelor .......................................................................................................... 34 2.7. Funcţia load ........................................................................................................................ 35 2.8. Fişierele M-Files ................................................................................................................ 36 2.9. Concatenare........................................................................................................................ 36 2.10. Ştergerea rândurilor si coloanelor .................................................................................. 37 2.11. Algebra Liniara .............................................................................................................. 37 2.12. Vectori............................................................................................................................ 38 2.13. Construirea tablourilor ................................................................................................... 39 2.14. Adunare cu scalari .......................................................................................................... 40 2.15. Indexare logica ............................................................................................................... 41 2.16. Funcţia find. ................................................................................................................... 41 2.17. Funcţia format ................................................................................................................ 43 3. Funcţii MATLAB de interes general ......................................................................................... 45 3.1. Lansarea funcţiilor şi comenzilor MATLAB. Introducerea variabilelor ........................... 45 3.2. Execuţia programelor ......................................................................................................... 50 3.3. Înregistrarea unei sesiuni de lucru ..................................................................................... 50 3.4. Modul de afişare a textului pentru Command Window...................................................... 51 3.5. Utilizarea Help-ului............................................................................................................ 52 3.6. Funcţii pentru gestionarea mediului de lucru (workspace), al directoarelor şi fişierelor .. 56 3.7. Importul si exportul datelor................................................................................................ 61 4. Elemente de grafica 2D si 3D .................................................................................................... 65 4.1. Crearea unui grafic ............................................................................................................. 66 4.2. Reprezentări multiple in acelaşi sistem de coordonate ...................................................... 67 4.3. Specificarea tipului de linie si culoarea ............................................................................. 68 4.4. Reprezentarea mărimilor complexe si imaginare............................................................... 69 4.5. Adăugarea unor curbe la grafice existente ......................................................................... 70 4.6. Ferestre figure .................................................................................................................... 71 4.7. Reprezentări grafice multiple pe o figura .......................................................................... 71 4.8. Controlul axelor ................................................................................................................. 72 4.9. Etichetarea axelor si titluri ................................................................................................. 73 4.10. Salvarea figurilor............................................................................................................ 74 4.11. Editarea graficelor .......................................................................................................... 74 4.12. Grafice de tip suprafaţa .................................................................................................. 76 4.13. Tipărirea graficelor ........................................................................................................ 78 1

Transcript of MATLAB IN INGINERIE - tmt.ugal.ro

Page 1: MATLAB IN INGINERIE - tmt.ugal.ro

MATLAB ÎN INGINERIE

Sumar 1. INTRODUCERE ÎN MATLAB ..................................................................................................3

1.1. Ce este MATLAB ? .............................................................................................................3 1.2. Structura sistemului MATLAB............................................................................................4 1.3. Lansarea şi ieşirea din MATLAB ........................................................................................5 1.4. Ferestrele de lucru MATLAB..............................................................................................9 1.5. Configurarea Desktop-ului.................................................................................................20

2. Manipularea matricelor ..............................................................................................................28 2.1. Definirea matricelor ...........................................................................................................28 2.2. Operaţiuni de baza cu matrici ............................................................................................28 2.3. Indicii elementelor matricei ...............................................................................................30 2.4. Operatorul ”:”.....................................................................................................................31 2.5. Expresii ..............................................................................................................................32 2.6. Generarea matricelor..........................................................................................................34 2.7. Funcţia load........................................................................................................................35 2.8. Fişierele M-Files ................................................................................................................36 2.9. Concatenare........................................................................................................................36 2.10. Ştergerea rândurilor si coloanelor ..................................................................................37 2.11. Algebra Liniara ..............................................................................................................37 2.12. Vectori............................................................................................................................38 2.13. Construirea tablourilor ...................................................................................................39 2.14. Adunare cu scalari..........................................................................................................40 2.15. Indexare logica...............................................................................................................41 2.16. Funcţia find. ...................................................................................................................41 2.17. Funcţia format ................................................................................................................43

3. Funcţii MATLAB de interes general .........................................................................................45 3.1. Lansarea funcţiilor şi comenzilor MATLAB. Introducerea variabilelor ...........................45 3.2. Execuţia programelor.........................................................................................................50 3.3. Înregistrarea unei sesiuni de lucru .....................................................................................50 3.4. Modul de afişare a textului pentru Command Window......................................................51 3.5. Utilizarea Help-ului............................................................................................................52 3.6. Funcţii pentru gestionarea mediului de lucru (workspace), al directoarelor şi fişierelor ..56 3.7. Importul si exportul datelor................................................................................................61

4. Elemente de grafica 2D si 3D ....................................................................................................65 4.1. Crearea unui grafic.............................................................................................................66 4.2. Reprezentări multiple in acelaşi sistem de coordonate ......................................................67 4.3. Specificarea tipului de linie si culoarea .............................................................................68 4.4. Reprezentarea mărimilor complexe si imaginare...............................................................69 4.5. Adăugarea unor curbe la grafice existente.........................................................................70 4.6. Ferestre figure ....................................................................................................................71 4.7. Reprezentări grafice multiple pe o figura ..........................................................................71 4.8. Controlul axelor .................................................................................................................72 4.9. Etichetarea axelor si titluri .................................................................................................73 4.10. Salvarea figurilor............................................................................................................74 4.11. Editarea graficelor..........................................................................................................74 4.12. Grafice de tip suprafaţa ..................................................................................................76 4.13. Tipărirea graficelor ........................................................................................................78

1

Page 2: MATLAB IN INGINERIE - tmt.ugal.ro

5. Elemente de programare MATLAB ..........................................................................................79 5.1. Fisierele script ....................................................................................................................79 5.2. Fisierele functie..................................................................................................................79 5.3. Includerea comentariilor si a help-ului intr-un program....................................................81 5.4. Crearea, editarea si depanarea fisierelor M........................................................................82 5.5. Operatori ............................................................................................................................85 5.6. Instructiuni de control logic ...............................................................................................85 5.8. Interactiunea programelor MATLAB cu utilizatorul.........................................................89 5.9. Tipuri de variabile..............................................................................................................96 5.10. Operatii cu siruri de caractere ........................................................................................98

6. Functii matematice uzuale .......................................................................................................100 6.1. Functii de aproximare a numerelor ..................................................................................100 6.2. Functii de operare cu numere complexe ..........................................................................100 6.3. Functiile putere, radical, logaritm si exponentiala...........................................................102 6.4. Functii trigonometrice......................................................................................................102 6.5. Functii de matematica discreta.........................................................................................104

2

Page 3: MATLAB IN INGINERIE - tmt.ugal.ro

1. INTRODUCERE ÎN MATLAB

1.1. Ce este MATLAB ? MATLAB® (MATtrix LABoratory) este un pachet de programe de înaltă performanţă,

interactiv, destinat calculului matematic, ştiinţific şi ingineresc. MATLAB integrează calcul, programare şi vizualizare, într-un mediu de lucru prietenos, soluţionarea problemelor presupunând folosirea notaţiilor matematice clasice. Utilizarea programului MATLAB include: • Matematică şi calcul numeric • Programare şi dezvoltare de algoritmi • Modelare şi simulare • Analiză de date, exploatarea rezultatelor şi vizualizare • Grafică ştiinţifică şi inginerească • Dezvoltare de aplicaţii software, incluzând construcţie de interfeţe grafice cu utilizatorul

(GUI) • Etc.

MATLAB este un produs al companiei americane The Mathworks, Inc. [http://www.mathworks.com] şi lucrează sub Windows, Unix, LINUX şi Machintosh. MATLAB include toate facilităţile unui limbaj complet de programare, admiţând interfeţe cu limbajul de programare C, C++ şi FORTRAN. Versiunea cea mai recentă a pachetului de programe MATLAB este versiunea 6.

MATLAB a cunoscut o puternică evoluţie în decursul ultimilor ani, reprezentând astăzi în mediile universitare o unealtă standard de calcul, fiind asociată diverselor cursuri introductive sau avansate în matematică, ştiinţă şi inginerie. În industrie, MATLAB este recunoscut ca un mijloc de investigaţie numerică performant, utilizat în sprijinul unei activităţi de cercetare, dezvoltare şi analiză de înalt nivel.

Versiunea completă a pachetului de programe MATLAB conţine o întreagă familie de module specifice, denumite tool-box-uri, respectiv blockset-uri, care permit rezolvarea unor aplicaţii din diverse domenii cum ar fi: maşini, aparate şi acţionări electrice, control de sistem, aplicaţii DSP, procesarea materialelor şi electro-tehnologii, procesare de semnal, mecanică, industria aeronautică şi de automobile, statistică, finanţe şi multe altele.

Aceste module sunt colecţii de funcţii MATLAB (M-files), uşor de asimilat, care extind puterea de calcul a pachetului de programe MATLAB în vederea rezolvării unor clase particulare de probleme. Colecţia de module MATLAB conţine: Simulink, DSP, Control System, SimPowerSystems, SimMechanics, Data Acquisition, Fuzzy Logic, Image Processing, Partial Differential Equations, Neural Network, Optimization, System Identification, Financial, Statistics, Communications, Database, Virtual Reality etc.

3

Page 4: MATLAB IN INGINERIE - tmt.ugal.ro

1.2. Structura sistemului MATLAB

Structura sistemului MATLAB constă în cinci părţi principale: Mediul de dezvoltare. Acesta este alcătuit dintr-un set de unelte care facilitează

folosirea funcţiilor şi fişierelor MATLAB. Multe dintre acestea reprezintă de fapt interfeţele grafice şi includ fereastra principală MATLAB sau MATLAB Desktop, fereastra de comenzi sau Command Window, fereastra ce memorează istoria comenzilor sau Command History, şi browser-ele de Help, Workspace, Files, Search Path etc.

Biblioteca de funcţii matematice MATLAB. Aceasta constă într-o vastă colecţie de

algoritmi de calcul, pornind de la funcţii elementare precum sumă, sinus, cosinus şi aritmetică complexă, pană la funcţii mai sofisticate precum inversare de matrici, calcul de valori proprii, funcţii Bessel, şi transformata Fourier.

Limbajul MATLAB. Limbajul MATLAB este un limbaj matrice/vector de înalt nivel

ce include instrucţiuni de control al buclelor, funcţii, structuri de date, comenzi de intrare/ieşire şi instrucţiuni de programare orientată pe obiecte. Limbajul MATLAB permite atât ”programarea superficială” pentru crearea rapidă a unor mici programe de calcul specifice, cât şi "programarea în detaliu" în vederea dezvoltării unor programe complexe de nivel superior.

Handle Graphics®. Handle Graphics reprezintă sistemul de grafică MATLAB şi

include atât comenzi de înalt nivel pentru vizualizarea 2D şi 3D a datelor, procesare de imagini, animaţie şi grafică, cât şi comenzi de jos nivel ce permit personalizarea completă a reprezentărilor grafice şi construirea integrală a interfeţelor grafice (GUI) pentru aplicaţiile MATLAB.

MATLAB Application Program Interface (API). Aceasta este o bibliotecă ce permite

scrierea programelor C şi Fortran ce interacţionează cu MATLAB. Biblioteca conţine facilitaţi de apel de subrutine din MATLAB (dynamic linking), de apelare a MATLAB-ul ca pe o maşină de calcul, şi de citire şi scriere de fişiere MAT-files.

4

Page 5: MATLAB IN INGINERIE - tmt.ugal.ro

1.3. Lansarea şi ieşirea din MATLAB 1.3.1. Comenzi de lansare MATLAB. Există mai multe modalităţi de lansare a pachetului de programe MATLAB, şi anume: A) • Dublu-clic pe icoana MATLAB de pe Desktop B) • Clic pe START

• Clic pe MATLAB C) • Clic pe START

• Clic pe Run

• Tastaţi ”matlab”

• Clic pe OK

5

Page 6: MATLAB IN INGINERIE - tmt.ugal.ro

D) • Dublu-clic pe shortcut-ul ”MATLAB 6.5” din directorul de instalare C:/MATLAB6p5/

E) • În cazul lansării dintr-o fereastră DOS, se tastează ”matlab” la promptul DOS.

F) • Etc. 1.3.2. Opţiuni de lansare MATLAB. Există mai multe opţiuni de lansare MATLAB, acestea putând fi activate la lansarea programului, în felul următor: • Clic-dreapta pe icoana MATLAB de pe Desktop • Clic pe Properties în meniul contextual

6

Page 7: MATLAB IN INGINERIE - tmt.ugal.ro

• Tastaţi în câmpul Target, după calea către ”matlab.exe”, una sau mai multe opţiuni de lansare, cum ar fi opţiunea /minimize:

Acţiunile corespunzătoare diverselor opţiuni de lansare MATLAB sunt prezentate în tabelul următor:

Opţiune Acţiune /minimize

Lansare MATLAB în format minimizat, fără afişare de splash.

/nosplash Lansare MATLAB fără afişare splash. /r M_file Lansare MATLAB împreună cu lansarea

automată a fişierului cu numele M_file. /logfile logfilename Se inregistreaza automat lista de comenzi

MATLAB din sesiunea curenta in fisierul log specificat.

1.3.3. Alegerea directorului MATLAB de lucru. Directorul MATLAB de lucru poate fi selectat înainte de lansarea programului, respectând următoarea secvenţă de comenzi: • Clic-dreapta pe icoana MATLAB de pe Desktop

7

Page 8: MATLAB IN INGINERIE - tmt.ugal.ro

• Clic pe Properties în meniul contextual • Tastaţi calea de acces către directorul de lucru, în câmpul Start in, ca de exemplu calea

D:\MATLAB:

• Enter sau clic pe OK Directorul MATLAB de lucru poate fi selectat şi după lansarea programului. 1.3.4. Comenzi de ieşire din MATLAB Pentru părăsirea programului MATLAB se poate acţiona în mai multe feluri, şi anume: A) • Clicaţi pe meniul File + clic pe Exit MATLAB

8

Page 9: MATLAB IN INGINERIE - tmt.ugal.ro

B) • Clicaţi pe close box-ul ferestrei MATLAB Desktop C) • Tastaţi ”exit” sau ”quit” în Command Window • Apăsaţi pe tasta Enter sau Return

D) • Etc.

1.4. Ferestrele de lucru MATLAB

1.4.1. Fereastra principală MATLAB (MATLAB Desktop). După lansarea programului MATLAB, în prim plan apare fereastra principală MATLAB, ce conţine unelte de control al directoarelor, fişierelor, variabilelor şi al aplicaţiilor asociate MATLAB-ului.

9

Page 10: MATLAB IN INGINERIE - tmt.ugal.ro

MATLAB Desktop Toolbar permite accesul uşor la uneltele clasice MATLAB. Ţinând cursorul deasupra unui buton, o indicaţie ajutătoare descriind unealta, va apare într-o căsuţă galbenă. Unele ferestre au propriul lor toolbar inclus în sistemul de afişare.

1.4.2. Ferestrele Desktop-ului. Următoarele ferestre sunt supervizate de MATLAB Desktop, deşi nu toate apar implicit după lansare: • Fereastra de comenzi (Command Window), permite lansarea comenzilor MATLAB; • Fereastra Command History, permite memorarea, vizualizarea, editarea şi relansarea

funcţiilor lansate anterior în Command Window. • Fereastra Launch Pad, permite lansarea uneltelor şi accesarea documentaţiei MATLAB • Fereastra Current Directory Browser, permite controlul asupra fişierelor MATLAB şi a

celor asociate

10

Page 11: MATLAB IN INGINERIE - tmt.ugal.ro

• Fereastra Help Browser, permite vizualizarea şi căutarea documentaţiei MATLAB • Fereastra Workspace Browser permite vizualizarea şi schimbarea conţinutului spaţiului

de lucru • Fereastra Array Editor permite editarea şi vizualizarea conţinutului variabilelor într-un

format tabelar • Fereastra Editor/Debugger permite crearea, editarea şi depanarea fişierelor M-files ce

conţin funcţii MATLAB. Alte unelte şi ferestre MATLAB cum ar fi ferestrele grafice nu sunt supervizate de MATLAB Desktop. 1.4.2.1. Command Window. Command Window este fereastra principală de comunicare a utilizatorului cu programul MATLAB. Această fereastră permite lansare de funcţii şi efectuarea de operaţii MATLAB. Pentru vizualizarea ferestrei se selectează Command Window din meniul View.

Proprietăţile specifice ferestrei Command Window permit modificarea formatului de afişare a valorilor numerice, setarea automată a ecoului în cadrul unei sesiuni MATLAB, specificarea fontului, a stilului, a dimensiunii literelor, setarea culorilor folosite pentru sublinierea instrucţiunilor specifice etc. Pentru afişarea cutiei de dialog cu proprietăţile ferestrei Command Window, selectaţi Preferences din meniul File al MATLAB Desktop. Cutia de dialog se deschide permiţând modificarea proprietăţilor ferestrei Command Window.

11

Page 12: MATLAB IN INGINERIE - tmt.ugal.ro

1.4.2.2. Fereastra Command Hyistory. Fereastra Command History apare când lansaţi MATLAB. Fereastra Command History afişează o listă a funcţiilor lansate recent în Command Window.

Afişarea funcţiilor în Command History Window. Lista de comenzi afişate în Command History include atât funcţii din sesiunea curenta cât şi funcţii din sesiuni anterioare. Ora şi data pentru fiecare sesiune apare în partea superioara a listei de funcţii aferente acelei sesiuni de lucru. Folosiţi scroll-bar-ul sau săgeţile up şi down pentru a naviga în fereastra Command History. Fişierul specific uneltei Command History este history.m. Tastaţi

12

Page 13: MATLAB IN INGINERIE - tmt.ugal.ro

prefdir în Command Window pentru a vedea locaţia acestui fişier. Fişierul history.m este încărcat odată cu lansarea programului MATLAB şi suprascris când ieşiţi din MATLAB. Ştergerea funcţiilor din Command History Window. Se recomandă ştergerea funcţiilor din Command History window când se strâng prea multe şi navigarea devine dificilă. Toate funcţiile sunt înregistrate până când alegeţi opţiunea de a le şterge. Pentru a şterge o funcţie, selectaţi funcţia sau folosiţi Shift+clic sau Ctrl+clic pentru a selecta mai multe, sau folosiţi Ctrl+A pentru a le selecta pe toate. Apoi clic-dreapta şi selectaţi una dintre opţiunile de ştergere din meniul contextual: Delete Selection – şterge funcţia selectată Delete to Selection – şterge toate funcţiile anterioare până la cea selectată Delete Entire History – şterge toate funcţiile din Command History window O altă cale de ştergerea a întregii liste de funcţii constă în selectarea comenzii Clear Command History din meniul Edit. Lansarea funcţiilor din Command History Window. Dublu-clic pe orice funcţie din Command History window pentru a executa acea funcţie. De exemplu, dublu-clic pe edit myfile pentru a deschide fişierul myfile.m în Editor. Puteţi deasemenea lansa o funcţie cu clic-dreapta pe funcţie şi selectând Evaluate Selection din meniul contextual, sau copiind funcţia în Command Window. Copierea funcţiilor din Command History Window. Selectaţi o funcţie, sau cu Shift+clic sau Ctrl+clic selectaţi mai multe funcţii, sau folosiţi Ctrl+A pentru a selecta toate funcţiile. Apoi puteţi executa următoarele comenzi.

Acţiune Mod de lucru Lansarea funcţiilor în Command Window

Copiaţi selecţia în clipboard prin clic-dreapta şi selectarea opţiunii Copy din meniul contextual. Selecţia se copiază cu Paste în Command Window (altă alternativă constă în executarea unui dragging al selecţiei în Command Window). În Command Window se editează la nevoie funcţia şi se apasă pe Enter sau Return pentru executarea funcţiei.

Copierea funcţiilor în altă fereastra

Copiaţi selecţia în clipboard prin clic-dreapta şi selecţia comenzii Copy din meniul contextual. Copiaţi selecţia într-un fişier M-file deschis în Editor sau altă aplicaţie.

Crearea unui fişier M-file din funcţiile selectate

Clic-dreapta pe selecţie şi selectează Create M-File din meniul contextual. Editor-ul deschide un nou fişier M-file ce conţine funcţiile pe care le-aţi selectat din Command History window.

1.4.2.3. Fereastra Launch Pad. Fereasta Launch Pad din MATLAB permite accesul uşor la unelte, demo-uri, şi documentaţia produselor MathWorks. Pentru lansare selectaţi Launch Pad din meniul View din MATLAB Desktop. Îndată sunt listate toate produsele MathWorks instalate pe sistemul dvs.

13

Page 14: MATLAB IN INGINERIE - tmt.ugal.ro

Pentru listarea în detaliu a unui produs, clicaţi pe semnul + plasat în stânga produsului. Pentru a anula listarea, clicaţi pe semnul – din stânga produsului. Pentru a deschide una sau mai multe liste, dublu-clic pe lista, sau clic-dreapta şi selectaţi Open din meniul contextual. Acţiunea depinde de lista pe care aţi selectat-o, după cum este prezentat în tabelul următor. Icoana Descrierea acţiunii în urma lansării

Documentaţia produsului respectiv se deschide în fereastra Help browser

Se lansează Demo launcher al produsului respectiv

Unealta selectată se deschide

Pagina web a produsului pe site-ul MathWorks Web cu informaţii recente se deschide în browser-ul dvs. Web

Actualizarea ferestrei Launch Pad. Fereastra Launch Pad include comenzi pentru toatele produsele găsite în calea de căutare MATLAB când se lansează sesiunea MATLAB. Dacă schimbaţi calea de căutare după lansarea unei sesiuni, de pildă prin adăugarea unui director toolbox, fereastra Launch Pad nu este automat actualizată. Clic-dreapta în fereastra Launch Pad şi selectaţi Refresh din meniul contextual pentru a actualiza fereastra Launch Pad aşa încât sa afişeze toate produsele în calea curentă de căutare. 1.4.2.4. Current Directory Browser. Pentru a căuta, vizualiza, deschide, şi pentru a modifica directoare şi fişiere asociate MATLAB-ului, folosiţi Current Directory browser. Pentru a deschide Current Directory browser, selectaţi Current Directory din meniul View din MATLAB Desktop, sau tastaţi filebrowser la promptul Command Window. Puteţi deasemenea să o deschideţi din Launch Pad, sub MATLAB.

14

Page 15: MATLAB IN INGINERIE - tmt.ugal.ro

Principalele operaţiuni cu directoare şi fişiere ce pot fi efectuate folosind Current Directory browser sunt operaţiuni ce folosesc meniurile grafice tip windows, respectiv meniurile contextuale, şi anume: • vizualizarea şi modificarea directoarelor, • crearea, redenumirea, copierea şi ştergerea directoarelor şi fişierelor, • deschiderea fişierelor, • lansarea şi vizualizarea conţinutului fişierelor, • căutarea şi înlocuirea conţinutului fişierelor. 1.4.2.5. Fereastra Help Browser. Se foloseşte Help browser pentru căutarea şi vizualizarea documentaţiei MATLAB şi produsele MathWorks. Help browser este un Web browser integrat în MATLAB Desktop care afişează documente HTML. Pentru lansarea Help browser: • Clicaţi pe butonul help din toolbar sau • Tastaţi helpbrowser în Command Window sau • Selectaţi Help din meniul View sau • Folosiţi meniul Help în orice unealtă MATLAB.

15

Page 16: MATLAB IN INGINERIE - tmt.ugal.ro

Help browser conţine două paneluri: • Panelul Help Navigator din stânga, care se foloseşte pentru căutarea informaţiei. Acesta

include un filtru Product Filter şi ferestrele Contents, Index, Search, şi Favorites. • Panelul display din dreapta, folosit pentru vizualizarea documentaţiei. Proprietăţile specifice ferestrei Help Browser pot fi modificate selectând Preferences din meniul File al ferestrei MATLAB Desktop. Cutia de dialog se deschide şi permite selectarea opţiunii Help în urma căreia se deschide fereastra Help Preferences pentru modificarea proprietăţilor ferestrei Help Browser. Se pot modifica caracteristicile fontului folosit în ferestrele Help Browser, se poate selecta locaţia documentaţiei, etc. 1.4.2.6. Fereastra Workspace Browser. Folosiţi Workspace browser pentru executare de operaţiuni în spaţiul de lucru MATLAB. Pentru a lansa Workspace browser, există mai multe modalităţi şi anume: • Din meniul View din MATLAB Desktop, selectaţi Workspace, • În Launch Pad, dublu-clic pe Workspace, • Tastaţi workspace la promptul Command Window.

16

Page 17: MATLAB IN INGINERIE - tmt.ugal.ro

Printre operaţiunile ce pot fi executate din Workspace browser sunt: • vizualizarea Current Workspace • salvarea Current Workspace • încărcarea Saved Workspace • ştergerea Workspace Variables • crearea graficelor din Workspace Browser • vizualizarea şi editarea Workspace Variables folosind Array Editor Proprietăţile specifice ferestrei Workspace Browser pot fi modificate selectând Preferences din meniul File al ferestrei MATLAB Desktop. Cutia de dialog se deschide şi permite selectarea opţiunii Workspace în urma căreia se deschide fereastra Workspace Preferences pentru modificarea proprietăţilor ferestrei Workspace. Se pot modifica caracteristicile fontului folosit în Workspace browser şi se poate opţiona pentru afişarea unei căsuţe de dialog de confirmare a ştergerii variabilelor. 1.4.2.7. Fereastra Array Editor. Array Editor se foloseşte pentru afişarea şi editarea unei reprezentări vizuale 1D şi 2D a vectorilor de tip numere, şiruri de caractere etc. Pentru a lansa Array Editor din Workspace browser se selectează în Workspace browser variabila pe care doriţi să o afişaţi (Shift+clic sau Ctrl+clic pentru a selecta mai multe variabile). Clicaţi pe butonul open de pe toolbar, sau clic-dreapta şi selectaţi Open Selection din meniul contextual. Alternativ, în cazul unei singure variabile, puteţi face dublu-clic pe aceasta pentru a o deschide. Array Editor se lansează, afişând valorile variabilelor selectate. Nu puteţi deschide un vector cu 10,000 elemente sau mai multe. Pentru a afişa conţinutul unei variabile în workspace, tastaţi numele variabilei la promptul Command Window. Pentru a afişa o variabilă în Array Editor, folosiţi funcţia openvar('nume_variabila') tastată la linia de comandă a ferestrei Command Window şi având ca argument numele variabilei pe care doriţi să o afişaţi.

17

Page 18: MATLAB IN INGINERIE - tmt.ugal.ro

Modificarea valorilor elementelor în Array Editor. În Array Editor, clicaţi pe celula a cărei valoare doriţi să o modificaţi. Tastaţi o nouă valoare. Apăsaţi Enter sau Return, sau clicaţi în alta celula şi modificarea va avea loc. Pentru a modifica dimensiunile unui vector, tastaţi noile valori corespunzând numărului de rânduri şi coloane în Size fields. Dacă creşteţi dimensiunea, noile rânduri şi coloane sunt adăugate la sfârşit şi sunt umplute cu zerouri. Dacă descreşteţi dimensiunea, veţi pierde datele; MATLAB şterge rândurile şi coloanele de la sfârşit. Anumite tipuri de date nu permit modificarea dimensiunii; pentru aceste variabile, câmpul Size nu este editabil. Dacă deschideţi un fişier MAT-file existent şi efectuaţi modificări asupra acestuia folosind Array Editor, va trebui sa salvaţi acel MAT-file dacă doriţi ca schimbările sa fie salvate. Controlul afişării valorilor în Array Editor. În Array Editor, selectaţi o variabilă în lista Numeric format pentru a controla modul de afişare a valorilor numerice. Proprietăţile specifice ferestrei Array Editor pot fi modificate selectând Preferences din meniul File al ferestrei MATLAB Desktop. Cutia de dialog se deschide şi permite selectarea opţiunii Array Editor în urma căreia se deschide fereastra Array Editor Preferences de modificare a proprietăţilor. Se pot modifica caracteristicile fontului folosit în fereastra Array Editor, se poate selecta formatul numeric implicit etc. 1.4.2.8. Fereastra Editor/Debugger. Fereastra Editor/Debugger a MATLAB-ului pune la dispoziţie o interfaţă grafică cu utilizatorul ce permite editarea elementara de text şi depanarea (debugging) oricărui tip de fişier M-file. Editor/Debugger este o unealtă care se poate folosi pentru editare, debugging sau ambele. Există diferite modalităţi de lansare a ferestrei Editor/Debugger: Lansarea ferestrei Editor/Debugger în vederea creării unui nou fişier M-File. Pentru a

crea un nou fişier M-file în Editor/Debugger, fie clicati pe butonul new file din toolbar-ul MATLAB, sau selectaţi File + New + M-file din meniul MATLAB Desktop. Puteţi deasemenea crea un fişier M-file folosind meniul contextual în Current Directory browser. Editor/Debugger se deschide daca nu cumva deja este deschisă, cu un fişier gol în care puteţi scrie instrucţiunile fişierului M-file.

18

Page 19: MATLAB IN INGINERIE - tmt.ugal.ro

Daca Editor/Debugger este deschis, puteţi crea mai multe fişiere noi folosind butonul new

file din toolbar, sau selectaţi File + New + M-file. Funcţia echivalentă de creare a fişierelor M-file noi în Editor/Debugger este funcţia edit tastată în Command Window. Daca tastaţi edit filename.m şi fişierul cu acest nume nu există încă, apare un mesaj care va întreabă dacă doriţi sa creaţi un nou fişier cu numele filename.m. Daca alegeţi da, Editor/Debugger creează un fişier gol cu numele filename.m, altfel fişierul nu va fi creat. Lansarea ferestrei Editor/Debugger pentru deschiderea fişierelor M-Files existente. Pentru a deschide un fişier M-file existent în Editor/Debugger, clicaţi pe butonul open

din toolbar-ul MATLAB sau Editor/Debugger, sau selectaţi File + Open şi apoi din Open dialog box, selectaţi fişierul M-file şi clicati pe Open. Se pot deasemenea deschide fişiere din Current Directory browser.

Puteţi selecta un fişier în vederea deschiderii din lista celor mai recent folosite fişiere, în partea inferioara a meniului File în MATLAB Desktop sau în Editor/Debugger. Puteţi schimba numărul de fişiere care apar în listă. O funcţie echivalentă folosită pentru editarea sau deschiderea unui fişier M-file existent în Editor/Debugger este funcţia edit filename.m Lansarea ferestrei Editor/Debugger fără a lansa MATLAB. Pe platformele Windows, puteţi folosi MATLAB Editor fără să lansaţi MATLAB prin dublu-clic pe fişierul M-file în Windows Explorer. Fişierul M-file se deschide în MATLAB Editor. Pentru a deschide fereastra Editor fără fişier, lansaţi fişierul MATLAB6p5/bin/win32/meditor.exe. Se pot deschide mai multe sesiuni simultane de meditor. Când lansaţi MATLAB Editor fără lansare MATLAB, Editor devine o aplicaţie de sine stătătoare. Proprietăţile ferestrei Editor/Debugger se pot modifica selectând Preferences din meniul File al ferestrei MATLAB Desktop. Cutia de dialog se deschide şi permite selectarea opţiunii Editor/Debugger în urma căreia se deschide fereastra Editor/Debugger Preferences de modificare a proprietăţilor.

19

Page 20: MATLAB IN INGINERIE - tmt.ugal.ro

Se pot modifica caracteristicile fontului şi culorilor folosite în fereastra Editor/Debugger, se poate selecta modul de afişare, salvare etc.

1.5. Configurarea Desktop-ului 1.5.1. Deschiderea uneltelor Desktop. Pentru a deschide o unealtă a desktop-ului, selectaţi unealta din meniul View sau dublu-clic pe unealta respectivă în lista de unelte afişate în Launch Pad. Unealta se deschide în locaţia pe care o ocupa ultima data când a fost deschisă. Există câteva unelte controlate de MATLAB Desktop care nu se pot deschide din meniul View sau Launch Pad, şi anume:

• Array Editor – care se deschide prin dublu-clic pe variabila în Workspace Browser, • Editor/Debugger – care se deschide prin crearea unui nou fişier M-file sau prin

deschiderea unui fişier existent M-file. Uneltele se pot deschide şi prin folosirea funcţiilor. De pildă, funcţia helpbrowser deschide Help browser. 1.5.2. Căutarea documentelor folosind Desktop Tools. Meniul Window afişează toate documentele Editor/Debugger, toate variabilele din Array Editor, şi toate ferestrele figură. Selectaţi o entitate în meniul Window pentru a ajunge direct la acea fereastră sau document. Selectaţi Close All pentru a închide toate entităţile listate în meniul Window. De pildă, meniul Window de mai jos ilustrează trei documente deschide în Array Editor şi două documente deschise în Editor/Debugger. Selectând variance.m, de pildă, determină fereastra Editor/Debugger cu fişierul variance.m deschis, sa devină fereastră activă.

20

Page 21: MATLAB IN INGINERIE - tmt.ugal.ro

1.5.3. Redimensionarea ferestrelor. Pentru redimensionarea ferestrelor în MATLAB Desktop, se foloseşte bara separator, care este bară dintre două ferestre: Mutaţi cursorul deasupra barei separator. Cursorul capătă o altă formă. Draggaţi bara separator pentru a modifica dimensiunile ferestrelor.

1.5.4. Mutarea ferestrelor. Exista trei modalităţi de bază de mutare a ferestrelor MATLAB Desktop: mutare în interiorul MATLAB Desktop, mutare în afara MATLAB Desktop, mutare în interiorul MATLAB Desktop prin gruparea ferestrelor (Tabbing). Mutare în interiorul MATLAB Desktop. Pentru a muta o fereastra într-o altă locaţie în MATLAB Desktop draggaţi title bar-ul ferestrei spre noua locaţie. Pe măsura ce mutaţi fereastra, un contur al acesteia va deveni vizibil. Când conturul se apropie de o poziţie posibilă, conturul se fixează în acea locaţie. Status bar afişează instrucţiuni despre mutarea ferestrei în timpul schimbării conturului. În exemplul de mai jos, Command History window este iniţial la stânga ferestrei Command Window şi este mutată deasupra Command Window. Când title bar-ul ferestrei Command History atinge zona inferioară a toolbar-ului, conturul devine vizibil.

21

Page 22: MATLAB IN INGINERIE - tmt.ugal.ro

Eliberaţi mouse-ul pentru a vizualiza fereastra în noua locaţie. Celelalte ferestre în desktop sunt redimensionate pentru a se adapta la noua configuraţie. Următorul exemplu arată cum este dispus desktop-ul după mutarea Command History window deasupra Command Window.

Mutare în afara MATLAB Desktop. Pentru a muta ferestre în afara MATLAB Desktop există mai multe variante:

• Clicaţi pe săgeata din title bar-ul ferestrei pe care doriţi sa o mutaţi în afara MATLAB Desktop,

• Selectaţi Undock din meniul View al acelei ferestre; fereastra trebuie sa fie activă,

22

Page 23: MATLAB IN INGINERIE - tmt.ugal.ro

• Mutaţi title bar-ul ferestrei în afara MATLAB Desktop; pe măsură ce mutaţi title bar, un contur al ferestrei va apare. Când cursorul este în afara MATLAB Desktop, eliberaţi mouse-ul. Fereastra apare în afara MATLAB Desktop. În exemplul următor, Command History window a fost mutată în afara MATLAB Desktop.

Mutarea ferestrelor din exteriorul MATLAB Desktop în interior. Pentru a muta o fereastra din exteriorul MATLAB Desktop în interior, selectaţi opţiunea Dock din meniul View al ferestrei respective. Gruparea (Tabbing) ferestrelor împreuna. Puteţi grupa ferestrele aşa încât acestea sa ocupe acelaşi spaţiu în MATLAB Desktop, păstrând însă accesul la toate ferestrele. Pentru a grupa împreuna ferestre mutaţi (dragging) title bar-ul unei ferestre din desktop deasupra title bar-ului unei alte ferestre din desktop. Conturul ferestrei pe care o mutaţi se suprapune peste fereastra a doua, şi partea inferioară a conturului include un tab. În exemplul următor, Command History window este iniţial la stânga Command Window şi title bar este draggată deasupra title bar-ului ferestrei Command Window.

23

Page 24: MATLAB IN INGINERIE - tmt.ugal.ro

Apoi eliberaţi mouse-ul. Ambele ferestre ocupă acelaşi spaţiu şi în zona inferioară a ferestrelor apar tab-uri ce permit identificarea ferestrelor. În exemplul următor, fereastra Command History şi Command Window sunt grupate împreună, cu fereastra Command History activă.

Vizualizarea ferestrelor grupate. Pentru a vizualiza o fereastra grupată, clicaţi pe tab-ul ferestrei. Fereastra trece în prim plan şi devine fereastră curentă activă. Dacă există mai multe tab-uri într-o fereastră decât sunt vizibile, folosiţi săgeţile spre dreapta pentru a vedea şi alte tab-uri. Mutarea ferestrelor grupate. Pentru a muta o fereastră grupată spre o altă locaţie, mutaţi title bar-ul sau tab-ul spre noua locaţie. O puteţi muta în interiorul sau exteriorul MATLAB Desktop.

24

Page 25: MATLAB IN INGINERIE - tmt.ugal.ro

Închiderea ferestrelor grupate. Când clicaţi pe close box-ul ferestrei care este parte a unui grup de ferestre, se închide doar fereastra în cauză. Nu puteţi închide toate ferestrele grupate deodată, ci una câte una. 1.5.5. Comenzi de închidere a unei ferestre MATLAB. Pentru închiderea unei ferestre MATLAB se poate acţiona în mai multe feluri, şi anume: • Clicaţi pe close box-ul ferestrei • Deselectaţi în meniul View fereastra care trebuie închisă • Clicaţi pe meniul File + clic pe Close

1.5.6. Configuraţia predefinită a MATLAB Desktop. Există şase configuraţii predefinite de MATLAB Desktop, pe care le puteţi selecta din meniul View + Desktop Layout: • Default – conţine ferestrele Command Window, Command History şi Current Directory

browser grupate împreună, şi Launch Pad şi Workspace browser grupate deasemenea împreună.

• Command Window Only - conţine doar fereastra Command Window. Această opţiune face ca MATLAB Desktop sa apară similar cu versiunile de MATLAB anterioare.

• Simple - conţine fereastra Command History şi Command Window, una lângă alta. • Short History - conţine fereastra Current Directory browser şi Workspace browser

grupate împreună deasupra ferestrei Command Window şi deasupra ferestrei Command History de talie redusă.

• Tall History - conţine ferestrele Command History în stânga şi Current Directory browser şi Workspace browser grupate împreuna deasupra ferestrei Command Window.

• Five Panel - conţine fereastra Launch Pad deasupra ferestrei Command History în stânga, Workspace browser deasupra Current Directory browser în centru, şi Command Window în dreapta. După selectarea unei configuraţii predefinite, puteţi muta, redimensiona, şi deschide/ închide ferestrele.

25

Page 26: MATLAB IN INGINERIE - tmt.ugal.ro

1.5.7. Accesarea The MathWorks pe Web. Puteţi accesa din MATLAB Desktop paginile Web clasice ale MathWorks, selectând una dintre următoarele opţiuni: The MathWorks Web Site, MATLAB Central, MATLAB File Exchange, MATLAB Newsgroup Exchange, Check for Updates, Products, Membership, Technical Support Knowledge Base. 1.5.8. Meniul contextual. Multe dintre facilităţile MATLAB Desktop sunt disponibile din meniurile contextuale, cunoscute ca pop-up meniuri. Pentru a accesa un meniu contextual, clic-dreapta pe o entitate şi meniul contextual împreuna cu operaţiunile specifice devine vizibil. Mai jos se prezintă meniul contextual al ferestrei Command History window.

1.5.9. Taste cu rol de prescurtare şi accelerare. Puteţi accesa multe articole de meniu folosind prescurtări sau taste acceleratoare cum ar fi Ctrl+X care este identic cu operaţiunea Cut pe platforme Windows, sau Alt+F pentru accesarea meniului File. Multe dintre prescurtări sunt listate mai jos: Enter – echivalent al unui dublu-clic, execută acţiunea curentă asupra unei selecţii. De pildă, apăsând Enter când este selectată o linie în Command History window acea comandă este executată în Command Window. Escape – anulează acţiunea curentă. Ctrl+Tab sau Ctrl+F6 – deplasare spre tab-ul următor în desktop, sau spre fişierul următor deschis în Editor/Debugger. Ctrl+Shift+Tab – deplasare spre tab-ul anterior în desktop, sau spre fişierul anterior deschis în Editor/Debugger. Ctrl+Page Up – deplasare la tab-ul următor într-un grup de unelte sau fişiere grupate împreună. Ctrl+Page Down – deplasare spre tab-ul anterior într-o fereastră. Alt+F4 – închide desktop-ul sau fereastra în afara desktop. Alt+Space – afisează meniul sistem. 1.5.10. Selectarea simultană a mai multor articole. În multe ferestre ale desktop-ului, puteţi selecta simultan mai multe articole şi apoi puteţi executa o acţiune asupra tuturor articolelor. Puteţi selecta simultan mai multe articole clicând pe primul articol ţinând apăsată tasta Ctrl şi apoi clicând pe articolul următor pe doriţi să-l selectaţi. Repetaţi acest ultim pas până aţi selectat toate articolele dorite. Dacă ţineţi apăsată tasta Shift în locul tastei Ctrl în timp ce clicaţi pe un articol, veţi selecta toate articolele cuprinse între cele două articole selectate. Puteţi executa asupra articolelor o comandă comună cum ar fi de pildă Delete.

26

Page 27: MATLAB IN INGINERIE - tmt.ugal.ro

1.5.11. Folosirea Clipboard-ului. Puteţi executa operaţiuni cut şi copy asupra unei selecţii dintr-o fereastră desktop spre clipboard şi apoi să executaţi paste în altă fereastră desktop. Folosiţi meniul Edit, meniurile contextuale, sau prescurtările standard. De pildă, puteţi executa copy asupra unei selecţii de comenzi din Command History window şi să executaţi paste în desktop. Articolul Paste Special din meniul Edit deschide selecţia din clipboard în Import Wizard. O puteţi folosi pentru a copia datele dintr-o alta aplicaţie, cum ar fi din Excel, în MATLAB. Pentru a anula cea mai recentă execuţie cut, copy, sau paste, selectaţi Undo din meniul Edit. Folosiţi Redo pentru a executa din nou acele operaţiuni (acţiune opusa lui Undo). Puteţi deasemenea realiza copierea prin draggarea selecţiei. De pildă, dacă selectaţi ceva din Command History window şi dragaţi selecţia în Command Window, este echivalent cu execuţia comenzii paste. Puteţi în continuare sa editaţi liniile în Command Window. 1.5.12. Proprietăţi generale ale MATLAB Desktop. Puteţi modifica proprietăţile predefinite ale MATLAB Desktop, cum ar fi fontul utilizat în Command Window. Proprietăţile rămân valabile pe durata sesiunii MATLAB. Unele ferestre vă permit controlul acestor aspecte din meniul propriu ferestrei respective. Pentru modificarea proprietăţilor selectaţi Preferences din meniul File. Cutia de dialog Preferences se deschide şi permite modificarea proprietăţilor prin selecţia tipului de proprietăţi. În exemplul de mai jos sunt modificate proprietăţile General. Dacă apare un semn + în stânga articolului, clicaţi pe + pentru a afişa în detaliu articolele conţinute, şi apoi selectaţi articolul ale cărui proprietăţi doriţi să le modificaţi. Panelul din dreapta reflectă tipul de proprietăţi pe care le-aţi selectat. În panelul din dreapta specificaţi proprietăţile dorite şi clicaţi pe OK. Proprietăţile se vor schimba imediat.

27

Page 28: MATLAB IN INGINERIE - tmt.ugal.ro

2. Manipularea matricelor

2.1. Definirea matricelor O metoda eficienta de a începe iniţierea in mediul de lucru MATLAB este de a invata operaţiunile de manipulare a matricelor. Pentru acest lucru lansaţi mai întâi in execuţie MATLAB. Puteţi defini matrice in MATLAB pe mai multe cai. Astfel puteţi: • Introduce o lista explicita de elemente. • Încărca matrice din fişiere de date externe. • Genera matrice folosind funcţii incluse. • Crea matrice folosind propriile dvs. funcţii scrise in M-files. Incepeti prin introducerea unei matrice ca o lista de elemente. Trebuiesc respectate câteva convenţii de baza: • Separaţi elementele unui rând cu spatii blanc sau virgule. • Folosiţi un semn punct si virgula, ”;”, pentru a indica sfarsitul fiecărui rând. • Includeţi întreaga lista intre paranteze pătrate, ”[ ]”. Astfel pentru a defini o matrice, tastaţi la linia de comanda in Command Window: A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] MATLAB va afişa matricea pe care tocmai aţi introdus-o: A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 Odată introdusa matricea de mai sus, aceasta este automat memorata in MATLAB workspace. Puteţi accesa aceasta matrice tastând simplu A.

2.2. Operaţiuni de baza cu matrici Daca efectuaţi suma elementelor matricei A de-a lungul oricărui rând sau coloana, sau de-a lungul oricăreia dintre diagonalele principale, veţi obţine întotdeauna acelaşi număr. Sa verificam aceasta caracteristica in MATLAB. Întâi sa efectuam suma elementelor de pe coloanele matricei. Pentru aceasta vom folosi funcţia sum(A) care realizează tocmai acest lucru: sum(A) MATLAB răspunde cu: ans =

28

Page 29: MATLAB IN INGINERIE - tmt.ugal.ro

34 34 34 34 Când nu specificaţi o variabila de ieşire (variabila răspuns), MATLAB foloseşte variabila predefinita ans, o prescurtare pentru cuvântul englezesc answer, pentru a stoca rezultatul unei calculaţii. Folosind funcţia sum(A) se calculează un vector linie continand sumele elementelor de pe coloanele matricei A. Pe fiecare coloana se obţine aceeaşi suma, 34. Pentru a calcula suma elementelor de pe rândurile matricei o idee este de a utiliza funcţia de transpunere a matricelor, de a aplica apoi aceeaşi funcţie sum pe matricea transpusa si in final de a transpune rezultatul folosind aceeaşi funcţie de transpunere a matricelor. Funcţia de transpunere a matricelor este A’, si consta in adăugarea unui apostrof după variabila matrice A: A’ MATLAB va răspunde cu: ans = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1 Aplicând funcţia: sum(A')' MATLAB va răspunde cu: ans = 34 34 34 34 Suma elementelor de pe diagonala principala se obţine folosind funcţiile sum si diag. Funcţia diag(A) scoate ca rezultat un vector continand elementele de pe diagonala principala. Tastaţi: diag(A) MATLAB va răspunde cu: ans = 16 10 7 1

29

Page 30: MATLAB IN INGINERIE - tmt.ugal.ro

Tastând: sum(diag(A)) se va obţine rezultatul dorit: ans = 34 Suma elementelor de pe anti-diagonala matricei A, se poate obţine folosind funcţia, fliplr, care generează matricea flip stanga-dreapta. Astfel pentru a obţine suma dorita tastaţi: sum(diag(fliplr(A))) MATLAB va răspunde cu: ans = 34 Aflarea dimensiunilor matricelor si vectorilor este posibila folosind functiile size si length. Deoarece matricea A este o matrice 4x4, executand comanda size(A) se obtine: size(A) ans =

4 4

2.3. Indicii elementelor matricei Elementul din rândul i si coloana j a matricei A este notat cu A(i,j). De pilda, A(4,2) este elementul din rândul 4 si coloana 2, adică, in cazul matricei de mai sus, este numărul 15. Pentru a calcula suma elementelor din coloana a patra a matricei A, tastaţi: A(1,4) + A(2,4) + A(3,4) + A(4,4) MATLAB va răspunde cu ans = 34 Aceasta metoda nu este insa cea mai eficienta de a suma elementele unei coloane. Este posibila accesarea elementelor elementelor unei matrice cu un singur indice, A(k). Acesta este modul uzual de accesare a unor vectori tip rând sau coloana. Aceasta metoda poate fi aplicata deasemenea unei matrice bidimensionale, caz in care vectorul este privit ca un vector lung de tip coloana format din coloane ale matricei originale. Astfel, in cazul matricei A definite anterior, A(8) este o alta cale de accesare a valorii 15 stocata in A(4,2). Daca incercati sa accesaţi valoarea unui element din afara matricei, apare un mesaj de eroare. Tastaţi:

30

Page 31: MATLAB IN INGINERIE - tmt.ugal.ro

t = A(4,5) MATLAB va răspunde cu: ??? Index exceeds matrix dimensions. Pe de alta parte, daca stocaţi o valoare intr-un element din afara matricei, dimensiunea matricei creste pentru a include noua valoare. Tastaţi de pilda : X = A; X(4,5) = 17 MATLAB va răspunde cu: X = 16 3 2 13 0 5 10 11 8 0 9 6 7 12 0 4 15 14 1 17

2.4. Operatorul ”:” Acest operator este foarte important in MATLAB. Acesta apare in diferite forme. De pilda expresia 1:10 este un vector rând continand întregii de la 1 la 10. Tastaţi: 1:10 MATLAB va răspunde cu: ans = 1 2 3 4 5 6 7 8 9 10 Pentru a obţine un ecart diferit de unitate intre elementele vectorului astfel generat, specificaţi un increment. De pilda tastaţi: 100:-7:50 MATLAB va răspunde cu: ans = 100 93 86 79 72 65 58 51 Tastaţi:

31

Page 32: MATLAB IN INGINERIE - tmt.ugal.ro

0:pi/4:pi MATLAB va răspunde cu: ans = 0 0.7854 1.5708 2.3562 3.1416 Expresii cu indici si care conţin operatorul ”:” se refera la porţiuni dintr-o matrice. De pilda A(1:k,j) reprezintă primele k elemente ale coloanei j ale matricei A. Astfel sum(A(1:4,4)) calculează suma elementelor coloanei a patra. Dar exista o alta cale mai eficienta. Operatorul ”:” in sine, se refera de fapt la toate elementele unui rand sau ale unei coloane a unei matrice si cuvântul cheie end se refera la ultimul rând sau coloana. Prin urmare sum(A(:,end)) calculează suma elementelor de pe ultima coloana a matricei A. Daca tastaţi: sum(A(:,end)) MATLAB va răspunde cu: ans = 34

2.5. Expresii Ca alte limbaje de programare, MATLAB pune la dispoziţie expresii matematice, dar aceste expresii spre deosebire de multe limbaje de programare aceste expresii lucrează cu matrici. 2.5.1. Variabile. MATLAB nu necesita nici un tip de instrucţiuni de declaraţie sau dimensionare a variabilelor. Când MATLAB intalneste un nou nume de variabila, acesta creează automat variabila si aloca memoria necesara. Daca variabila deja exista, MATLAB schimba conţinutul acesteia si daca este necesar aloca o alta cantitate de memorie. De pilda tastaţi: num_studenti = 25 MATLAB creează o matrice 1x1 numita num_studenti si aloca valoarea 25 singurului element al matricei. Numele de variabile constau intr-o litera, urmata de orice numar de litere, cifre, etc. MATLAB foloseşte doar primele 31 caractere ale unui nume de variabila. MATLAB face deosebirea intre litere mari si mici. A si a nu reprezintă aceeaşi variabila. Pentru a vizualiza matricea asociata oricărei variabile, tastaţi numele acestei variabile. 2.5.2. Numere. MATLAB foloseşte pentru numere notaţia zecimala convenţionala, cu punct zecimal opţional si semne plus sau minus. Notaţia stiintifica foloseşte litera e pentru a specifica 10 la puterea ... Numerele imaginare folosesc fie i fie j ca sufix. Iata cateva exemple de numere: 3 -99 0.0001 9.6397238 1.60210e-20 6.02252e23 1i -3.14159j 3e5i

32

Page 33: MATLAB IN INGINERIE - tmt.ugal.ro

Toate numerele sunt stocate intern folosind formatul long standardizat. Având o precizie de circa 16 cifre semnificative, variind intre aproximativ 10-308 si 10+308. 2.5.3. Operatori. Operatorii aritmetici familiari folosiţi sunt prezentaţi in tabelul de mai jos. Operator Operaţie + Adunare - Scădere * Inmultire / Impartire \ Impartire la stânga ^ Putere ’ Transpusa complex conjugata ( ) Pentru ordinea operaţiilor

2.5.4. Funcţii. MATLAB pune la dispoziţie un mare număr de funcţii matematice standard, incluzând abs, sqrt, exp, si sin. Scotand radical sau aplicând logaritm pe un număr negativ nu este eroare ci rezultatul este un număr complex calculat automat. MATLAB dispune de o multitudine de alte funcţii matematice mult mai avansate cum ar fi de pilda cazul funcţiilor Bessel. Multe dintre aceste funcţii accepta argumente complexe. O lista a funcţiilor elementare se poate obţine tastând help elfun. Pentru a obţine o lista a funcţiilor mai avansate de matematica si de manipulare a matricelor tastati help specfun, help elmat. Anumite funcţii cum ar fi sqrt si sin, sunt incluse in MATLAB core. Acestea sunt prin urmare foarte eficiente dar detaliile de calcul nu sunt uşor accesibile. Alte funcţii ca sinh, sunt implementate in fişiere M-files si le puteţi vedea codul si chiar îl puteţi modifica. Diverse funcţii speciale furnizează valori ale unor constante folositoare, ca in tabelul de mai jos. pi 3.14159265... i Sqrt(-1) j Sqrt(-1) eps Precizia relativa in virgula mobila 2-52

realmin Cel mai mic număr in virgula mobila 2-1022

realmax Cel mai mare număr in virgula mobila (2-eps)21023

Inf Infinit NaN Not-a number

Infinit este generat prin impartirea cu zero a uni număr ne-nul, sau prin evaluarea unor expresii matematice care depasesc realmax. Not-a-number este generat încercând evaluarea expresiilor de genul 0/0 sau Inf-Inf care nu au valori matematice bine definite. Numele funcţiilor nu sunt rezervate, deci putem suprascrie peste oricare dintre ele o noua variabila, de pilda eps = 1.e-6 si apoi sa utilizam acea valoare in calcule ulterioare. Funcţia originala poate fi restaurata cu funcţia clear eps.

33

Page 34: MATLAB IN INGINERIE - tmt.ugal.ro

2.5.5. Exemple de expresii. Iată câteva exemple de expresii MATLAB si rezultatele corespunzătoare. Tastaţi: rho = (1+sqrt(5))/2 rho = 1.6180 a = abs(3+4i) a = 5 z = sqrt(besselk(4/3,rho-i)) z = 0.3730+ 0.3214i huge = exp(log(realmax)) huge = 1.7977e+308 toobig = pi*huge toobig = Inf

2.6. Generarea matricelor MATLAB dispune de mai multe funcţii de generare a matricilor de baza, cum ar fi: zeros Matrice doar cu elemente nule ones Matrice doar cu elemente unitate rand Matrice cu elemente aleatoare uniform distribuite randn Matrice cu elemente aleatoare normal distribuite eye Matrice cu elemente nule cu exceptia diagonalei principale plina cu

elemente unitate diag Matrice diagonala linspace Vectori cu elemente avand valori distribuite liniar logspace Vectori cu elemente avand valori distribuite logaritmic

Iată câteva exemple. Tastaţi: Z = zeros(2,4) Z =

34

Page 35: MATLAB IN INGINERIE - tmt.ugal.ro

0 0 0 0 0 0 0 0 F = 5*ones(3,3) F = 5 5 5 5 5 5 5 5 5 N = fix(10*rand(1,10)) N = 4 9 4 4 8 5 2 6 8 0 R = randn(4,4) R = 1.0668 0.2944 -0.6918 -1.4410 0.0593 -1.3362 0.8580 0.5711 -0.0956 0.7143 1.2540 -0.3999 -0.8323 1.6236 -1.5937 0.6900 S = eye(3,4) S = 1 0 0 0 0 1 0 0 0 0 1 0

2.7. Funcţia load Funcţia load citeşte fişiere binare continand matrici generate in sesiuni MATLAB anterioare, sau citeşte fişiere text continand date numerice. Fişierul text trebuie organizat ca un tabel dreptunghiular de numere, separate de blancuri, cu un rând pe linie, si un număr egal de elemente pe fiecare rand. TEMA 1: Creati intr-un editor exterior MATLAB-ului (de pilda Notepad) un fisier text matrice.dat continand aceste patru linii. 16.0 3.0 2.0 13.0 5.0 10.0 11.0 8.0 9.0 6.0 7.0 12.0 4.0 15.0 14.0 1.0 Importati fisierul in MATLAB workspace folosind functia ”load” (load matrice.dat).

35

Page 36: MATLAB IN INGINERIE - tmt.ugal.ro

In urma importului din TEMA 1, MATLAB va citi fişierul si va crea in MATLAB workspace o variabila cu numele matrice, continand matricea de mai sus. Pentru a denumi altfel variabila creata in workspace, (de pilda A) folositi forma urmatoare a functiei load. A = load('matrice.dat'); O metoda uşoara de a citi date in MATLAB in multe formate text sau binare consta in folosirea Import Wizard din meniul Edit + Paste Special.

2.8. Fişierele M-Files Puteti crea propriile dvs. matrici folosind M-files, care sunt fişiere text continand instrucţiuni MATLAB. Folosiţi MATLAB Editor sau alt editor de text pentru a crea un fişier continand aceleaşi instrucţiuni pe care le-aţi tasta la linia de comanda MATLAB in fereastra Command Window. Salvaţi fişierul sub un nume cu extensia .m. De pilda, creaţi un fişier continand aceste cinci linii. A = [ ... 16.0 3.0 2.0 13.0 5.0 10.0 11.0 8.0 9.0 6.0 7.0 12.0 4.0 15.0 14.0 1.0 ]; Stocaţi fişierul sub numele matricem.m. Tastând in continuare la linia de comanda instrucţiunea matricem.m MATLAB va citi fişierul si va crea o variabila, A, continand matricea exemplu de mai sus.

2.9. Concatenare Concatenarea este procesul de alăturare a matricelor mici pentru a construi matrici mai mari. De fapt, o matrice reprezintă concatenarea elementelor sale individuale. Perechea de paranteze pătrate, [ ], este operatorul de concatenare. De pilda, plecând de la matricea A, construiţi matricea B = [A A+32; A+48 A+16]. Rezultatul este o matrice 8x8, obţinuta alăturând cele patru sub-matrici. B = 16 3 2 13 48 35 34 45 5 10 11 8 37 42 43 40 9 6 7 12 41 38 39 44 4 15 14 1 36 47 46 33 64 51 50 61 32 19 18 29 53 58 59 56 21 26 27 24 57 54 55 60 25 22 23 28 52 63 62 49 20 31 30 17

36

Page 37: MATLAB IN INGINERIE - tmt.ugal.ro

Sumele elementelor de pe coloanele matricei B se obţin folosind funcţia sum(B): ans = 260 260 260 260 260 260 260 260 Sumele elementelor de pe rândurile matricei B se obţin folosind funcţia sum(B')'. ans = 196 196 196 196 324 324 324 324

2.10. Ştergerea rândurilor si coloanelor Puteţi şterge rânduri si coloane dintr-o matrice folosind doar o pereche de paranteze pătrate. Incepeti cu X = A. Apoi, pentru a şterge cea de-a doua coloana a lui X, folosiţi X(:,2) = [ ]. Astfel X devine: X = 16 2 13 5 11 8 9 7 12 4 14 1 Daca stergeti un singur element dintr-o matrice, rezultatul nu mai este o matrice. Deci expresii ca X(1,2) = [ ] sunt incorecte si generatoare de erori.

2.11. Algebra Liniara Operaţiile matematice efectuate asupra matricelor reprezintă obiectul de studiu al algebrei liniare. De pilda adăugând la o matrice transpusa sa se obţine o matrice simetrica: A + A' ans = 32 8 11 17 8 20 17 23 11 17 14 26 17 23 26 2

37

Page 38: MATLAB IN INGINERIE - tmt.ugal.ro

Operatorul de multiplicare ,*, aplicat matricelor determina multiplicarea matricelor implicând produs intern intre rânduri si coloane. Inmultind transpusa unei matrici cu matricea insasi se obţine o matrice simetrica: A'*A ans = 378 212 206 360 212 370 368 206 206 368 370 212 360 206 212 378 Determinantul matricei A este zero, indicand ca matricea este singulara. d = det(A) d = 0 Deoarece matricea este singulara, aceasta nu are inversa. Daca incercati sa calculaţi inversa cu: X = inv(A) Veţi obţine un mesaj de avertizare Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.175530e-017. Erorile de trunchiere ingreuiaza algoritmul de detectare cu precizie a singularitatii. Dar valoarea lui rcond, care desemneaza nivelul de conditionare a matricei este de ordinul lui eps, adica precizia relative in virgula mobila, deci precizia de calcul a inversei este mediocra. Valorile proprii ale matricei A se calculeaza cu: e = eig(A) e = 34.0000 8.0000 0.0000 -8.0000

2.12. Vectori Operaţiile aritmetice aplicate pe vectori sunt efectuate element cu element. Aceasta înseamnă ca adunarea si scăderea sunt aceleaşi pentru vectori si matrici, dar inmultirea este

38

Page 39: MATLAB IN INGINERIE - tmt.ugal.ro

diferita. MATLAB foloseşte un punct, ca o parte de notaţie pentru operaţia de inmultire a vectorilor. Lista de operatori include: Operator Operaţie + Adunare - Scădere .* Inmultire element cu element ./ Impartire element cu element .\ Impartire la stânga element cu element .^ Putere element cu element .’ Transpusa ne-conjugata element cu element

Daca matricea A se inmulteste cu ea insasi folosind inmultirea vectoriala element cu element A.*A Rezultatul este o matrice continand pătratele elementelor matricei A iniţiale: ans = 256 9 4 169 25 100 121 64 81 36 49 144 16 225 196 1

2.13. Construirea tablourilor Operaţiile cu vectori sunt folositoare pentru construirea tablourilor. Sa presupunem ca n este vectorul coloana n = (0:9)'; Atunci pows = [n n.^2 2.^n] construieşte un tablou cu pătratele si puterile lui 2 de la 0 la 9. pows = 0 0 1 1 1 2 2 4 4 3 9 8 4 16 16 5 25 32 6 36 64 7 49 128 8 64 256 9 81 512

39

Page 40: MATLAB IN INGINERIE - tmt.ugal.ro

Functiile matematice elementare opereaza asupra vectorilor element cu element. Tastati: format short g x = (1:0.1:2)'; logs = [x log10(x)] Răspunsul MATLAB consta in construcţia unui tabel de logaritmi. logs = 1.0 0 1.1 0.04139 1.2 0.07918 1.3 0.11394 1.4 0.14613 1.5 0.17609 1.6 0.20412 1.7 0.23045 1.8 0.25527 1.9 0.27875 2.0 0.30103

2.14. Adunare cu scalari Matricele si scalarii pot fi combinaţi in multe feluri. De pilda, un scalar este scăzut dintr-o matrice prin scăderea acestuia din fiecare element. Tastaţi de pilda: B = A - 8.5 Se formează astfel o matrice având sumele elementelor coloanelor egale cu zero. B = 7.5 -5.5 -6.5 4.5 -3.5 1.5 2.5 -0.5 0.5 -2.5 -1.5 3.5 -4.5 6.5 5.5 -7.5 sum(B) ans = 0 0 0 0 Prin adunarea cu scalari, MATLAB asigneaza un anumit scalar tuturor indicilor dintr-un domeniu. De pilda, B(1:2,2:3) = 0 afectează valoarea zero unei porţiuni a matricei B. B = 7.5 0 0 4.5 -3.5 0 0 -0.5

40

Page 41: MATLAB IN INGINERIE - tmt.ugal.ro

0.5 -2.5 -1.5 3.5 -4.5 6.5 5.5 -7.5

2.15. Indexare logica Vectorii logici creeati din operatii logice si relationale pot fi folositi pentru a face referinta la subvectori. Daca presupunem ca X este o matrice clasica si L o matrice de aceasi dimensiune care este rezultatul unei operatii logice. Atunci X(L) furnizeaza elementele lui X unde elementele lui L sunt diferite de zero. Indexarea elementelor unei matrici se poate efectua specificand o operatie logica. Sa presupunem ca avem urmatorul set de date sub forma de vector: x = 2.1 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8 NaN este un simbol pentru (Not-a-Number). Pentru a elimina aceasta data irelevanta folosind indexare logica, folositi functia finite(x), care este adevarata pentru toate valorile numerice finite si falsa pentru NaN si Inf. x = x(finite(x)) MATLAB va raspunde cu: x = 2.1 1.7 1.6 1.5 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8 TEMA 2: Afectaţi valoarea zero elementelor matricei A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1] care nu sunt prime si afisati rezultatul pe ecran. Se poate folosi funcţia ”~isprime” de gasire a numerelor neprime aplicata unei matrici. In MATLAB operatorul ”~” inseamna ”nu” logic)

2.16. Funcţia find. Funcţia find determina indicii elementelor unui vector care indeplinesc o conditie logica data. In forma sa cea mai simpla, find întoarce un vector coloana de indici. Transpunad acel vector se obtine un vector de tip rand de indici. De pilda, k = find(isprime(A))' Gaseste locatiile, numerelor prime folosind indexare unidimensionala in matricea A. k = 2 5 9 10 11 13 Afisati acele numere prime, ca un vector rând in ordinea determinata de k, cu A(k)

41

Page 42: MATLAB IN INGINERIE - tmt.ugal.ro

ans = 5 3 2 11 7 13 Când folosiţi k ca pe un index stânga intr-o instrucţiune de asignare, structura matricei este păstrata. De pilda tastaţi: A(k) = NaN A = 16 NaN NaN NaN NaN 10 NaN 8 9 6 NaN 12 4 15 14 1 TEMA 3: Se dau vectorii x = [1 5 2 8 9 0 1] si y = [5 2 2 6 0 0 2]. Executati comenzile: x > y y < x y(y<x) x == y (In MATLAB operatorul ”==” inseamna ”egal” logic si este folosit in operatii logice. Atentie nu este identic cu operatorul clasic de atribuire ”=”) x <= y y >= x x | y (In MATLAB operatorul ”|” inseamna ”sau” logic) x & y (In MATLAB operatorul ”&” inseamna ”si” logic) x & (~y) (x > y) | (y < x) (x > y) & (y < x) Explicati rezultatele.

TEMA 4: Localizaţi elementele matricei A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1] care sunt mai mici decât 10, si afisati-le pe ecran.

TEMA 5: Adaugati 16 la elementele matricei A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]. Generati o noua matrice B avand elementele egale cu radacina patrata a elementelelor matricei A. Generati o noua matrice C avand elementele egale cu patratul elementelelor matricei B. Folositi functia ”sqrt”de extragere a radicalului.

TEMA 6: Creaţi un vector cu elementele Xn=(-1)n+1/(2n-1) unde n ia valoarea de la 1 la 100. Calculaţi suma elementelor acestui vector.

TEMA 7: Calculaţi numeric limita seriei ∑ Xn pentru n=1... ∞, in care Xn=1/[n(n+1)].

42

Page 43: MATLAB IN INGINERIE - tmt.ugal.ro

TEMA 8: Calculaţi valorile curenţilor I1, I2, I3 folosind teoremele lui Kirchoff si operaţiile cu matrici din MATLAB. Cele 3 ecuatii puneti-le sub forma [R]*[I]=[U], unde [R] reprezinta o matrice cunoscuta de coeficienti 3x3, [I] reprezinta un vector coloana necunoscut care contine cei 3 curenti, iar [U] reprezinta un vector coloana cunoscut.

10 V

2.17. Funcţia format Funcţia format controlează formatul numeric al valorilor afişate de MATLAB. Funcţia afectează doar afişarea numerelor, nu si modul de calcul si salvare a MATLAB-ului. Iată câteva exemple de formate, împreuna cu rezultatele furnizate. Tastaţi: format short x = [4/3 1.2345e-6] x = 1.3333 0.0000 format short e x x = 1.3333e+000 1.2345e-006 format short g x x = 1.3333 1.2345e-006

1 Ω 2 Ω 3 Ω

20 V

I1 I2 I3

43

Page 44: MATLAB IN INGINERIE - tmt.ugal.ro

format long

= 3333333333333 0.00000123450000

ormat long e

= 33333333333333e+000 1.234500000000000e-006

ormat long g

= 3333333333333 1.2345e-006

ormat bank

= 3 0.00

ormat rat

= 1/810045

ormat hex

= 5555555555555 3eb4b6231abfd271

ormat +

=

x x 1.3 f x x 1.3 f x x 1.3 f x x 1.3 f x x 4/3 f x x 3ff f x x++

44

Page 45: MATLAB IN INGINERIE - tmt.ugal.ro

Daca cel mai mare element al unei matrice este mai mare decât 103 sau mai mic decât 10-3,

3. Funcţii MATLAB de interes general

3.1. Lansarea funcţiilor şi comenzilor MATLAB. Introducerea variabilelor

unctiile si comenzile MATLAB se lanseaza la linia de comanda in fereastra Command

= [1 2 3; 4 5 6; 7 8 10]

upă ce aţi tastat linia de comanda de mai sus, când apasati tasta Enter sau Return,

= 2 3

entru a lansa o funcţie, tastaţi funcţia inclusiv toate argumentele si apasati tasta Return

agic(3)

i MATLAB va răspunde cu:

ns = 1 6

aca vreţi sa introduceţi mai multe linii de comanda înainte sa le lansaţi in execuţie, folosiţi

.1.1. Evaluarea unei selecţii. Pentru a lansa in execuţie o selecţie in Command Window,

MATLAB aplica un factor de scalare comun pentru formatele short si long. In plus fata de funcţiile format arătate mai sus funcţia format compact şterge din liniile vide afişate odată cu rezultatele MATLAB in Command Window.

FWindow. Prompt-ul (>>) din Command Window indica faptul ca MATLAB este gata de a accepta o comanda din partea dvs. Când apare promptul >>, puteţi introduce o variabila sau lansa o funcţie. De pilda, pentru a crea o matrice, A de dimensiune 3 x 3 tastaţi: A DMATLAB va răspunde cu: A 1 4 5 6 7 8 10 Psau Enter. MATLAB va afişa rezultatul. De pilda, tastaţi: m s a 8 3 5 7 4 9 2 Dtastele Shift + Enter sau Shift + Return după fiecare linie pana la ultima. Apoi apasati Enter sau Return pentru a lansa in execuţie toate liniile. Afişarea promptului sub forma K >> in Command Window indica faptul ca MATLAB lucrează in debug mode. 3efectuaţi selecţia, apoi clic-dreapta si selectaţi Evaluate Selection din meniul contextual. Nu puteţi evalua o selecţie cat timp MATLAB este ocupat, de pilda pe durata lansării unui fişier M-file.

45

Page 46: MATLAB IN INGINERIE - tmt.ugal.ro

3.1.2. Deschiderea unei selecţii. Pentru a deschide un fişier function M-file, selectaţi funcţia corespunzătoare fişierului in Command Window, si apoi clic-dreapta si selectaţi Open Selection din meniul contextual. Fişierul function M-file asociat functiei respective se deschide in Editor/Debugger. 3.1.3. Lansarea unui singur proces. In MATLAB puteţi lansa doar un singur proces simultan. Daca MATLAB este ocupat cu rularea unei alte funcţii, orice alta comanda lansata nu va putea fi executata. Comanda următoare va fi lansata când cea anterioara s-a încheiat. De pilda, nu puteţi defini breakpoints din Editor/Debugger cat timp MATLAB executa o funcţie in Command Window. 3.1.4. Diferenţierea intre litere mari si litere mici. MATLAB face diferenţa intre litere mici si litere mari. De pilda, nu puteţi lansa funcţia Plot ci trebuie sa lansaţi funcţia plot. In mod similar, variabila a nu este tot una cu variabila A. Trebuie notat faptul ca daca folosiţi funcţia help, numele funcţiilor sunt afişate cu litere mari, de pilda, PLOT, insa doar cu scopul de a le scoate in evidenta fata de restul textului. Nu folosiţi litere mari când lansaţi funcţii MATLAB. Anumite funcţii de interfatare cu Java intr-adevăr folosesc minuscule si majuscule si trebuiesc introduse ca atare. Spatiile de tip blanc in jurul operatorilor cum ar fi -, :, si ( ), sunt opţionali, si pot imbunatati claritatea programului. 3.1.5. Introducerea mai multor funcţii pe o linie de comanda. Pentru a introduce mai multe functii intr-o singura linie de comanda, separati functiile cu o virgula ( , ) sau punct si virgula ( ; ). Prin folosirea semnului punct si virgula ( ; ) se elimina afisarea rezultatului comenzii precedente. De pilda, plasati 3 functii pe o linie pentru a construi un tabel de logaritmi : >> format short; x = (1:10)'; logs = [x log10(x)] apoi apasati Enter sau Return pentru a lansa functiile in ordine de la stanga la dreapta . 3.1.6. Introducerea liniilor de comanda lungi. Daca o instrucţiune nu încape pe o linie, folosiţi (3 puncte, ...) pentru a indica faptul ca aceasta instrucţiune continua pe linia următoare, apasati apoi Enter sau Return pentru a avansa la linia următoare, si apoi continuaţi introducerea instrucţiunii. De pilda: s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ... - 1/8 + 1/9 - 1/10 + 1/11 - 1/12; sau de pilda: headers = ['Author Last Name, Author First Name, ' ... 'Author Middle Initial'] MATLAB va afişa: headers = Author Last Name, Author First Name, Author Middle Initial

46

Page 47: MATLAB IN INGINERIE - tmt.ugal.ro

Numărul maxim de caractere permis pe o singura linie este de 4096. 3.1.7. Marcarea sintaxei. Anumite instrucţiuni apar in diferite culori pentru a va ajuta sa gasiti mai uşor anumite elemente, cum ar fi identificarea perechilor de instrucţiuni if/else: • Tastaţi un string si acesta va fi afişat in mov. Când finalizaţi tastarea string-ul, acesta

devine roşu. • Tastaţi un cuvânt cheie, cum ar fi funcţia for si aceasta va fi afişata cu albastru. Liniile

de comanda pe care le introduceţi intre funcţiile de început si sfarsit de control logic sunt scrise cu aliniat.

• Un dublu-clic pe o paranteza rotunda de deschidere sau închidere ( ), paranteza dreapta [], sau acolada {}, are ca urmare selectarea caracterelor dintre acea paranteza si perechea sa.

• Tastând o paranteza de închidere (sau deschidere) si paranteza sa pereche de deschidere (sau închidere) paranteza respectiva apare pentru scrut timp marcata cu alta culoare.

• Tastaţi o paranteza de închidere (sau deschidere) prost pusa si MATLAB va afişa o linie orizontala peste paranteza respectiva. De pilda:

>> CC = C {:} • Folositi tastele sageata pentru a va pozitiona deasupra unei paranteze de deschidere sau

inchidere. Acea paranteza si paranteza sa pereche de inchidere sau deschidere apar pentru scurt timp marcate cu alta culoare.

• Daca tastati un simbolul %, MATLAB intelege ca ceea ce urmeaza este un comentariu si va apare scris in culoarea verde. Aceea informatie este tratata de MATLAB ca un comentariu. Tastati o comanda sistem, cum ar fi ! (shell escape), si linia va apare in galben. Erorile apar scrise in rosu.

3.1.8. Editarea liniei de comenzi. Facilitatile de editare a textului permit reducerea timpului de lucru. 3.1.8.1. Lucrul cu clipboard-ul. Comenzile Cut, Copy, Paste, Undo, si Redo din meniul Edit fac parte din aceasta categorie si pot fi folosite in editarea textului introdus la linia de comanda in Command Window. Unele dintre aceste comenzi pot fi accesate deasemenea din meniul contextual.

47

Page 48: MATLAB IN INGINERIE - tmt.ugal.ro

3.1.8.2. Re-apelarea liniilor de comanda. Folositi tastele tip sageata, tasta tab, si tastele de control pentru a reapela, edita, si refolosi functii pe care le-ati introdus anterior. De pilda, sa presupunem ca din greseala ati introdus: rho = (1+ sqt(5))/2 MATLAB va raspunde cu ??? Undefined function or variable 'sqt'. Deoarece ati introdus gresit functia sqrt. In loc de a retasta intrega linie, apasati tasta ↑. Linia tastata anterior este reafisata. Folositi tastele tip sageata stanga sau dreapta pentru a repozitiona cursorul si pentru a corecta functia si a introduce litera r care lipseşte si deci pentru a obtine sqrt in loc de sqt. Folosirea repetata a tastei ↑ reapeleaza linii de comanda tastate anterior. Funcţiile pe care le-aţi introdus sunt memorate intr-un buffer. Puteti folosi re-apelarea inteligenta pentru a reapela o functie anterioara ale carei prime caractere le specificaţi dvs. De pilda, tastând literele plo si apăsând tasta ↑ va fi reapelata ultima funcţie care a început cu plo, cum ar fi cazul unei functiei plot recente. Aceasta operatiune face diferenţiere intre litere mici si mari. In tabelul de mai jos este prezentata o lista de taste tip săgeata sau taste de tip control pe care le puteti folosi in Command Window. Tasta Tasta control Operaţiune ↑ Ctrl+P Re-apelează linia anterioara ↓ Ctrl+N Re-apelează linia următoare ← Ctrl+B Muta cursorul înapoi cu un caracter → Ctrl+F Muta cursorul înainte cu un caracter Ctrl + → Ctrl+R Muta cursorul la dreapta cu un cuvânt Ctrl + ← Ctrl+L Muta cursorul la stânga cu un cuvânt Home Ctrl+A Muta cursorul la începutul unei linii End Ctrl+E Muta cursorul la sfarsitul unei linii Esc Ctrl+U Şterge linia Delete Ctrl+D Şterge caracterul din dreapta cursorului Backspace Ctrl+H Şterge caracterul din stânga cursorului Ctrl+K Şterge caracterele pana la sfarsitul liniei Shift+Home Selectează caracterele pana la începutul liniei Shift+End Selectează caracterele pana la sfarsitul liniei

3.1.8.3. Completarea numelui cu ajutorul tastei Tab. MATLAB completează numele unei funcţii, variabile, nume de fişier, sau proprietate a unui grafic, daca tastaţi primele câteva litere si apoi apasati tasta Tab. Daca exista un singur nume, numele este completa in mod automat. De pilda, daca aţi creat o variabila costs_march, tastati costs si apasati tasta Tab. MATLAB va completa numele, afisand costs_march. Apasati apoi Return sau Enter pentru a lansa instrucţiunea. In acest exemplu, MATLAB afiseaza conţinutul variabilei costs_march. Daca exista mai multe nume care încep cu literele pe care le-aţi tastat, apasati tasta Tab din nou pentru a vedea o lista a acestor nume. De pilda, tastati cos si apasati tasta Tab. MATLAB nu afiseaza nimic, indicând ca exista mai multe nume de funcţii care încep cu cos. Apasati din nou Tab si MATLAB va afisa:

48

Page 49: MATLAB IN INGINERIE - tmt.ugal.ro

cos cosets cosint costs_march cos_tr cosh costfun Lista rezultanta cu nume de funcţii include numele variabilei pe care aţi creat-o, costs_march, dar include deasemenea si alte funcţii care încep cu cos. 3.1.9. Ştergerea comenzilor afişate in Command Window. Pentru ştergerea comenzilor afişate in Command Window selectati Clear Command Window din meniul Edit. Aceasta comanda nu şterge workspace-ul, ci doar afişarea comenzilor. Prin urmare puteţi continua sa folosiţi tasta ↑ pentru a reapela funcţii lansate anterior. Acelaşi efect de ştergere a se obţine prin tastarea la linia de comanda in Command Window a funcţiei clc. Similar funcţiei clc, funcţia home muta prompt-ul pe primul rând si prima coloana in fereastra Command Window. 3.1.10. Eliminarea afisarii comenzilor. Daca o linie de comanda se încheie cu punct si virgula ( ; ), MATLAB lansează instrucţiunea dar nu afiseaza nimic pe ecran când apasati tasta Enter sau Return. Aceasta comanda devine foarte utila in cazul generării matricelor mari. De pilda, daca tastaţi: A = magic(100); Si apoi apasati tasta Enter sau Return MATLAB creaza matricea A dar nu o afiseaza pe ecran. 3.1.11. Paginarea rezultatelor in Command Window. Daca rezultatul in Command Window este lung, este posibil sa nu încapă pe ecran si sa fie afişat prea repede pentru a fi inteles. Folosiţi funcţia more pentru a controla paginaţia afisarii in Command Window. Iniţial, funcţia more este dezactivata (este off). Când tastaţi more on, MATLAB afiseaza doar o pagina (un ecran întreg) de rezultate simultan. După afişarea primului ecran, apasati una dintre tastele. Tasta Acţiune Enter sau Return Avans la linia următoare Space Bar Avans la pagina următoare Q Opreşte afişarea rezultatelor

3.1.12. Controlul formatului si spaţierea rezultatelor. Iniţial, rezultatul numeric din Command Windows este afişat ca o valoare scalata in virgula fixa cu 5-digiti. Proprietatile de afişare a textului pot fi modificate pentru a schimba formatul numeric al rezultatului. Formatul de afişare al textului afectează doar modul de afişare al numerelor, nu si modul de calcul MATLAB sau modul de salvare. Un rezultat similar in ceea ce priveşte controlul formatului de afişare al valorilor numerice din Command Window se obţine prin folosirea funcţiei format. Formatul pe care îl specificaţi este valabil doar pe durata sesiunii curente. 3.1.13. Controlul interspaţiilor. Pentru a controla interspatiile la afisarea textului in Command Window folositi functia format in urmatoarele variante:

49

Page 50: MATLAB IN INGINERIE - tmt.ugal.ro

• format compact pentru a suprima liniile vide; acest format va permite totodată sa vizualizaţi mai multe informaţii in Command Window.

• format loose pentru a afişa liniile vide; acest format permite o vizualizare mai uşoara a informaţiilor.

3.1.14. Tipărirea conţinutului ferestrei Command Window. Pentru a tipari tot continutul Command Window, selectati Print din meniul File. Pentru a printa doar o selectie, realizati mai intai selectia in Command Window si apoi alegeti Print Selection din meniul File.

3.2. Execuţia programelor 3.2.1. Execuţia fişierelor M-Files. Execuţia fişierelor M-files, care sunt fisiere ce contin instrucţiuni scrise in limbajul MATLAB, se efectuaza in acelasi fel ca executia oricarei alte functii MATLAB. Tastati numele fisierului M-file in Command Window si apasati pe tasta Enter sau Return. Pentru a afisa fiecare functie din M-file pe masura ce aceasta este executata, selectati optiunea Echo on, din meniul File + Preferences + Command Window sau folositi functia echo on tastata la linia de comanda in Command Window. 3.2.2. Întreruperea unui program in execuţie. Puteti întrerupe un program in execuţie in orice moment de timp, apăsând combinaţia de taste Ctrl+C sau Ctrl+Break. Sub Windows, s-ar putea sa mai treaca o anumita perioada de timp pana cand functia curenta sau fisierul MEX-file isi incheie activitatea. Sub UNIX, executia programului se incheie imediat. 3.2.3. Executia programelor externe MATLAB-ului. Semnul de exclamare, !, este un shell escape si indica faptul ca restul de comanda tastata la linia de comenzi este o comanda catre sistemul de operare. Folositi aceasta facilitate pentru a lansa alte programe fara a parasi mediul MATLAB. De pilda, tastati comanda !dir care este similara cu lansarea comenzii dir din MS-DOS. Dupa ce programul sau comanda executata se incheie sistemul de operare reintoarce controlul MATLAB-ului. 3.2.4. Deschiderea fisierelor M-Files. Pentru a deschide un fisier M-file, selectati fisierul sau functia in Command Window, si apoi clic-dreapta si selectati Open Selection din meniul contextual. Fisierul M-file se deschide in Editor/Debugger. 3.2.5. Examinarea erorilor. Daca un mesaj de eroare apare la lansarea unui fişier M-file, clicati pe porţiunea subliniata a mesajului de eroare, sau apasati Ctrl+Enter. Fişierul M-file ce conţine eroarea se deschide in Editor, cu zona ce include linia eronata afişata in prim plan.

3.3. Înregistrarea unei sesiuni de lucru Funcţia diary creează o copie a sesiunii dvs. MATLAB intr-un fişier pe disc, incluzând instrucţiunile introduse de la tastatura si răspunsul sistemului, dar exclusiv graficele. Puteţi vizualiza si edita fişierul text rezultant folosind orice procesor de text. Pentru a crea un fişier pe disc, denumit sept23.out care conţine toate funcţiile pe care le introduceţi, si toate

50

Page 51: MATLAB IN INGINERIE - tmt.ugal.ro

răspunsurile MATLAB, tastaţi diary('sept23.out'). Pentru a întrerupe înregistrarea sesiunii, folosiţi diary('off'). Exista alte doua modalitati de vizualizare a informaţiei unei sesiuni: • Utilizând Command History, care conţine o lista a tuturor funcţiilor executate in

sesiunea curenta si cele anterioare • Sub Windows, opţiunea logfile de lansare a MATLAB-ului (vezi paragraful 1.3.2.).

3.4. Modul de afişare a textului pentru Command Window Proprietatile ferestrei Command Window pot fi modificate din meniul File + Preferences + Command Window. 3.4.1. Text display. Contine optiuni de specificare a rezultatelor in Command Window: Numeric format – Permite setarea formatului valorilor numerice afisate in Command Window. Acesta afecteaza doar modul de afisare a numerelor, nu si modul de calcul sau salvare specifice MATLAB-ului. Numeric display – Permite setarea interspatiilor in Command Window. Pentru a elimina liniile vide, folositi compact. Pentru a afisa liniile vide folositi loose. 3.4.2. Display. Contine optiuni de activare sau dezactivare a ecoului si a dimensiunii buffer-ului: Echo on – Selectaţi acesta opţiune daca doriţi vizualizarea in Command Window a comenzilor din fişierele M-files aflate in execuţie. Wrap lines – Textul introdus la linia de comanda si rezultatele in Command Window se pot extinde pe mai multe linii pentru a se incadra in latimea curenta a ferestrei Command Window. In acest caz scroll-bar-ul orizontal nu apare intrucat nu mai este necesar. Limit matrix display width to eighty columns – Selectati aceasta optiune daca doriti ca MATLAB sa afiseze doar 80 coloane ale rezultatului tip matrice, indiferent de latimea ferestrei Command Window. Deselectati optiunea daca latimea fereastrei Command Window o setati mai mare de 80 coloane si doriti ca rezultatul tip matrice sa umple latimea ferestrei Command Window. Command session scroll buffer size – Setati dimensiunea buffer-ului care pastreaza o lista a comenzilor lansate anterior pentru a fi reapelate. 3.4.3. Command Window Font & Color Preferences. Permite specificarea caracteristicilor font-ului folosit in Command Window. Selectati Use desktop font daca doriti ca fontul in Command Window sa fie acelasi cu acelasi specificat in General Font & Colors preferences. Daca doriti ca fontul in Command Window sa fie diferit, selectati Use custom font si specificati caracteristicile fontului pentru Command Window:

51

Page 52: MATLAB IN INGINERIE - tmt.ugal.ro

• Tastati, de pilda, SansSerif • Style, de pilda, bold • Size in points, de exemplu, 12 points. După efectuarea selecţiei, zona Sample area va afişa noua infatisare a fontului. Specificaţi culorile folosite in Command Window: Text color – Culoarea textului obişnuit; textul special foloseşte culori specificate pentru Syntax highlighting Background color – Culoarea de fundal a ferestrei Syntax highlighting – Culorile folosite pentru a sublinia sintaxa. Daca opţiunea este selectata, clicati pe Set Colors pentru a le specifica. 3.4.4. Command Window Keyboard & Indenting. Permite modificarea anumitor proprietati legate de tastatura si de aliniere. Command line key bindings. Selectaţi Windows sau Emacs in funcţie de tipul de proprietati de accelerare si prescurtare pe care le doriţi in Editor/Debugger. De pilda, daca selectaţi Windows, prescurtarea lui paste este Ctrl+V. Daca selectaţi Emacs, aceeaşi prescurtare este Ctrl+Y. Tab key. Tab size– Permite setarea numărului de spatii asociate unui tab in cursul afisarii rezultatelor. Numărul implicit este 4. Enable up to n tab completions – Selectaţi opţiunea daca doriţi sa folosiţi completare tab când tastaţi funcţii in Command Window. Apoi introduceţi o limita in casuta de editare. De pilda, daca introduceţi 10, când folosiţi completare tab, MATLAB afiseaza lista de posibile completări daca exista 10 sau mai puţine. Daca exista mai multe de 10, MATLAB afiseaza un mesaj care afirma ca exista mai mult de 10 completări. Deselectati cutia daca nu doriţi sa folosiţi completare tab. MATLAB muta cursorul la următorul tab stop când apasati tasta Tab, in loc sa completeze numele unei funcţii.

3.5. Utilizarea Help-ului Principalele cai de accesare a help-ului constau in folosirea Help Browser, Help Functions si a altor metode specifice. 3.5.1. Tipurile de informaţii Help. Help browser si Help Functions permite accesul la diferite tipuri de documentaţii care se folosesc in funcţie de necesitate. Release Notes – O vedere de ansamblu a noilor produse si caracteristici in versiunea curenta; aceasta conţine deasemenea un upgrade al informaţiei împreuna cu problemele specifice si limitări. Getting Started with ... – Destinata in primul rând începătorilor, aceasta documentaţie contine instructiuni de baza ale produsului respectiv. Using ... collections – Acest material conţine instrucţiunile complete pentru folosirea unui produs.

52

Page 53: MATLAB IN INGINERIE - tmt.ugal.ro

Reference Pages – Orice funcţie are o pagina de referinţa care conţine sintaxa, descrierea, exemple, si alte informaţii despre acea funcţie. Aceasta include links-uri către alte funcţii înrudite si informaţii adiţionale. Exista Reference pages puse la dispoziţie si pentru blocuri. Folosiţi paginile de referinţa pentru a invata mai mult despre o funcţie sau pentru a vizualiza sintaxa acesteia. M-File Help – Se poate obtine M-file help in Command Window pentru a accesa informatii de baza despre o functie. Astfel se poate obtine o scurta descriere a functiei si a sintaxei acesteia. Aceasta informatie este denumita M-file help deoarece textul help-ului este o serie de comentarii la inceputul fisierului M-file al acelei functii. Product Page – Este disponibila pe site-ul MathWorks Web, si contine cele mai noi informatii despre produse. Online Knowledge Base – Acesta reprezinta suportul tehnic oferit de MathWorks online. Acesta furnizeaza solutii la intrebari puse de utilizatori. 3.5.2. Folosirea Help Navigator. 3.5.2.1. Using the Product Filter. Folositi Product filter in Help Navigator pentru a vizualiza doar documentatia produselor specificate de dvs.

Pentru afisarea documentatiei tuturor produselor MathWorks instalate pe sistemul dvs., selectati All. Pentru vizualizarea doar a unui set de documentatii pentru produselor MathWorks instalate pe sistemul dvs., setati Product filter pe Selected, care conduce la: • Contents va lista doar setul produselor specificate de dvs. • Index va afisa doar termenii index pentru setul de produse specificate de dvs. • Search va efectua cautarea doar in set de produse specificate. Pentru a specifica setul de produse dorit, clicati pe butonul Select. Fereastra Help Product Filter se deschide.

Selectati produsele a caror documentatie doriti sa o accesati in Help Navigator si apoi clicati pe OK. In aceste conditii, cu Product filter setat pe Selected, Help Navigator va afisa documentatia doar pentru produsele specificate de dvs.

53

Page 54: MATLAB IN INGINERIE - tmt.ugal.ro

3.5.2.2. Folosirea listei Contents in Help Browser. Pentru a lista titlurile si tabla de materii corespondenta documentatiei produselor MathWorks, clicati pe Contents tab in panelul Help Navigator. In Contents, puteti: • Clica pe semnul + situat la stanga unui articol pentru o listare expandata • Clica pe semnul - situat la stanga unui articol sau dublu-clic pe articol pentru a

comprima afisarea pentru acel articol. • Selecta un articol pentru a vizualiza prima pagina al acelui document in panelul display

din dreapta. • Executa dublu-clic pe un articol pentru o listare expandata si pentru afisarea primei

pagini a acelui document in panelul display. • Folosi tastele sageata ↓ ↑ pentru navigare prin lista cu articole.

3.5.2.3. Căutarea documentaţiei folosind Index. Pentru a obţine informaţii despre o anumita funcţie in documentaţia MathWorks a produselor dvs., folosiţi Index tab in panelul Help Navigator. Pentru a utiliza aceasta facilitate: • Clicati pe Index tab. • Tastaţi un cuvânt sau cuvinte in casuta de editare Search index for. Pe măsura ce tastaţi,

se vor afişa diferite articole care conţin literele tastate.

54

Page 55: MATLAB IN INGINERIE - tmt.ugal.ro

3.5.2.4. Căutarea documentaţiei folosind Search. Pentru a căuta o anumita fraza in documentaţie, folosiţi Search tab in panelul Help Navigator.

Pentru utilizarea Search tab: • Clic pe Search tab. • Selectaţi un Search type:

o Full Text cauta prin toata documentaţia. Acesta poate furniza un număr mare de articole.

o Document Titles căuta intre titlurile documentaţiei. Acesta este cel mai indicat pentru a începe o căutare minuţioasa.

o Function Name caută printre paginile de referinţa ale funcţiilor. Acesta este echivalent cu funcţia doc.

o Etc.

55

Page 56: MATLAB IN INGINERIE - tmt.ugal.ro

• Tastaţi cuvântul sau cuvintele pe care le cautati in casuta de editare Search for, si clicati pe Go (sau apasati Enter sau Return).

Documentele continand termenul căutat sunt listate, grupate după tipul produsului. 3.5.2.5. Paginile favorite. Clicati pe Favorites tab in Help Navigator pentru a vizualiza o lista a documentelor selectate de dvs. ca fiind favorite. Din lista puteţi: • Selecta un articol – acel document apare in panelul display. • Stergeti un articol – executaţi un clic-dreapta pe articolul din lista si selectaţi Remove

din meniul contextual, sau apasati pe tasta Delete. • Redenumiti un articol - executaţi un clic-dreapta pe articolul din lista si selectaţi

Rename din meniul contextual. Tastaţi peste numele iniţial numele nou. 3.5.3. Folosirea funcţiilor Help. Exista mai multe funcţii help care permit accesul la informaţii de tip help in mod diferit decât Help browser. Funcţia Descriere doc Afiseaza pagina de referinţa pentru funcţia specificata in Help Browser,

furnizând informaţii despre sintaxa, o descriere, exemple, si link-uri la funcţii similare

help Afiseaza M-file help in Command Window pentru funcţia specificata helpbrowser, helpdesk

Deschide Help Browser

helpwin Afiseaza in Help Browser o lista a tuturor funcţiilor ce permit acces la M-file help

lookfor Afiseaza in Command Window o lista si o scurta descriere pentru toate funcţiile a căror scurta descriere include cuvântul cheie specificat

3.5.4. Alte metode de asistenta Help. In plus fata de Help browser si functiile help, anumite produse permit si alte metode de accesare a informaţiei de tip help, de pilda articole specifice in meniul Help, butoane Help in cutiile de dialog sau in meniurile contextuale. Multe produse includ demo-uri care pun in evidenta trasaturile de baza specifice. Deseori este utila lansarea demo-urilor când folosiţi pentru prima data un produs. Pentru a vedea o lista cu demo-uri accesibile pentru un produs, folositi Launch Pad, si selectaţi un demo considerat necesar.

3.6. Funcţii pentru gestionarea mediului de lucru (workspace), al directoarelor şi fişierelor

3.6.1. MATLAB Workspace. Spaţiul de lucru MATLAB sau workspace consta intr-un set de variabile (vectori) definite in cursul unei sesiuni de lucru MATLAB si stocate in memorie. Puteţi adăuga variabile la workspace-ul curent folosind funcţii, lansând fişiere M-files, si incarcand workspace-uri salvate anterior. De pilda tastaţi: t = 0:pi/4:2*pi; y = sin(t);

56

Page 57: MATLAB IN INGINERIE - tmt.ugal.ro

Workspace-ul va include doua variabile, y si t, fiecare având 9 valori. 3.6.2. Vizualizarea Workspace-ului curent. Pentru vizualizarea workspace-ului curent puteţi folosi fereastra Workspace Browser (vezi paragraful 1.4.2.6.) sau funcţiile alternative: • who pentru a lista variabilele din workspace-ul curent; • whos pentru a lista variabilele si informaţii despre dimensiunile si clasa lor. • exist pentru a vedea daca variabila specificata se afla in workspace. De pilda daca tastaţi comenzile: t = 0:pi/4:2*pi; y = sin(t); who MATLAB va răspunde cu: Your variables are: t y Daca tastaţi: whos MATLAB va răspunde cu: Name Size Bytes Class t 1x9 72 double array y 1x9 72 double array Grand total is 18 elements using 144 bytes 3.6.3. Salvarea Workspace-ului curent. Workspace-ul nu este memorat de la o sesiune MATLAB la alta. Când iesiti din MATLAB, workspace-ul este şters. Puteţi salva orice variabila sau toate variabilele din workspace-ul curent, intr-un fişier MAT-file, care este un fişier MATLAB de tip binar. Ulterior puteţi încărca fişierul MAT-file fie in cursul sesiunii MATLAB curente sau intr-o alta sesiune, in scopul re-utilizării variabilelor din workspace salvate. Salvarea tuturor variabilelor. Pentru a salva toate variabilele din workspace cu ajutorul ferestrei Workspace browser: • Din meniul File sau din meniul contextual selectaţi Save Workspace As, sau clicati pe

butonul save in Workspace browser toolbar. Cutia de dialog Save se deschide. • Specificaţi locaţia şi numele fişierului, de pilda worksp; MATLAB adaugă automat

extensia .mat a fişierului. • Clicati pe Save.

57

Page 58: MATLAB IN INGINERIE - tmt.ugal.ro

Variabilele workspace-ului sunt salvate sub numele fişierului MAT-file pe care l-aţi specificat. Salvarea variabilelor selectate. Pentru a salva doar anumite variabile din workspace procedaţi de maniera următoare: • Selectaţi variabila in Workspace browser. Pentru a selecta mai multe variabile, folosiţi

Shift-clic sau Ctrl-clic. • Clic-dreapta si din meniul contextual, selectaţi Save Selection As. Cutia de dialog Save

to MAT-File se deschide. • Specificaţi locaţia si File name. MATLAB furnizează automat extensia .mat. • Clicati pe Save. Variabilele workspace-ului pe care le-aţi selectat sunt salvate in fişierul MAT-file cu numele pe care l-aţi specificat. Workspac-ul curent poate fi salvat si cu ajutorul comenzii save lansata la linia de comanda. Tastati de pilda save workspac. MATLAB va inregistra workspace-ul curent in fisierul workspac.mat, extensia .mat fiind adaugata implicit. 3.6.4. Încărcarea unui workspace salvat si importul datelor. Pentru a încărca variabilele salvate in workspace procedati in felul urmator:

• Clicati pe load data button in toolbar-ul ferestrei Workspace browser, sau clic-dreapta in Workspace browser si selectati Import Data din meniul contextual. Cutia de dialog Open se deschide si selectati fisierul MAT-file pe care doriti sa-l incarcati si clicati pe Open. Variabilele si valorile acestora, salvate in fisierul MAT-file, sunt incarcate in workspace-ul curent. Daca vreuna din variabilele care sunt incarcate au aceleasi nume cu variabilele din workspace-ul curent, vaorile de fisierul MAT-file va inlocui valorile din workspace-ul curent. Orice variabile din fisierul MAT-file care nu sunt in workspace sunt adaugate la cele existente deja in workspace-ul curent.

• O alta varianta consta in utilizarea funcţiei load pentru a deschide un workspace salvat.

Tastaţi de pilda: o load('worksp') pentru a încărca vechiul workspace împreuna cu variabilele

corespunzătoare o who pentru a vizualiza variabilele anterioare.

Pentru a încărca sau importa date in MATLAB exista si alte metode, respectiv funcţii cum ar fi: • Selectaţi din Workspace browser opţiunea Edit + Paste Special sau folosiţi Ctrl+V

pentru a importa date in MATLAB folosind Import Wizard. 3.6.5. Schimbarea si copierea numelor variabilelor. Pentru a re-denumi o variabila in workspace, clic-dreapta pe variabila in Workspace browser si selectaţi Rename din meniul contextual. Tastaţi noul nume de variabila peste numele existent si apasati pe tasta Enter sau Return. Pentru a copia numele variabilelor in clipboard, selectaţi variabilele din workspace si apoi Edit + Copy. Puteţi efectua copia numele acestora efectuând paste, de pilda, in Command Window. Variabilele multiple sunt separate de virgula.

58

Page 59: MATLAB IN INGINERIE - tmt.ugal.ro

3.6.6. Ştergerea variabilelor din Workspace. Puteţi şterge variabile din workspace procedând in felul următor: • Din Workspace browser, selectaţi variabila, sau Shift+clic sau Ctrl+clic pentru a selecta

mai multe variabile. Pentru a selecta toate variabilele, alegeti Select All din meniul Edit sau meniurile contextuale. Apasati tasta Delete sau clic pe delete button din toolbar. O cutie de dialog de confirmare poate apare. Daca apare, clicati pe Yes pentru a şterge variabilele. Cutia de confirmare apare daca specificati acest lucru in meniul File + Preference.

• Pentru a şterge toate variabilele odată, selectaţi Clear Workspace din meniul Edit in Workspace browser.

• O alta varianta de ştergere a variabilelor consta in utilizarea funcţiei clear. Tastaţi de pilda:

o clear y pentru a şterge variabila y o who pentru a verifica faptul ca variabila y nu mai exista in workspace-ul curent o clear pentru a stere toate variabilele odată o who pentru a verifica faptul ca nu mai exista nici o variabila in workspace-ul

curent. 3.6.7. Crearea graficelor din Workspace Browser. Pentru a reprezenta grafic o variabila din Workspace browser procedaţi după cum urmează: • Clic-dreapta pe variabila pe care doriţi sa o reprezentaţi, • Din meniul contextual selectaţi Graph si apoi alegeţi tipul de grafic pe care doriţi sa-l

creaţi. Graficul va apare intr-o fereastra figure. De pilda tastaţi: t = 0:pi/20:2*pi; pentru a crea variabila t y = sin(t); pentru a crea variabila y • Clic-dreapta pe variabila y, • Din meniul contextual selectati Graph Selection si apoi alegeţi tipul de grafic plot.

Graficul va apare intr-o fereastra figure ca mai jos.

59

Page 60: MATLAB IN INGINERIE - tmt.ugal.ro

3.6.8. Setarea caii de căutare (Set Path). MATLAB foloseşte caile de căutare pentru a găsi fişiere M-files si alte fişiere MATLAB asociate, care sunt organizate in directoare in cadrul sistemului de fişiere Windows. Aceste fişiere si directoare sunt furnizate cu MATLAB respectiv cu toolbox-urile asociate. Orice fişier pe care doriţi sa-l lansaţi in MATLAB este localizat intr-un director care este intr-o cale de căutare sau se afla in directorul curent. Implicit, fişierele furnizate odată cu MATLAB si toolbox-urile MathWorks sunt incluse in calea de căutare sau in MATLAB path. Daca creaţi fişiere MATLAB, adaugati in mod explicit directoarele continand fişierele respective la calea de căutare MATLAB. Subdirectoarele trebuiesc deasemenea adăugate la calea de căutare; ele nu sunt implicit in calea de căutare chiar daca directoarele lor ”tata” sunt. Calea de căutare este salvata in fişierul pathdef.m. Ordinea directoarelor in calea de căutare este importanta. De pilda daca tastaţi test la promptul MATLAB din Command Windows, MATLAB efectuează următoarele acţiuni:

• Caută test ca pe un nume de variabila. • Verifica daca test este o funcţie MATLAB inclusa. • Caută in directorul curent un fişier cu numele test.m. • Caută in directoarele din MATLAB path, pentru a găsi fişierul test.m.

Ordinea directoarelor din calea de căutare este important daca exista mai funcţii cu aceleaşi nume. Când MATLAB caută acea funcţie, doar prima funcţie din calea de căutare este găsită. Alte funcţii cu acelaşi nume nu pot fi executate. 3.6.9. Vizualizarea si setarea caii de căutare. Pentru a vizualiza si modifica MATLAB path si pentru a vedea fişierele in directoarele care sunt in calea de căutare folosiţi cutia de dialog Set Path. Pentru a o accesa selectaţi Set Path din meniul File, sau tastaţi pathtool la linia de comanda Command Window. Cutia de dialog Set Path se va deschide ca mai jos.

60

Page 61: MATLAB IN INGINERIE - tmt.ugal.ro

Folosind facilitatile cutiei de dialog Set Path puteţi efectua următoarele acţiuni: • Vizualiza calea de căutare • Adăuga directoare la calea de căutare • Muta directoare in calea de căutare • Şterge directoare din calea de căutare • Reface calea de căutare iniţiala • Reveni la calea de căutare anterioara • Salva setările caii de căutare • Modifica pathdef.m. 3.6.10. Operaţii cu fişiere. Operaţiile MATLAB cu fişiere folosesc directorul curent ca punct de referinţa. Orice fişier pe care vreti sa-l lansati trebuie mutat in directorul curent sau intr-un director pe care sa-l includeti in calea de cautare. Deasemenea, cand deschideti un fisier in MATLAB, punctul de plecare pentru cutia de dialog Open, de deschidere a fiesierelor, este directorul curent. Operatiunile cu fisiere pot fi executate folosind campul Current directory, respectiv Current directory browser (vezi 1.4.2.4.). O metoda rapida de a vizualiza sau modifica directorul curent este prin utilizarea câmpului Current Directory in Desktop toolbar. Pentru a modifica directorul curent din acest câmp, puteti proceda in mai multe feluri, si anume: • Tastati calea catre noul director curent, • Clicati pe sageata in jos ▼ pentru a vizualiza lista directoarelor de lucru anterioare si

selectati un articol din lista pentru a face ca acel director sa devina directorul curent MATLAB. Directoarele sunt listate in ordine, cu cele mai recent folosite situate in partea superioara a listei. Puteţi şterge lista si seta numărul de directoare salvate in lista.

• Clicati pe browse button (...) pentru a seta un nou director curent. Alte functii MATLAB utile de lucru cu fisiere si cu sistemul de ooperare sunt prezentate in tabelul de mai jos: Functia Destinatia cd Schimba directorul curent pwd Arata directorul curent dir, ls Listeaza fisierele si subdirectoarele din

directorul curent delete Sterge fisiere din directorul curent sau

obiecte grafice ! Executa comezi ale sistemului de operare

3.7. Importul si exportul datelor MATLAB pune la dispoziţie mai multe cai de încărcare a datelor din fişiere de pe disc sau din clipboard in workspace, un proces numit importul datelor, si de salvare a variabilelor workspace in fişiere pe disc, proces numit exportul datelor. Modul de lucru depinde de doi factori: • Operaţia avuta in vedere, de import sau export de date • Formatul datelor: text, binar, etc.

61

Page 62: MATLAB IN INGINERIE - tmt.ugal.ro

3.7.1. Importul si exportul datelor de tip text. In format text, datele apar in coduri tip American Standard Code for Information Interchange (ASCII), ce reprezintă caractere alfanumerice. Datele text ASCII pot fi vizualizate intr-un editor de text. Importul datelor text poate fi efectuat prin mai multe metode, cum ar fi: folosind Import Wizard, Import Functions, importul datelor numerice de tip text, importul fisierelor de date de tip ASCII delimitate, importul datelor numerice cu text headers, importul datelor alfanumerice. 3.7.1.1. Importul datelor text folosind Import Wizard. Pentru a importa date de tip text folosind Import Wizard, se urmează paşii de mai jos: 1) Se lansează Import Wizard, selectând opţiunea Import Data din meniul File din

MATLAB Desktop. MATLAB afiseaza o cutie de dialog de selecţie de fişiere. Acelaşi efect îl obtineti prin lansarea funcţiei uiimport la linia de comanda in Command Window. Pentru a folosi Import Wizard la importul datelor din clipboard, selectaţi opţiunea Paste Special din meniul Edit in MATLAB Desktop. Puteţi deasemenea executa un clic dreapta in MATLAB Command Window si alege Paste Special din meniul contextual. Se trece apoi la pasul 3 pentru a continua importul datelor din clipboard.

2) Specificaţi in cutia de dialog fişierul pe care doriţi sa-l importaţi si clicati pe Open. Import Wizard lansează fişierul si încearcă sa proceseze conţinutul.

3) Specificaţi caracterul folosit ca separator intre date. Acest caracter este denumit delimitator sau separator de coloane. Import Wizard poate determina delimitator–ul folosit in multe cazuri. După ce Import Wizard a procesat corect datele, clicati pe Next.

4) Selectaţi variabilele pe care doriţi sa le importaţi. Implicit, Import Wizard pune toate datele numerice intr-o singura variabila si toate datele text in alte variabile, aceasta structura corespunzând primului buton din figura de mai jos .

Uneori este util sa creem variabile separate din fiecare rând (sau coloana) de date si sa folosim header-ul de rând (sau coloana) ca nume de variabila. Pentru aceasta trebuie selectat butonul al doilea din figura de mai sus.

5) Clicati pe Finish pentru a importa datele in workspace. De pilda in exemplul de mai jos, Import Wizard a deschis fişierul, grades.txt. John 85 90 95 Ann 90 92 98 Martin 100 95 97 Rob 77 86 93

62

Page 63: MATLAB IN INGINERIE - tmt.ugal.ro

TEMA 9: Creaţi in directorul curent fişierul grades.txt prezentat mai sus folosind un editor exterior MATLAB-ului (de pilda Notepad) si apoi importaţi-l in MATLAB workspace urmărind paşii de mai sus.

In urma executării TEMEI 8, folosind comanda whos se pot afişa caraceristicile variabilelor create in urma importului. whos Name Size Bytes Class Ann 1x3 24 double array John 1x3 24 double array Martin 1x3 24 double array Rob 1x3 24 double array Grand total is 12 elements using 96 bytes 3.7.1.2. Importul datelor text folosind Import Functions. Pentru a importa date text de la linia de comanda in Command Window sau dintr-un fisier M-file, trebuie sa alegeţi una din funcţiile MATLAB de import. Alegerea depinde de formatul datelor. Datele de tip text trebuiesc formatate intr-o structura uniforma de randuri si coloane, folosind un delimitator sau separator de coloane, pentru a separa datele unele de altele. Delimitator-ul poate fi spaţiul, virgula, punct si virgula, tab, sau alte caractere. Datele individuale pot fi de tip alfabetic sau numeric sau un mixaj al celor doua. Fişierul text poate deasemenea conţine una sau mai multe linii de text, numite header lines, sau poate folosi text headers pentru identificarea fiecărei coloane sau linii. Exemplul de mai jos ilustrează un fişier text având ca delimitator un tab si care conţine text header si header line si column headers.

63

Page 64: MATLAB IN INGINERIE - tmt.ugal.ro

In tabelele de mai jos sunt prezentate tipuri de formatare a datelor, respectiv funcţii utilizate la importul datelor pentru diferite tipuri de formate. Detalii despre fiecare funcţie se poate obţine tastând la linia de comanda: help nume_functie Exemplu de formatare a datelor Extensia fişierului 1 2 3 4 5 6 7 8 9 10

.txt

.dat sau altele 1; 2; 3; 4; 5 6; 7; 8; 9; 10 sau 1, 2, 3, 4, 5 6, 7, 8, 9, 10

.txt

.dat

.csv sau altele

Ann Type 1 12.34 45 Yes Joe Type 2 45.67 67 No

.txt

.dat sau altele Grade1 Grade2 Grade3 91.5 89.2 77.3 88.0 67.8 91.0 67.3 78.1 92.5

.txt

.dat sau altele

Funcţie Tipul de date Delimitator Csvread Format numeric Doar virgula Dlmread Format numeric Orice caracter Fscanf Format alfabetic si numeric

intr-o singura variabila Orice caracter

Load Format numeric Doar spatii Textread Format alfabetic si numeric

intr-o singura variabila Orice caracter

3.7.1.3. Exportul fişierelor de date ASCII delimitate. Pentru a exporta un vector intr-un fişier de date delimitate de tip ASCII, puteţi folosi comanda save, specificând tipul -ASCII sau funcţia dlmwrite. Comanda save este uşor de folosit, insa funcţia dlmwrite este mai flexibila, permitandu-va sa specificaţi orice caracter ca delimitator si permitand exportul unor porţiuni ale unui vector specificând gama de valori. Pentru a exporta vectorul A, A = [ 1 2 3 4 ; 5 6 7 8 ];

64

Page 65: MATLAB IN INGINERIE - tmt.ugal.ro

Folosiţi comanda save după cum urmează: save fisierul_meu.out A –ASCII Daca vizualizaţi fişierul creat intr-un editor de text, acesta arata in felul următor: 1.0000000e+000 2.0000000e+000 3.0000000e+000 4.0000000e+000 5.0000000e+000 6.0000000e+000 7.0000000e+000 8.0000000e+000 Implicit, comanda save foloseşte spatii ca delimitatoare dar puteţi folosi in locul acestora tab-uri specificând tipul -tabs. Daca folosiţi save pentru a scrie un vector de caractere intr-un fişier ASCII, MATLAB scrie echivalentul ASCII al caracterelor in fişier. Daca scrieţi stringul 'hello' intr-un fişier, save scrie valorile 104 101 108 108 111. Folosind funcţia dlmwrite. Pentru a exporta un vector in format ASCII specificând delimitatorul, folosiţi funcţia dlmwrite. De pilda, pentru a exporta matricea A, A = [ 1 2 3 4 ; 5 6 7 8 ]; Ca un fişier de date ASCII care foloseşte punct si virgula ca delimitator, folosiţi aceasta comanda: dlmwrite('my_data.out',A, ';') Daca se vizualizează fişierul creat intr-un editor de text, acesta arata in felul următor: 1;2;3;4 5;6;7;8 Funcţia dlmwrite nu inserează delimitatoare la sfarsitul rândurilor. Implicit, daca nu se specifica un delimitator, dlmwrite foloseşte o virgula ca delimitator. Puteţi specifica un spaţiu (' ') ca delimitator sau, daca specificaţi spaţiu vid (''), nici un delimitator. Exportul fişierelor de date poate fi efectuat deasemenea folosind funcţia diary (vezi paragraful 3.3). Pentru a exporta vectori de dimensiuni reduse puteţi folosi comanda diary. Aceasta funcţie creează o copie a sesiunii MATLAB pe un fişier disc (excluzând grafice). 3.7.2. Operaţiuni speciale cu fişiere si date. MATLAB prevede funcţii specifice de operaţiuni cu fişiere cum ar fi: • Căutare si salvare de informaţii de pe Internet, cu ajutorul funcţiilor urlread si urlwrite, • Arhivare si dezarhivare a fişierelor si directoarelor folosind funcţiile zip si unzip, • Trimitere automata de mesaje e-mail folosind funcţia sendmail.

4. Elemente de grafica 2D si 3D MATLAB dispune de o multitudine de facilitaţi pentru reprezentarea grafica a vectorilor si matricelor, respectiv editarea si printarea acestor grafice.

65

Page 66: MATLAB IN INGINERIE - tmt.ugal.ro

4.1. Crearea unui grafic O funcţie de baza utilizata la trasarea graficelor este functia plot care are diferite forme, in funcţie de argumentele de intrare. Daca y este un vector, plot(y) produce un grafic, liniar pe porţiuni, al elementelor lui y, in funcţie de index-ul elementelor lui y. Daca specificaţi doi vectori ca argumente, plot(x ,y) creează un grafic al lui y funcţie de x. Pentru exemplificare, tastaţi: x = 0:pi/100:2*pi; y = sin(x); plot(x, y) Acum se pot adaugă graficului notaţii pe cele doua axe, respectiv un titlu. Folosind caracterele \pi se creează simbolul π. xlabel('x = 0:2\pi') ylabel('Sine of x') title('Plot of the Sine Function','FontSize',12) In urma execuţiei comenzilor de mai sus se obţine graficul de mai jos.

Alte funcţii analoage de reprezentare grafica 2D si 3D a funcţiilor sunt prezentate in tabelul de mai jos. Funcţia Destinaţia Plot Grafica 2D cu scara liniara pe ambele axe X si Y Plot3 Grafica 3D cu scara liniara pe ambele axe X si Y Loglog Grafica 2D cu scara logaritmica pe ambele axe X si Y Semilogx Grafica 2D cu scara logaritmica pe axa X si scara liniara pe axa Y

66

Page 67: MATLAB IN INGINERIE - tmt.ugal.ro

Semilogy Grafica 2D cu scara logaritmica pe axa Y si scara liniara pe axa X Plotyy Grafica cu etichetare pe partea dreapta si stânga Stem Grafica 2D pentru seturi de date discrete Stem3 Grafica 3D pentru seturi de date discrete Bar Grafica 2D, reprezentare cu bare Barh Grafica 2D, reprezentare cu bare orizontale Bar3 Grafica 3D, reprezentare cu bare Bar3h Grafica 3D, reprezentare cu bare orizontale Stairs Grafica 2D, reprezentare in scara Area Grafica 2D, reprezentare cu arii Fill Grafica 2D, de reprezentare a poligoanelor Fill3 Grafica 3D, de reprezentare a poligoanelor

TEMA 10: Folosind pe rând toate funcţiile din tabelul de mai sus, reprezentaţi pe acelaşi grafic funcţiile: • f(x) = sin(x)/x si • g(x) = cos(x)/(x+1) pe intervalul [0.001...20.π]. Pentru aflarea sintaxei funcţiilor tastaţi: help nume_ funcţie

4.2. Reprezentări multiple in acelaşi sistem de coordonate Perechi multiple (x, y) de argumente creează reprezentări grafice multiple printr-un singur apel al funcţiei plot. MATLAB accesează automat un set predefinit de diverse culori (setul poate fi modificat) ce permit diferenţierea vizuala intre seturile de date. De pilda, instrucţiunile ce urmează afiseaza trei curbe de variaţie funcţie de x, fiecare curba cu o culoare diferita: y2 = sin(x-.25); y3 = sin(x-.5); plot(x,y,x,y2,x,y3) Comanda legend permite o cale uşoara de identificare a curbelor individuale. legend('sin(x)','sin(x-.25)','sin(x-.5)') In figura ce urmează este prezentat rezultatul MATLAB in urma executării comenzilor de mai sus.

67

Page 68: MATLAB IN INGINERIE - tmt.ugal.ro

TEMA 11: Reprezentaţi grafic funcţia f(x)=sin(x) in grade de la 0 la 360.

TEMA 12: Reprezentaţi grafic funcţia f(x)=sin(1/x) unde 0.01 < x < 0.1. Daca reprezentarea nu este precisa efectuaţi corecţiile de rigoare. Adaugati titlul « Graficul funcţiei f(x)=sin(1/x) » , pe axa x adaugati « x [rad] » iar pe axa y adaugati « f(x) »

TEMA 13: Reprezentaţi grafic funcţia Rosenbrock sau ”banana”: f(x, y) = 100(y-x2)2+ (1-x2) dupa cum urmeaza: • Graficul functiei • Curbe de nivel • Graficul curbei+curbe de nivel Intervalul de reprezentare este definit de: -3<x<3 si -5<y<10.

4.3. Specificarea tipului de linie si culoarea Este posibila setarea culorii, a tipului de linie, a markerului (de exemplu simbolul ”+” sau ”o”) când plotati datele folosind funcţia plot. plot(x,y,'culoare_stil_marker') culoare_stil_marker este un string continand de la 1 la 4 caractere ce desemnează o culoare, un stil de linie, si un tip de marker:

68

Page 69: MATLAB IN INGINERIE - tmt.ugal.ro

• Caracterele ce desemnează culori sunt 'c', 'm', 'y', 'r', 'g', 'b', 'w', si 'k'. Acestea corespund culorilor cyan, magenta, yellow, red, green, blue, white, si black.

• Stilul de linie este indicat de string-urile: '-' pentru solid, '- -' pentru linie lunga întrerupta, ':' pentru linie scurta întrerupta, '-.' pentru linie punct. Nu precizaţi nici unul din stilurile de linie pentru linie solida.

• Tipurile de marker sunt '+', 'o', '*', 'x' si 's' pentru pătrat, 'd' pentru romb, '^' pentru triunghi cu vârful in sus, 'v' pentru triunghi cu vârful in jos, '>' pentru triunghi cu vârful la dreapta, '<' pentru triunghi cu vârful la stânga, 'p' pentru pentagon, 'h' pentru triunghi hexagon, si nimic daca nu se doreşte marker.

De pilda lansaţi comenzile de mai jos: plot(x,y,'ks') plot(x,y,'r:+') Prima comanda trasează graficul funcţiei y funcţie de x cu markere de tip pătrate negre in fiecare punct de grafic, dar nu conectează marker-ele cu linie. A doua comanda trasează graficul funcţiei y funcţie de x cu marker de tip ”+” de culoare roşie, fara sa unească punctele de grafic.

TEMA 14: Reprezentaţi pe acelaşi grafic funcţiile: • f(x)=ex.sin(x) cu marker tip romb, culoare albastra, cu linie punct si • g(x)= ex.cos(x) cu marker tip hexagon, culoare verde linie întrerupta. Argumentul funcţiei x respecta condiţia 0 < x < 4π.

4.4. Reprezentarea mărimilor complexe si imaginare Când argumentele funcţiei plot sunt complexe, partea imaginara este ignorata cu excepţia situaţiei când funcţiei i se transmite un singur argument complex. In acest caz special, comanda este o prescurtare pentru trasarea unui grafic de tip parte reala funcţie de partea imaginara. Deci, funcţia plot(Z) unde Z este un vector sau matrice complexa, este echivalenta cu plot(real(Z),imag(Z)). Tastaţi de pilda: t = 0:pi/20:2*pi; plot(exp(i*t),'-o'); axis equal; Comenzile de mai sus trasează un poligon cu 40 de laturi cu cercuri in vârfuri. Comanda axis equal face ca pe cele doua axe sa se lucreze cu aceeaşi unitate de măsura, făcând reprezentarea sa fie aproximativ ”circulara”.

69

Page 70: MATLAB IN INGINERIE - tmt.ugal.ro

4.5. Adăugarea unor curbe la grafice existente Comanda hold permite adăugarea unor curbe la un grafic existent. Când tastaţi hold on MATLAB nu inlocuieste graficul existent la apelul unei noi comenzi plot ci adaugă noile curbe la graficul curent, rescaland axele daca este necesar. De pilda, instrucţiunile de mai jos creează mai întâi un grafic tip contour al funcţiei peaks, apoi suprapune o reprezentare grafica in degrade a aceleiaşi funcţiei. [x,y,z] = peaks; contour(x,y,z,20,'k'); hold on; pcolor(x,y,z); shading interp; hold off; Comanda hold on permite ca reprezentarea grafica pcolor sa se combine cu reprezentarea contour intr-o singura figura.

70

Page 71: MATLAB IN INGINERIE - tmt.ugal.ro

4.6. Ferestre figure Funcţiile grafice deschid in mod automat o noua fereastra figure daca nu exista nici o fereastra figure deja afişata pe ecran. Daca o fereastra figure exista, MATLAB foloseşte acea fereastra pentru reprezentări grafice. Daca exista mai multe ferestre figure deschise, MATLAB se fixează la una dintre ele ce reprezintă figura curenta (ultima figura folosita sau pe care s-a executat un clic). Pentru a face ca o figura existenta sa devină figura curenta, clicati pe acea fereastra figure sau tastaţi figure(n), unde n este numărul din bara de titlu a figurii. Rezultatele comenzilor grafice ulterioare sunt afişate in aceasta fereastra. Pentru a deschide o noua fereastra figure si pentru a o face figura curenta, tastaţi figure.

4.7. Reprezentări grafice multiple pe o figura Comanda subplot permite afişarea in aceeaşi fereastra a mai multor grafice sau tipărirea acestora pe aceeaşi coala de hârtie. Tastând subplot(m,n,p) fereastra figure este partiţionata intr-o matrice m x n de grafice mai mici si selectează graficul cu index p ca grafic curent. Graficele sunt numerotate întâi pe primul rând de sus al ferestrei figura, apoi pe cel de-al doilea rând etc. De pilda, comenzile de mai jos trasează curbele in patru grafice diferite pe fereastra figure. [X,Y,Z] = peaks; subplot(2,2,1); mesh(X); subplot(2,2,2); mesh(Y); subplot(2,2,3); mesh(Z); subplot(2,2,4); mesh(X,Y,Z);

71

Page 72: MATLAB IN INGINERIE - tmt.ugal.ro

Diferite funcţii de reprezentare grafica a suprafeţelor sunt prezentate in tabelul de mai jos. Funcţia Acţiune Mesh, surf Trasare de suprafeţe Meshc, surfc Trasare de suprafeţe cu contur dedesubt Meshz Trasare de suprafeţe cu perdea verticala Pcolor Trasare de suprafeţe in plan (valoare

proporţionala cu culoarea) Surfl Trasare de suprafeţe luminate dintr-o

anumita direcţie Surface Creare de obiecte tip suprafaţa

TEMA 15: Folosind pe rând toate funcţiile din tabelul de mai sus, reprezentaţi grafic matricea Z obţinuta prin comanda MATLAB: [X,Y,Z] = peaks;

4.8. Controlul axelor Comanda axis admite un număr de opţiuni pentru setarea scalarii, orientării, si aspectului graficelor. Puteţi deasemenea seta aceste opţiuni interactiv. 4.8.1. Setarea limitelor axelor. Implicit, MATLAB caută maximele si minimelor seturilor de date pentru a alege limitele axelor. Comanda axis permite specificarea propriilor dvs. limite pentru axe si are sintaxa următoare: axis([xmin xmax ymin ymax]) pentru grafice bi-dimensionale si axis([xmin xmax ymin ymax zmin zmax]) pentru grafice tri-dimensionale. Folosiţi comanda axis auto pentru a re-permite MATLAB-ului selecţia automata a limitelor.

72

Page 73: MATLAB IN INGINERIE - tmt.ugal.ro

4.8.2. Setarea aspectului axelor. Comanda axis va permite deasemenea sa specificaţi un număr de stiluri predefinite. De pilda, axis square determina limitele axelor x si y de aceeaşi lungime. Comanda axis equal determina incrementul pe axele x si y de aceeaşi lungime. Aceasta înseamnă ca următoarea comanda: plot(exp(i*[0:pi/10:2*pi])) urmata fie de axis square sau de axis equal face ca ovalul sa devină cerc. Comanda axis auto normal face ca modul de scalare sa revină la cel iniţial, automatic. 4.8.3. Setarea vizibilitatii axelor. Puteţi folosi comanda axis pentru a face axele vizibile sau invizibile. Comanda axis on face axele vizibile, aceasta comanda fiind cea implicita. Comanda axis off face axele invizibile. 4.8.4. Setarea gridului. Comanda grid face sa apară sau sa dispară liniile de grid. Comanda grid on face ca liniile de grid sa apară iar grid off face ca liniile de grid sa dispară din nou.

4.9. Etichetarea axelor si titluri Comenzile xlabel, ylabel, si zlabel adaugă etichete pe axele x, y, si z. Comanda title adaugă un titlu in partea superioara a figurii si funcţia text inserează text oriunde pe figura. Un set specific de notaţii generează litere greceşti. Tastaţi de pilda comenzile de mai jos. t = -pi:pi/100:pi; y = sin(t); plot(t,y) axis([-pi pi -1 1]) xlabel('-\pi \leq {\itt} \leq \pi') ylabel('sin(t)') title('Graficul functiei sinus') text(1,-1/3,'{\itFunctia sinus}')

73

Page 74: MATLAB IN INGINERIE - tmt.ugal.ro

4.10. Salvarea figurilor Pentru a salva o figura, selectaţi Save din meniul File. Pentru a o salva folosind un format grafic, cum ar fi TIFF, pentru utilizare cu alte aplicaţii, selectaţi Export din meniul File. Puteţi deasemenea salva figuri de la linia de comanda utilizând comanda saveas. De pilda tastaţi: saveas(figure(1),'figure.tiff') MATLAB a salvat figura figure(1) in fişierul figure.tiff. Pentru verificarea existentei fişierului tastaţi dir. Figura astfel salvata poate fi inserata de pilda intr-un document sau utilizata in alta aplicatie.

4.11. Editarea graficelor MATLAB permite modificarea graficelor, setarea scalarii axelor, inclusiv marcajul axelor, culorile stilul liniilor pentru distingerea curbelor intr-un grafic. Uneori este posibil sa doriţi modificarea formatului implicit sa adaugati etichete, titluri, legende si alte notaţii. MATLAB permite doua cai de editarea a graficelor: • Folosind mouse-ul pentru a selecta si edita obiectele in mod interactiv, respectiv • Folosind funcţiile MATLAB la linia de comanda sau intr-un fişier M-file 4.11.1. Editarea interactiva a graficelor. Puteţi edita interactiv graficele in fereastra figure MATLAB. Astfel puteţi selecta obiectul sau obiectele grafice pe care doriţi sa le modificaţi prin dublu-clic. Aceasta comanda lansează Property Editor, care permite acces la proprietatile obiectului respectiv.

74

Page 75: MATLAB IN INGINERIE - tmt.ugal.ro

Proprietatile obiectelor grafice pot fi modificate din Property Editor. De pilda, folosind Property Editor, puteţi modifica grosimea unei linii, puteţi adăuga titluri si etichete axelor, adăuga lumini, etc.

75

Page 76: MATLAB IN INGINERIE - tmt.ugal.ro

Puteţi lansa Property Editor prin dublu-clic pe un obiect grafic, cum ar fi o linie, sau prin clic-dreapta pe un obiect si selectând Properties din meniul contextual. Puteţi deasemenea lansa Property Editor selectând fie Figure Properties, Axes Properties, sau Current Object Properties din meniul Edit al ferestrei figura. Aceste opţiuni permit automat accesarea editorului grafic. O data lansat Property Editor, pastrati-l deschis pe toata durata sesiunii de editare întrucât acesta permite acces la toate obiectele grafice. Daca clicati pe un alt obiect grafic, Property Editor afiseaza setul de proprietati asociate cu acel tip de obiect. 4.11.2. Editarea graficelor folosind funcţiile MATLAB. Daca preferaţi sa lucraţi la linia de comanda MATLAB sau daca doriţi sa creaţi un fişier M-file, puteţi folosi comenzi MATLAB pentru a edita graficele pe care le creaţi. Folosind sistemul MATLAB Handle Graphics, puteţi folosi comenzile de schimbare a proprietatilor obiectelor intr-un grafic.

4.12. Grafice de tip suprafaţa MATLAB defineşte o suprafaţa prin coordonata z a punctelor situate pe un grid in planul x-y, folosind linii drepte pentru conectarea punctelor alăturate. Funcţiile grafice mesh si surf afiseaza suprafeţe in trei dimensiuni. Funcţia mesh generează suprafeţe de tip plasa colorând doar liniile ce conectează punctele definite. Funcţia surf afiseaza atât liniile de legătura cat si fetele suprafeţei colorate. 4.12.1. Vizualizarea funcţiilor de doua variabile. Pentru a afişa o funcţie de doua variabile, z = f(x,y) trebuiesc urmaţi paşii de mai jos: • Generaţi matricele X si Y constând din rânduri si coloane, pe domeniul funcţiei. • Folosiţi X si Y pentru a evalua si a trasa funcţia. Funcţia meshgrid transforma domeniul specificat printr-un singur vector sau doi vectori x si y in matrice X si Y pentru evaluarea funcţiilor de doua variabile. Rândurile lui X sunt copii ale vectorului x si coloanele lui Y sunt copii ale vectorului y. Pentru a trasa graficul bi-dimensional al funcţiei sinc=sin(r)/r, unde r este distanta fata de originea care este in centrul matricei, tastaţi comenzile de mai jos. Prin adăugarea lui eps (cel mai mic număr MATLAB in virgula mobila) se evita nedeterminarea 0/0 in origine. [X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; mesh(X,Y,Z)

76

Page 77: MATLAB IN INGINERIE - tmt.ugal.ro

O alta forma de afişare a graficului funcţiei sinc consta in folosirea comenzii surf. De aceasta data culoarea fetelor este determinata de valorile lui Z si de colormap. Tastaţi comenzile de mai jos. surf(X,Y,Z) colormap hsv colorbar

Comanda colorbar afiseaza legenda de culori a graficului. Uneori este utila aşa numita tehnica de luminare a unui obiect după o anumita direcţie. Aceasta tehnica poate face ca reprezentarea grafica a suprafeţei sa fie mai clara. Luminarea

77

Page 78: MATLAB IN INGINERIE - tmt.ugal.ro

poate fi folosita deasemenea pentru a face mai realista o reprezentare tri-dimensionala. In exemplul ce urmează se foloseşte aceeaşi funcţie sinc ca mai sus dar culoarea suprafeţei este de aceasta data roşie. Tastaţi comenzile de mai jos. surf(X,Y,Z,'FaceColor','red','EdgeColor','none'); camlight left; lighting phong view(-15,40)

Comanda view modifica poziţia din care este privit graficul. Incercati sa modificaţi parametrii funcţiei view. De pilda tastaţi view(-25,80).

4.13. Tipărirea graficelor Puteţi tipări un grafic MATLAB la o imprimanta conectata la calculator sau puteţi exporta figura intr-unul din formatele grafice standard suportate de MATLAB. Exista doua cai de tipărire a figurilor: • Folosind opţiunea Print din meniul File • Folosind comanda print Comanda print permite mai multa flexibilitate. De pilda, instrucţiunea de mai jos salvează conţinutul ferestrei figura curenta ca fişier TIFF cu numele figura.tiff cu rezoluţie de 200 dpi. print -dtiff -r200 figura.tiff Daca tastaţi print la linia de comanda, MATLAB imprima figura curenta la imprimanta activa.

78

Page 79: MATLAB IN INGINERIE - tmt.ugal.ro

5. Elemente de programare MATLAB MATLAB lucreaza fie in modul linie de comanda, caz in care fiecare linie este prelucrata imediat si rezultatele sunt afisate, fie utilizand programe scrise in fisiere. Fisierele care contin instructiuni MATLAB se numesc fisiere M sau M-files, intrucat au extensia .m. Un fisier M poate fi de doua tipuri, script sau functie. Ambele tipuri de fisiere sunt scrise in format ASCII, iar algoritmul implementat poate fi urmarit si modificat cu usurinta daca se cunosc conventiile si sintaxa limbajului de programare MATLAB. Aceste tipuri de fisiere M permit crearea unor noi functii care le pot completa pe cele existente. Astfel MATLAB poate fi extins, permitand abordarea anumitor aplicatii specifice din stiinta si inginerie.

5.1. Fisierele script Fisierele script sunt fisiere externe de tip text care contin secvente de comenzi MATLAB. Prin apelarea numelui fisierului, se executa secventele de comenzi MATLAB continute in fisier. Dupa executia completa a unui fisier script variabilele cu care acesta a operat raman in workspace. Aceste fisiere nu permit integrarea in programe mari, realizate pe principiul modularizarii. Fisierele script pot fi folosite la rezolvarea unor probleme care necesita un numar relativ mare de instructiuni a caror lansare la linia de comanda ar deveni greoaie. TEMA15: Sa se scrie intructiunile de mai jos in fisierul script sistem.m. Sa se salveze fisierul in directorul curent si sa se lanseze in executie programul tastand la linia de comanda sistem. % Program de rezolvare a unui sistem de ecuatii de tipul A*x=b => x=A-1*b clear % Sterge toate variabilele din workspace clc % Sterge ecranul Command Window n=1000; % Defineste numarul de necunoscute A = rand(n,n); % Creaza o matrice A de numere aleatoare b = rand(n,1); % Creaza un vector coloana b de numere aleatoare tic, % Porneste cronometrul x1 = inv(A)*b; % Rezolva sistemul toc % Opreste cronometru tic, x2 = A\b; toc % Rezolva sistemul si cronometreaza timpul de calcul Evaluati diferentele intre solutiile x1 si x2 calculate pe cele doua cai, folosind comanda sum(abs(x1-x2)). Functia abs calculeaza modulul elementelor unei matrici. Sunt diferente intre cele doua solutii ? Care solutie este calculata mai rapid ?

5.2. Fisierele functie In cazul in care prima linie a unui fisier M contine cuvantul cheie function fisierul respectiv intra in categoria fisierelor de tip functie. Un fisier de tip functie difera de un fisier de tip script prin faptul ca accepta argumente de intrare. Astfel, la terminarea executiei unei

79

Page 80: MATLAB IN INGINERIE - tmt.ugal.ro

functii, in memoria calculatorului nu raman decat variabilele de iesire ale functiei respective. Forma generala a primei linii a unui fisier functie este: function [par_iesire1, par_iesire2 ... ] = nume_functie(par_intrare1, par_intrare2 ... ) unde : • function reprezinta un cuvant cheie obligatoriu care declara ca fisierul este de tip functie • nume_functie reprezinta numele functiei, adica numele sub care este salvat fisierul, insa

fara extensie. Numele functiei nu poate fi identic cu cel al unui fisier M pre-existent. • par_iesire1, par_iesire2 reprezinta parametri de iesire care trebuiesc separati prin

virgula si cuprinsi intre paranteze drepte. Daca functia nu are parametri de iesire parantezele drepte si semnul egal nu mai au sens.

• par_intrare1, par_intrare2 reprezinta parametri de intrare care trebuiesc separati prin virgula si cuprinsi intre paranteze rotunde. Daca functia nu are parametri de intrare parantezele rotunde nu mai au sens.

Fisierele functie pot fi adaugate ca functii noi in structura MATLAB. Instructiunile si comenzile utilizate de noua functie sunt inregistrate intr-un fisier cu extensia .m. De pilda fisierul de tip functie avand numele medie.m calculeaza media aritmetica a elementelor unui vector si are sintaxa de mai jos: function m = medie (x) n = length (x) m = sum (x)/n y = [’Media numerelor este:’ num2str(m)]; disp(y) Aceste instructiuni trebuiesc salvate in fisierul cu numele medie.m

TEMA 16: Creati fisierul functie medie.m continand instructiunile de mai sus si salvati-l in directorul curent. Lansati functia pentru calculul mediei aritmetice a vectorului V=1:2.54:50.

TEMA 17: Creati fisierul functie factorial.m care are ca parametru de intrare un numar natural n si calculeaza n!. In cadrul fisierului functie folositi comanda round pentru a rotunji eventuale numere diferite de intreg introduse de la tastatura. Lansati functia pentru calculul lui 10! si 20!. Folositi functia prod, adica prod(1:10) si prod(1:20).

Din punct de vedere al programatorului, MATLAB transmite prin valoare doar argumentele functiilor pe care acestea le modifica. Daca o functie nu altereaza un argument ci il utilizeaza doar intr-un calcul, MATLAB transmite argumentul prin referinta pentru a optimiza folosirea memoriei. Fiecare functie MATLAB are alocata o anumita cantitate de memorie diferita de workspace-ul de baza MATLAB. Aceasta memorie reprezinta workspace-ul functiei respective. In cursul rularii MATLAB-ului, singurele variabile pe care le puteti accesa sunt cele din workspace-ul curent, fie ca acesta este workspace-ul de baza sau workspace-ul unei functii. Variabilele pe care le transmiteti unei functii trebuie sa apartina workspace-ului curent si

80

Page 81: MATLAB IN INGINERIE - tmt.ugal.ro

functia intoarce argumente de iesire spre workspace-ul curent. Puteti totusi sa definiti variabile ca variabile globale, acestea putand fi accesate din mai multe workspace-uri.

5.3. Includerea comentariilor si a help-ului intr-un program Introducerea unui comentariu intr-un program se realizeaza prin adaugarea caracterului procent (%) plasat la inceputul liniei. Daca semnul procent (%) apare pe prima pozitie intr-o linie, aceasta va fi omisa de compilator, iar daca apare in oricare alta pozitie intr-o linie de program, partea de program care urmeaza dupa acest caracter va fi omisa. Intr-un program un comentariu poate aparea in oricare pozitie insa este recomandata prezenta unui comentariu dupa prima linie care declara o functie. In acest caz, comentariul care apare imediat dupa linia de declarare a functiei, constituie help-ul fisierului respectiv. Daca se apeleaza : help nume_functie se afiseaza liniile care incep cu semnul procent si sunt situate intre prima linie dupa declararea functiei si prima linie libera sau prima instructiune ce urmeaza acestui grup compact de linii. Prin urmare pentru a atasa un help unui program MATLAB se scriu liniile de program incepand cu semnul procent (%) si sunt situate intre prima linie dupa declararea functiei si prima linie libera sau prima instructiune ce urmeaza acestui grup compact de linii. Dupa ultima linie a help-ului se lasa o linie libera sau se trece direct la o instructiune MATLAB, ca in exemplul de mai jos: Function nume_functie % Aceasta linie lipseste la fisierele script % Prima linie de help % A doua linie de help % ... % Ultima linie de help Linie libera (aceasta este obligatorie daca urmeaza un alt comentariu care nu este de tip help) Instructiuni MATLAB Daca un program MATLAB salvat intr-un fisier M care are structura de mai sus este apelat ca mai jos: help nume_functie MATLAB va afisa mesajul: % Prima linie de help % A doua linie de help % ... % Ultima linie de help

TEMA 18: Adaugati doua linii de help la fisierul de tip functie factorial.m, care sa explice destinatia functiei respective, dupa structura de mai sus si executati comanda help factorial pentru a vizualiza rezultatul MATLAB.

81

Page 82: MATLAB IN INGINERIE - tmt.ugal.ro

5.4. Crearea, editarea si depanarea fisierelor M Exista mai multe metode de creare, editare si depanare a fisierelor M, dupa cum este prezentat in tabelul de mai jos. Functie Metoda

Folosind MATLAB Editor Folosind MATLAB Editor de sine statator fara a lansa MATLAB

Crearea si editarea fisierelor M

Folosind oricare editor de text, cum ar fi Notepad, WordPad, etc. Folosind instructiunile generale de depanare Folosind MATLAB Debugger

Depanarea fisierelor M

Folosind MATALB Debugging Functions 5.4.1. Crearea si editarea fisierelor M folosind MATLAB Editor. Crearea si editarea fisierelor M poate fi efectuata eficient folosind MATLAB Editor. MATLAB Editor pune la dispozitia utilizatorului o interfata grafica performanta de editare clasica de text (vezi 1.4.2.8.). Aceasta aplicatie poate fi folosita atat in cadrul MATLAB-ului, cat si ca o aplicatie de sine statatoare fara a necesita neaparat lansarea pachetului de programe MATLAB. In afara functiilor de editare obisnuite, MATLAB Editor prezinta si functii specifice cum ar fi: Functie Mod de lucru Transformarea unor linii de cod in comentarii sau a unor comentarii in linii de cod prin adaugarea sau eliminarea simbolului %

Se selecteaza liniile respective in MATLAB Editor si apoi fie se selecteaza meniul Text -> Comment/Uncomment fie se apasa Ctrl+R/Ctrl+T fie se selecteaza Comment/Uncomment din meniul contextual

Alinierea inteligenta a instructiunilor

Se selecteaza liniile respective in MATLAB Editor si apoi fie se selecteaza meniul Text -> Smart Indent fie se apasa Ctrl+I fie se selecteaza Smart Indent din meniul contextual

Identificarea parantezelor si acoladelor

Se pozitioneaza cursorul intre doua paranteze sau acolade ( ), [ ], { }, si apoi fie se selecteaza meniul Text -> Balance Delimiters, fie se apasa Ctrl+B. Daca nu exista nici o pereche de paranteze delimitatoare MATLAB lanseaza un beep sonor.

Indentare Se selecteaza liniile respective in MATLAB Editor si apoi fie se selecteaza meniul Text -> Decrease Indent/ Increase Indent fie se apasa Ctrl+[/Ctrl+]

Fisierele M pot fi creeate si editate si utilizand editoare exterioare MATLAB-ului, cum ar fi Notepad, Wordpad etc. Pentru a fi considerate de catre MATLAB drept fisiere M, fisierele create cu aceste editoare trebuiesc salvate cu extensia .m. 5.4.2. Depanarea fisierelor M folosind MATLAB Debugger. Depanarea sau Debugging este procesul prin care sunt identificate si rezolvate problemele din cadrul codului dvs. MATLAB. In principiu exista doua tipuri de erori:

82

Page 83: MATLAB IN INGINERIE - tmt.ugal.ro

• Erori de sintaxa – de pilda, introducerea gresita a unui nume de functie sau omiterea unei paranteze. Cand lansati un fisier M cu o eroare de sintaxa, in mod normal MATLAB o va detecta si va afisa un mesaj de eroare in Command Window descriind eroarea si numarul liniei in fisierul M. Clicati pe portiunea subliniata a mesajului de eroare, sau pozitionati cursorul pe mesajul de eroare si apasati Ctrl+Enter. Fisierul M ce contine eroarea se deschide in Editor, cu linia eronata afisata in prim plan.

• Erori run-time – aceste erori sunt in general de algoritm. Erorile run-time sunt vizibile cand fisierul M produce rezultate neasteptate.

Identificarea erorilor de sintaxa nu este de regula dificila daca se tine cont de mesajele de eroare MATLAB. Erorile run-time sunt insa mai dificil de identificat deoarece acestea pot apare in interiorul anumitor functii. Iata cateva sfaturi pentru identificarea si inlaturarea erorilor run-time: • Stergeti simbolurile ”;” din instructiunile fisierelor M cu pricina. In urma acestei

operatiuni MATLAB va afisa rezultatelor pe ecran pe durata executiei fisierului M. • Adaugati instructiunii keyboard la fisierul M. Instructiunile keyboard opresc executia

fisierului M la un anumit punct unde acestea apar si va permit examinarea si modificarea workspace-ul local al functiei. Acest mod este indicat de un prompt special: K>> Continuarea executiei functiei se realizeaza tastand return si apasand tasta Return.

• Folositi MATLAB Debugger sau functiile debugging. Acestea sunt folositoare pentru corectarea erorilor run-time deoarece puteti accesa workspace-ul functiilor si apoi puteti examina sau schimba valorile pe care le contin. Puteti defini sau sterge puncte de intrerupere sau breakpoints, pentru oprirea executiei programului la o anumita locatie (la o anumita linie de program) in interiorul fisierelor M.

5.4.2.1. Definirea punctelor de intrerupere sau breakpoints. Definirea unor breakpoints permit oprirea executiei unei functii facand astfel posibila examinarea valorilor unor variabile la anumite locatii unde exista o posibila eroare. Puteti defini breakpoints doar in dreptul liniilor executabile din cadrul fisierelor M salvate, care se afla in directorul curent sau in directoare aflate in calea de cautare. La creerea unui nou fisier M, acesta trebuie salvat inainte de a defini breakpoints. Nu puteti defini breakpoints cat timp MATLAB este deja lansat in executia unui program. Pentru a defini un breakpoint in dreptul unei linii de program clicati pe aleea breakpoint in dreptul liniei de program respectiva. Aleea breakpoint este coloana situata in dreapta coloanei ce contine numerele liniilor. Definiti breakpoints in dreptul liniilor precedate de o liniuta ”-”. Celelalte linii, de pilda comentariile sau liniile goale, nu sunt executabile; daca incercati sa definiti un breakpoint acolo, acesta este definit in dreptul urmatoarei linii executabile. Alte metode de a defini un breakpoint constau in pozitionarea cursorului pe linie si apoi

clicati pe butonul de definire/stergere de breakpoints din toolbar, sau selectati Set/Clear Breakpoint din meniul Breakpoints sau din meniul contextual. Un punct rosu va apare pe aleea breakpoints, in dreptul liniei selectate, ca in figura de mai jos. Eliminarea punctelor de intrerupere din dreptul anumitor linii poate fi realizata plasand cursorul pe linia respectiva si fie facand apel la butonul din toolbar-ul ferestrei MATLAB Debugger fie clicand pe punctul rosu existent pe aleea breakpoint fie clicand pe Set/Clear breakpoint in meniul Breakpoints sau in meniul contextual. Punctele de intrerupere pot fi eliminate toate odata facand apel la optiunea Set/Clear Breakpoint din meniul Breakpoints.

83

Page 84: MATLAB IN INGINERIE - tmt.ugal.ro

5.4.2.2. Lansarea fisierelor M ce contin breakpoints. Dupa definirea breakpoints, lansati in executie fisierul M din Command Window sau din Editor/Debugger. Lansarea fisierului M conduce la urmatoarele: • Promptul in Command Window se transforma in K>> indicand ca MATLAB este in

mod debugger. • Executia programului este oprita la primul breakpoint. • La continuarea executiei programului linia curenta va intra in executie. 5.4.2.3. Executia pas cu pas a instructiunilor fisierului M. In mod debugger, puteti executa pas cu pas instructiunile unui fisier M, oprindu-va in punctele in care doriti sa evaluati anumite valori. In acest sens folositi butoanele de tip step din meniul Debug al ferestrei Editor/Debugger dupa cum este prezentat in tabelul de mai jos. Butonul toolbar

Optiune a meniului Debug

Descriere

Continue sau Run sau Save and Run

Continua executia fisierului M pana la sfarsit sau pana intalneste un alt breakpoint.

- Go Until Cursor Continua executia fisierului M pana la linia unde este pozitionat cursorul. Optiune care poate fi apelata si din meniul contextual.

Step Executa linia curenta o fisierului M. Step In Executa linia curenta a fisierului M si daca linia face apel

la o alta functie intra in functia respectiva. Step Out Dupa ce intra in functia respectiva executa restul functiei

sau subfunctiei, paraseste funnctia respectiva si se opreste.

Exit Debug Mode Paraseste modul Debug.

84

Page 85: MATLAB IN INGINERIE - tmt.ugal.ro

5.5. Operatori Exista trei tipuri de operatori MATLAB: operatori aritmetici, operatori relationali si operatori logici. 5.5.1. Operatori aritmetici. Operatorii aritmetici sunt folositi in calculul numeric si sunt deja prezentati anterior in capitolele 2.5. si 2.12. 5.5.2. Operatori relationali. Operatorii relationali permit compararea cantitativa a doua marimi si sunt prezentati in tabelul de mai jos. Operator Descriere < Mai mic decat <= Mai mic sau egal cu > Mai mare decat >= Mai mare sau egal cu = = Egal cu ~ = Diferit de

5.5.3. Operatori logici. Operatorii logici sunt folositi la diverse operatii logice MATLAB dupa cum este prezentat in tabelul urmator. Se considera A = [0 1 1 0 1], B = [1 1 0 0 1]. Operator Descriere Exemplu & Intoarce 1 pentru fiecare locatie de element care

este adevarata in ambii vectori A & B = [0 1 0 0 1]

| Intoarce 1 pentru fiecare locatie de element care este adevarata in unul sau in celalalt vector

A | B = [1 1 1 0 1]

~ Intoarce 0 pentru fiecare locatie de element care este adevarata si 1 pentru fiecare locatie de element care este falsa

~A = [1 0 0 1 0]

xor Intoarce 1 pentru fiecare locatie de element care este adevarata doar intr-un vector si 0 pentru toate celelalte elemente

xor(A, B) = [1 0 1 0 0]

5.6. Instructiuni de control logic Exista opt instructiuni de control logic care se folosesc in MATLAB. 5.6.1. Instructiunea if. Instructiunea if impreuna cu else si elseif, executa un grup de instructiuni in cazul in care este indeplinita o anumita conditie logica: if expresie_logica instructiuni end Daca expresie_logica este adevarata (1), MATLAB executa toate instructiunile cuprinse intre if si end. Ulterior programul continua executia cu instructiunea situata pe linia imediat dupa instructiunea end. Daca expresia logica este falsa (0), MATLAB sare peste toate

85

Page 86: MATLAB IN INGINERIE - tmt.ugal.ro

instructiunile cuprinse intre if si end si continua executia incepand cu linia plasata imediat dupa instructiunea end. De exemplu tastati urmatoarea secventa de instructiuni:

a=3; b=2; if a>b disp('a este mai mare decat b') elseif b>=a disp('b este mai mare sau egal cu a') end 5.6.2. Instructiunea switch. Instructiunea switch, impreuna cu case si otherwise, executa diferite grupuri de instructiuni in functie de valoarea anumitor conditii logice: switch expresie case valoare1 instructiuni % Executate daca expresie este valoare1 case valoare2 instructiuni % Executate daca expresie este valoare2 ... otherwise instructiuni % Executate daca expresienu ia nici o valoare amintita mai sus end

Acest bloc consta in: • Cuvantul switch urmat de o expresie de evaluat. • Un anumit numar de grupuri case. Aceste grupuri constau din cuvantul cheie case urmat

de o valoare posibila, toate pe o singura linie. Liniile urmatoare contin instructiunile ce urmeaza a fi executate pentru o valoare data a expresiei. Acestea pot fi reprezentate de orice instructiune valida MATLAB incluzand eventual un alt bloc switch. Executia unui grup case se sfarseste cand MATLAB intalneste urmatoarea instructiune case sau otherwise. Doar instructiunile corespunzand primului case sunt executate.

• Un grup optional otherwise. Acesta consta din cuvantul otherwise, urmat de instructiunile de executat daca valoarea expresiei nu se incadreaza in nici unul din grupurile case anterioare. Executia grupului otherwise se sfarseste cu instructiunea end.

• Instructiune end. Tastati de pilda urmatoarea secventa de instructiuni: var = 9 switch var case 1 disp('1') case {2,3,4} disp('2 sau 3 sau 4') case 5 disp('5') otherwise disp('altceva') end

86

Page 87: MATLAB IN INGINERIE - tmt.ugal.ro

5.6.3. Instructiunea while. Instructiunea while executa un grup de instructiuni de un numar indefinit de ori, avand la baza anumite conditii logice. Sintaxa instructiunii while este: while expresie_logica instructiuni end Daca expresie_logica este adevarata sunt executate instructiunile cuprinse intre while si end. Tastati spre exemplificare comenzile de mai jos: n = 1; while prod(1:n) < 1e100 n = n + 1 end 5.6.4. Instructiunea for. Instructiunea for executa un grup de instructiuni de un anumit numar impus de ori. Sintaxa instructiunii este: for index = start:increment:end instructiuni end Incrementul implicit este 1. Puteti specifica orice increment, inclusiv unul negativ. Pentru indici pozitivi, executia se termina cand valoarea indexului depaseste valoarea end; pentru increment negativ, bucla se incheie cand indexul devine mai mic decat valoarea end. Tastati secventa de instructiuni de mai jos: m=3; n=5; for i = 1:m for j = 1:n A(i,j) = 1/(i + j - 1) end end 5.6.5. Instructiunea continue. Instructiunea continue cedeaza controlul iteratiei urmatoare in cazul unei bucle for sau while, neglijand orice alta instructiune existenta in corpul buclei, ca in exemplul de mai jos. m=3; n=5; for i = 1:m for j = 1:n if ( i>2) continue end A(i, j) = 1/(i + j - 1) end end

87

Page 88: MATLAB IN INGINERIE - tmt.ugal.ro

5.6.6. Instructiunea break. Instructiunea break termina executia unei bucle for sau while. clc; clear all; m=30; for i = 1:m A(i) =floor(10*rand(1)) if (A(i) ==0) break

end end 5.6.7. Instructiunile try...catch si return. Instructiunea try...catch este folosita in general la detectarea erorilor in cursul executiei, iar instructiunea return permite intoarcerea la programul sau functia invocatoare. TEMA 19: Folosind instructiunile de control logic, creeati in directorul curent fisierul functie ec2.m care are ca parametrii de intrare trei numere (a, b, c) si care calculeaza radacinile ecuatiei de ordinul ax2+ bx + c =0. In plus functia trebuie sa traseze graficul functiei f= ax2+ bx + c functie de x, punand in evidenta radacinile si maximul sau minimul functiei. Lansati functia pentru diferite valori ale parametrilor de intrare a, b, c si verificati corectitudinea operatiilor.

TEMA 20: Folosind instructiunile de control logic, creeati in directorul curent fisierul functie fx.m care are ca parametru de intrare un numar x si care calculeaza valoarea functiei f(x) = x-10, daca -100<x<100, 0.45*x+900, daca 100<= x<=200, Trasati apoi graficul functiei pentru -100<x<200

TEMA 21: Folosind instructiunile de control logic, creeati in directorul curent fisierul script care sa calculeze primii n termeni (n sa poata fi modificat de utilizator) ai sirului Fibonacci:Fn = Fn-1 + Fn-2, unde F0 = F1 = 1. Pentru acelasi n programul sa calculeze raportul Fn/ Fn-1. Este acesta egal cu numarul de aur (1 + sqrt(5))/2 ? Trasati grafic variatia functie de n a termenilor Fn si a raportului Fn/ Fn-1 pentru 0<=n<=50.

5.7. Comenzi de manipulare a datei si orei MATLAB contine o multitudine de comenzi de manipulare a datei si orei. Iata cateva dintre aceste comenzi ce au o utilitate practica imediata.

88

Page 89: MATLAB IN INGINERIE - tmt.ugal.ro

Functie Descriere Clock Data curenta si ora ca vector de tip data Date Data curenta ca sir de caractere de tip data Calendar Afiseaza calendarul lunii curente Cputime Afiseaza CPU time in secunde de cand MATLAB a

fost lansat Etime Afiseaza timpul scurs in secunde Tic,toc Afiseaza timpul scurs intre cele doua comenzi

5.8. Interactiunea programelor MATLAB cu utilizatorul Exista trei modalitati de interactiune a unui program cu utilizatorul pe durata executiei unui program MATLAB: • Obtinerea unui raspuns de la tastatura. • Definirea unei pauze pana cand utilizatorul apasa o tasta. • Constructia unei interfete grafice cu utilizatorul. 5.8.1. Obtinerea unui raspuns de la tastatura. Functia input afiseaza un prompt si asteapta un raspuns al utilizatorului. Sintaxa functiei este n = input('prompt_string') Functia afiseaza sirul de caractere prompt_string, asteapta raspunsul de la tastatura, si apoi intoarce valoarea introdusa de la tastatura. Daca utilizatorul introduce o expresie, functia o evalueaza si intoarce valoarea acesteia. Aceasta functie este folositoare pentru implementarea aplicatiilor cu meniu. Functia input poate intoarce deasemenea un raspuns al utilizatorului de tip string. Pentru un raspuns de tip string, adaugati 's' ca argument al functiei: Adresa = input('Introduceti adresa: ','s'); TEMA 22: Creeati un program care cere interactiv utilizatorului sa introduca de la tastatura valorile a trei parametri de intrare (a, b, c) si care in continuare apeleaza functia ec2.m ce calculeaza radacinile ecuatiei de ordinul ax2+ bx + c =0. Trasati apoi graficul functiei f= ax2+ bx + c functie de x, punand in evidenta radacinile si maximul sau minimul functiei.

5.8.2. Definirea unei pauze. Anmite fisiere M necesita definirea unor pauze intre executiile anumitor pasi. Comanda pause, fara nici un argument, opreste executia pana cand utilizatorul apasa o tasta. Pentru a face o pauza de n secunde, folositi functia sub forma pause(n). 5.8.3. Constructia unei interfete grafice cu utilizatorul folosind GUI (Graphical User Interfaces). Pentru a construi o interfata grafica cu utilizatorul se poate face apel la facilitatile MATLAB dezvoltate in aceste sens. In cele ce urmeaza vom exemplifica

89

Page 90: MATLAB IN INGINERIE - tmt.ugal.ro

constructia unei interfete grafice simple de tip GUI folosind MATLAB GUIDE (Graphical User Interfaces Development Environment). Interfata grafica primeste ca parametrii de intrare doua frecvente f1 si f2 si traseaza graficul functiei sin(2*pi*f1*timp)+ f1/f2*sin(2*pi*f2*timp) analizand spectrul frecventelor continute in acest semnal. Pentur crearea interfetei grafice vom face apel la MATLAB GUIDE tastand la linia de comanda in Command Window comanda guide. In cutia de dialog care tocmai a aparut selectati Blank GUI (Default) in campul GUIDE Template.

Dupa ce ati efectuat selectia clicati pe butonul OK al casutei de dialog. In urma acestei actiuni va apare o fereastra ce reprezinta mediul de dezvoltare MATLAB GUIDE avand infatisarea ca in figura de mai jos.

90

Page 91: MATLAB IN INGINERIE - tmt.ugal.ro

In zona din stanga ecranului sunt dispuse obiectele predefinite disponibile in MATLAB. Adaugati pe foaia de lucru doua obiecte de tip Axes, prin dragging. In continuare adaugati doua obiecte de tip Edit Text si cinci obiecte de tip Static Text. Apoi adaugati si un obiect de tip Push Button. Dupa ce ati plasat pe foaie aceste obiecte acestea trebuie sa arate cam ca in figura de mai jos.

Acum puteti salva interfata grafica cu numele Proc_sem printr-un clic pe meniul File + Save As. In urma operatiunii de salvare, MATLAB creeaza doua fisiere Proc_sem.fig si Proc_sem.m cel de-al doilea fiind in mod automat deschis, ca in figura de mai jos.

91

Page 92: MATLAB IN INGINERIE - tmt.ugal.ro

Acest ultim fisier contine codul specific interfetei grafice unde trebuiesc adaugate instructiunile de executie a anumitor comenzi de interactiune a utilizatorului cu programul. Ne vom intoarce in MATLAB GUIDE in care se vor redimensiona si rearanja obiectele adaugate pe foaie, folosind uneltele MATLAB, asa incat acestea sa arate ca in figura de mai jos.

In continuare se vor schimba proprietatile obiectelor plasate pe foaia MATLAB GUIDE. Pentru aceasta executati un dublu clic pe obiectul axes1 deschizand astfel fereastra Property Inspector specifica acestui obiect grafic, ca in figura de mai jos.

Modificati proprietatea Tag a obiectului schimband-o din axes1 in frec si apoi inchideti fereastra Property Inspector. In mod similar se modifica proprietatea Tag a obiectului axes2 schimband-o in timp.

92

Page 93: MATLAB IN INGINERIE - tmt.ugal.ro

In mod identic se modifica proprietatea String a obiectului Static Text aflat sub obiectul frec aceasta fiind schimbata in Frecventa [Hz]. Apoi se modifica proprietatea String a obiectului Static Text aflat sub obiectul timp aceasta fiind schimbata in Timp [s]. Apoi se modifica proprietatile obiectului Static Text aflat in zona superioara a ferestrei. Astfel proprietatea String este schimbata in sin(2*pi*f1*timp)+f1/f2*sin(2*pi*f2*timp), iar proprietatea Font Size este schimbata in 11. In continuare se modifica proprietatea String a obiectului Static Text aflat deasupra primei casute de tip Edit Text aceasta fiind schimbata in Frecventa f1 [Hz]:. In mod similar se modifica proprietatea String a obiectului Static Text aflat deasupra celei de-a doua casute de tip Edit Text aceasta fiind schimbata in Frecventa f2 [Hz]:. Acum urmeaza modificarea proprietatilor casutelor tip Edit Text. Mai intai se vor schimba proprietatile casutei Edit Text superioare: proprietatea String devine 50 iar proprietatea Tag devine in_frec1. In continuare se vor schimba proprietatile casutei Edit Text inferioare: proprietatea String devine 150 iar proprietatea Tag devine in_frec2. In continuare se modifica proprietatea String a obiectului Push Button aceasta devenind Plot. In final prin dublu clic pe zona dintre obiectele grafice se modifica proprietatea Name a ferestrei globale aceasta devenind Procesare de semnal. Dupa ce redimensionati corespunzator obiectele interfetei grafice aceasta trebuie sa arate ca in figura de mai jos.

In cele ce urmeaza trebuie adaugat codul necesar efectuarii operatiei propriu-zise de analiza de semnal si de trasare a graficului functiei superpozitie. In acest sens selectati butonul Plot si apoi meniul View + Component Callbacks + Callback. Aceasta comanda va deschide fisierul cod de tip M in dreptul functiei pushbutton1_Callback.

93

Page 94: MATLAB IN INGINERIE - tmt.ugal.ro

function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Instructiunile de mai jos trebuiesc introduse de catre utilizator in continuare la corpul functiei: f1=str2double(get(handles.in_frec1,'String')); f2=str2double(get(handles.in_frec2,'String')); t=0:0.001:0.25; x=sin(2*pi*f1.*t)+f1/f2*sin(2*pi*f2.*t); y = fft(x,512); m = y.*conj(y)/512; f = 1000*(0:256)/512; % Deseneaza frecventa axes(handles.frec); plot(f,m(1:257)); grid on; % Deseneaza timp axes(handles.timp); plot(t,x); grid on; In continuare se salveaza modificarile efectuate in fisierul M si de la linia de comanda a ferestrei Command Window se tasteaza Proc_sem. Aceasta comanda va lansa interfata grafica creata si aceasta va aparea sub forma:

94

Page 95: MATLAB IN INGINERIE - tmt.ugal.ro

In aceasta interfata grafica presupunand ca se aleg valorile frecventelor f1=50 Hz si f2=150 Hz se poate trasa grafic semnalul de tip superpozitie, respectiv spectrul de frecvente ce intra in componenta semnalului rezultant, apasand pe butonul Plot. Rezultatul este prezentat in figura de mai jos.

TEMA 23: Creeati o interfata grafica folosind MATLAB GUIDE care sa contina:

• un obiect de tip Axes, pentru reprezentari grafice • un obiect de tip Static Text ce defineste titlul graficului • un buton de tip Push Button pentru executia graficelor

Apasand pe butonul tip Push Button sa se reprezinte grafic functia peaks folosind in mod aleator unul din seturile de instructiuni de mai jos: 1) [X,Y,Z] = peaks; mesh(X,Y,Z); 2) [X,Y,Z] = peaks; surf(X,Y,Z); 3) [X,Y,Z] = peaks; surfc(X,Y,Z); 4) [X,Y,Z] = peaks; surfl(X,Y,Z); 5) [X,Y,Z] = peaks; pcolor(X,Y,Z);

95

Page 96: MATLAB IN INGINERIE - tmt.ugal.ro

5.9. Tipuri de variabile MATLAB contine trei tipuri de variabile: locale, globale si persistente. Regulile si recomandarile privind folosirea variabilelor in programarea MATLAB de tip linie de comanda raman valabile si in cazul programarii utilizand fisiere de tip M. Astfel trebuiesc avute in vedere urmatoarele aspecte: • Nu este necesara declararea variabilelor folosite in fisiere M, in afara de cazul cand

acestea trebuiesc declarate ca variabile de tip global sau persistent. • Inainte de a asigna o variabila alteia, trebuie sa va asigurati ca variabila din dreapta

asignarii exista si are o anumita valoare. • Orice operatie de alocare a unei valori unei variabile conduce la crearea variabilei daca

aceasta nu exista, sau in cazul in care aceasta deja exista, alocarea conduce la rescrierea unei noi valori in respectiva variabila.

• Verificarea numelui unei variabile poate fi efectuata folosind functia isvarname pentru asigurare ca numele este valid inainte de a fi folosit. Functia isvarname intoarce 1 daca numele este valid, si 0 in caz contrar.

• La definirea unei variabile asigurati-va ca numele respectivei variabile nu este deja afectat unei functii.

5.9.1. Variabile locale. Fiecare functie MATLAB are propriile sale variabile locale. Acestea sunt separate de acelea ale altor functii, si de acelea ale workspace-ului de baza al MATLAB-ului. Variabilele definite intr-o functie nu raman in memorie de la un apel la altul al unei functii, decat daca sunt definite ca variabile globale sau persistente. Fisierele script, pe de o parte, nu au workspace separat. Acestea stocheaza variabilele intr-un workspace care este partajat cu apelatorul scriptului. Cand sunt apelate de la linia de comanda, acestea partajeaza workspace-ul de baza. Cand sunt apelate dintr-o functie, acestea partajeaza workspace-ul acelei functii. 5.9.2. Variabile globale. Daca o variabila de tip global este declarata in acelasi timp in mai multe functii si chiar in workspace-ul de baza al MATLAB-ului, atunci toate acestea partajeaza o singura copie a acelei variabile. Orice alocare a acelei variabile in oricare dintre functii este vizibila pentru celelalte functii care au declarat acea variabila drept globala. Fiecare functie MATLAB care foloseste variabile globale poate avea propriile sale variabile locale. Inainte ca o functie sa poata folosi o variabila globala trebuie mai intai sa declare aceasta variabila globala. Declaratiile de variabile globale trebuiesc plasate la inceputul functiei. De pilda pentru a declara variabila val ca variabila globala se foloseste instructiunea: global val Daca fisierul M contine deasemenea subfunctii, atunci fiecare subfunctie care necesita acces la variabila globala trebuie sa declare mai intai variabila drept globala. Pentru a accesa variabila de la linia de comanda MATLAB, trebuie sa o declarati mai intai ca variabila globala la linia de comanda. Se recomanda ca numele de variabile globale MATLAB sa fie in general mai lungi si mai sugestive decat numele variabilelor locale, si sa contina litere mari. Aceste remarci nu sunt obligatorii, ci sunt recomandari pentru a creste claritatea codului MATLAB, si pentru a reduce sansa de redefinire accidentala a unei variabile globale.

96

Page 97: MATLAB IN INGINERIE - tmt.ugal.ro

Pentru a vizualiza doar variabilele declarate globale, folositi functiile who sau whos cu specificatia, global. Pentru exemplificare tastati comenzile de mai jos: global MAXLUNG MAXLAT MAXLUNG = 36; MAXLAT= 78; lung = 5; lat = 21; whos global Name Size Bytes Class MAXLUNG 1x1 8 double array (global) MAXLAT 1x1 8 double array (global) Grand total is 2 elements using 16 bytes Exista cateva sugestii in ceea ce priveste folosirea variabilelor globale. In primul rand trebuie stiut faptul ca exista un anumit risc asociat cu folosirea variabilelor globale si din aceasta cauza se recomanda sa le utilizati fara abuz, si anume atunci cand este necesar. Ati putea de exemplu, fara sa stiti, sa dati in interiorul unei functii, un nume unei variabile globale care este deja folosit pentru o variabila globala in alta functie. Cand lansati aplicatia, o functie poate suprascrie neintentionat variabila folosita de cealalta functie. Acest tip de eroare este uneori dificil de depistat. O alta problema apare cand doriti sa schimbati numele variabilei. Pentru a face o schimbare fara a introduce o eroare in aplicatie, trebuie sa gasiti fiecare aparitie al acelui nume in codul dvs. (si/sau in codul altora daca partajati functii create de o echipa de programatori). 5.9.3. Variabile persistente. Caracteristicile variabilelor persistente sunt urmatoarele: • Pot fi utilizate doar in functii. • Alte functii nu le pot accesa. • MATLAB nu le sterge din memorie cand functia se incheie, asa incat valoarea acestora

este retinuta de la un apel al functiei la altul. • Daca stergeti functia sau editati fisierul M al acelei functii, atunnci MATLAB sterge

toate variabilele persistente folosite in acea functie. Variabilele persistente trebuiesc declarate ca persistent inainte sa le puteti folosi intr-o functie. Este in general foarte bine sa plasati declaratiile de variabile persistente la inceputul functiilor. De pilda pentru a declara variabila SUMA_X ca persistenta tastati: persistent SUM_X Puteti folosi functia mlock pentru a pastra un fisier M nesters din memorie, astfel pastrand nesterse variabilele persistente din fisierul M corespunzator. TEMA 24: Sa se creeze in directorul curent fisierul de tip functie functie.m care are ca parametrii de intrare 5 numele reale, si anume (a, b, x0, xmin, xmax), si care traseaza graficul functiei in intervalul [xmin, xmax]. Daca unii dintre acesti parametri de

20 )x--b(xea f ⋅=

intrare nu sunt furnizati, functia trebuie sa ia valorile predefinite ale acestor parametri si anume: a=1, b=1, x0=0, xmin=-5, xmax=5.

97

Page 98: MATLAB IN INGINERIE - tmt.ugal.ro

5.10. Operatii cu siruri de caractere 5.10.1. Evaluarea sirurilor de caractere. Evaluarea sirurilor de caractere reprezinta o facilitate a limbajului de programare MATLAB care-i confera acestuia putere si flexibilitate, permitandu-va executarea operatiilor de concatenare a sirurilor de caractere. 5.10.1.1. Functia eval. Functia eval evalueaza un sir de caractere care contine expresii, instructiuni sau apel de functii MATLAB. Sintaxa functiei eval in forma sa cea mai simpla este urmatoarea: eval('string') De pilda, in codul de mai jos este utilizata functia eval pentru evaluarea unei expresii in vederea generarii unei matrice de ordin n. t = '1/(i*j-1)'; for i = 1:n for j = 1:n a(i,j) = eval(t); end end Iata si un exemplu in care functia eval este folosita pentru evaluarea unei instructiuni: eval('t = clock'); Puteti concatena sisruri de caractere pentru a creea expresii complete pentru a fi evaluate utilizand functia eval. De pilda codul de mai jos permite creearea cu ajutorul functiei eval a 10 variabile numite P1, P2, ...P10, si setarea la fiecare dintre varaibile o valoare diferita. for i=1:10 eval(['P',int2str(i),'= i.^2']) end 5.10.1.2. Functia feval. Functia feval difera de eval prin faptul ca aceasta se aplica unei functii si nu unei expresii MATLAB. Functia executata este specificata in primul argument. Spre exemplificare tastati comenzile de mai jos in care se cere utilizatorului fun = [@sin; @cos; @log]; k = input('Alegeti indexul functiei [1 pentru sin, 2 pentru cos, 3 pentru log]: '); x = input('Introduceti valoarea: '); feval(fun(k),x) 5.10.2. Functii MATLAB cu siruri de caractere. MATLAB pune la dispozitia utilizatorului o biblioteca de functii cu siruri de caractere. Cateva dintre acestea sunt prezentate in tabelul de mai jos.

98

Page 99: MATLAB IN INGINERIE - tmt.ugal.ro

Categorie Functie Descriere Blanks Siruri de blancuri Char Creeza vectori de caractere

Generala

Deblank Sterge blancurile de la sfarsitul sirurilor de caractere Findstr Cauta un sir de caractere in altul Lower Converteste un sir de caractere in litere mici Strcat Concateneaza siruri de caractere Strcmp Compara siruri de caractere Strcmpi Compara siruri de caractere neglijand faptul ca literele

sunt mici sau mari Strjust Aliniaza sirurile de caractere Strmatch Cauta un sir de caractere in altele Strncmp Compara primele n caractere ale unor siruri de caractere Strncmpi Compara primele n caractere ale unor siruri de caractere

neglijand faptul ca literele sunt mici sau mari Strrep Inlocuieste un sir de caractere cu altul Strvcat Concateneaza siruri de caractere vertical

Operatii cu siruri de caractere (stringuri)

Upper Converteste siruri de caractere in litere mari Ischar Intoarce adevarat in cazul sirurilor de caractere Isletter Intoarce adevarat in cazul literelor alfabetului

Teste pe siruri de caractere

Isspace Intoarce adevarat in cazul blancurilor Double Converteste sirurile de caractere in format numeric Int2str Converteste intregi in sirurile de caractere Mat2str Converteste matrici in sirurile de caractere Num2str Converteste numere in sirurile de caractere Sprintf Scrie date formatate in sirurile de caractere Str2double Converteste sirurile de caractere in numere dubla precizie

Conversie de siruri de caractere in numere

Str2num Converteste sirurile de caractere in numere TEMA 25: Sa se creeze in directorul curent un fisier script cauta.m care sa ceara interactiv introducerea a doua siruri de caractere sirsursa si sir. Acest fisier trebuie sa apeleze un fisier de tip functie cautastring.m care trebuie creeat si care are ca parametri de intrare sirsursa si sir. Functia trebuie sa caute sir in sirsursa si sa inlocuiasca aparitiile acestuia cu un sir de blancuri si sa afiseze noul sir de caractere modificat.

TEMA 26: Sa se creeze in directorul curent un fisier script mare.m care sa ceara interactiv introducerea unui sir de caractere. Acest fisier trebuie sa inlocuiasca toate caracterele sirului cu litere mari si sa afiseze noul sir de caractere modificat.

99

Page 100: MATLAB IN INGINERIE - tmt.ugal.ro

6. Functii matematice uzuale MATLAB pune la dispozitia utilizatorului o biblioteca bogata de functii matematice de diferite tipuri.

6.1. Functii de aproximare a numerelor Functiile MATLAB de rotunjire a numerelor sunt prezentate succint in tabelul de mai jos. Functia Descriere Exemplu Ceil Returneaza un numar intreg rotunjit la cel mai

apropiat numar intreg spre +infinit Ceil(3.2) → 4

Fix Returneaza un numar intreg rotunjit la cel mai apropiat numar intreg spre zero

Fix(-3.2) → -3

Floor Returneaza un numar intreg rotunjit la cel mai apropiat numar intreg spre –infinit

Floor(3.2) → 3

Round Returneaza un numar intreg rotunjit la cel mai apropiat numar intreg

Round(3.2) → 3

Rem Returneaza restul impartirii argumentelor Rem(-5,2) → -1 Mod Returneaza modulul restul impartirii

argumentelor Mod(-5,2) → 1

Rat Returneaza aproximarea unui numar cu fractii rationale continue

Rat(5.2) → 5 + 1/(5)

Rats Returneaza aproximarea unui numar cu fractii rationale

Rats(5.2) → 26/5

Sign Returneaza semnul argumentului Sign(-5.2) → -1 Sign(5.2) → +1 Sign(0) → 0

Functiile de mai sus pot fi aplicate unor scalari sau pot fi aplicate element cu element unor matrici sau vectori. TEMA 27: Sa se creeze in directorul curent fisierul script m7.m care creaza un vector X=1:100, si un vector Y cu 100 de elemente aleatoare intre 0 si 100. Progamul va creea un alt vector Y1 care se obtine inlocuind cu 0 toate numerele divizibile cu 7 si care traseaza grafic dependentele Y(X) si Y1(X).

6.2. Functii de operare cu numere complexe

Operatiile principale specifice numerelor complexe din pachetul MATLAB sunt prezentate in tabelul de mai jos. Functia Descriere Exemplu Abs Calculeaza (valoarea absoluta) modulul

numerelor complexe Abs(3+4i) → 5

Angle Calculeaza faza numerelor complexe Angle(1+i) → 0.7854

100

Page 101: MATLAB IN INGINERIE - tmt.ugal.ro

Unwrap Calculeaza partile reala si imaginara a numerelor complexe exprimate sub forma polara

Unwrap(1+i) → 1+i

Conj Calculeaza conjugata complexa a numerelor complexe

Conj(1+i) → 1-i

Imag Calculeaza partea imaginara a numerelor complexe

Imag(1+3i) → 3

Real Calculeaza partea reala a numerelor complexe Real(3+i) → 3 Complex Construieste numere complexe fiind date partea

reala si imaginara Complex(2,3) → 2+3i

Isreal Determina daca elementele matricelor sau vectorilor sunt numere reale

Isreal([2 3]) → 1

TEMA 28: Se da un transformator monofazat avand urmatoarele date: R1=1Ω, R2’=1 Ω , Xσ1=2Ω, Xσ2’=2Ω, Xμ=100Ω, Rw=∞. Tensiunea primara este U1=220 V si raportul numerelor de spire este w1/w2=15,81. Sa se dezvolte un fisier script care sa aiba parametrii datele transformatorului si sa calculeze: a) Curentul I1 si I2 si tensiunea U2 in sarcina, cand rezistenta de sarcina este R=0,1Ω b) Curentul I10 si tensiunea U20 in gol c) Puterile activa utila, activa absorbita si randamentul transformatorului Error!

Operatiile aritmetice clasice raman valabile pentru numerele complexe, respectiv pentru vectori si matrice avand ca elemente numere complexe.

U1

I1 I2’

U2’

R1 R2’ Xσ1 Xσ2’

Xμ R

Operator Operaţie + Adunare - Scădere * Inmultire / Impartire \ Impartire la stânga ^ Putere ’ Transpusa complex conjugata ( ) Pentru ordinea operaţiilor

101

Page 102: MATLAB IN INGINERIE - tmt.ugal.ro

6.3. Functiile putere, radical, logaritm si exponentiala

Functiile MATLAB de ridicare la putere, de extragere a radicalului, de calcul al logaritmului si al exponentialei sunt prezentate in tabelul de mai jos.

Functia Descriere Exemplu ^ Ridicare la putere a numerelor sau matricelor 2^2 → 4 Power Ridicare la putere a numerelor sau matricelor

element cu element Power(2,2) → 4

Mpower Ridicare la putere a matricelor Mpower(2,2) → 4 Exp Calculeaza exponentiala Exp(2) → 7.3891 Log Calculeaza logaritmul natural Log(7.3891) → 2 Log2 Calculeaza logaritmul in baza 2 Log2(4) → 2 Log10 Calculeaza logaritmul in baza 10 Log10(100) → 2 Nextpow2 Calculeaza puterea N a lui 2 care majoreaza

modulul lui 2NNextpow2(15) → 4

Pow2 Calculeaza puterea lui 2 Pow2(5) → 32 Sqrt Calculeaza radicalul de ordinul 2 al numerelor Sqrt(36) → 6 Reallog Calculeaza logaritmul natural pentru numere

pozitive Reallog(9) → 2.1972

Realpow Calculeaza puterea numerelor pozitive Realpow(2,3) → 8 Realsqrt Calculeaza radicalul de ordinul 2 al numerelor

pozitive Realsqrt(16) → 4

6.4. Functii trigonometrice MATLAB dispune de o biblioteca bine pusa la punct de functii trigonometrice care sunt prezentate in tabelul urmator. Functiile trigonometrice pot actiona asupra unor scalari sau asupra elementelor unor vectori sau matrici, in functie de tipul argumentului transmis. Unghiurile sunt in general considerate in radiani. Functia Descriere Exemplu Sin Calculeaza sinusul argumentului Sin(pi/2) → 1 Asin Calculeaza arcsinusul argumentului Asin(1) → 1.5708 Sinh Calculeaza sinusul hiperbolic al argumentului Sinh(2+2i) →

-1.5093 + 3.4210i Asinh Calculeaza arcsinusul hiperbolic al argumentului Asinh(2) → 1.4436 Cos Calculeaza cosinusul argumentului Cos(pi) → -1 Acos Calculeaza arcosinusul argumentului Acos(-1) → 3.1416 Cosh Calculeaza cosinusul hiperbolic al argumentului Cosh(2+2i) →

-1.5656 + 3.2979i Acosh Calculeaza arcosinusul hiperbolic al argumentului Acosh(2) → 1.3170 Tan Calculeaza tangenta argumentului Tan(pi/4) → 1 Atan Calculeaza arctangenta argumentului Atan(1) → 0.7854 Tanh Calculeaza tangenta hiperbolica a argumentului Tanh(2+2i) →

102

Page 103: MATLAB IN INGINERIE - tmt.ugal.ro

1.0238 - 0.0284i Atanh Calculeaza arctangenta hiperbolica a argumentului Atanh(2) →

0.5493 + 1.5708i Cot Calculeaza cotangenta argumentului Cot(pi/4) → 1 Acot Calculeaza arcotangenta argumentului Acot(1) → 0.7854 Coth Calculeaza cotangenta hiperbolica a argumentului Coth(2+2i) →

0.9760 + 0.0271i Acoth Calculeaza arcotangenta hiperbolica a argumentului Acoth(2) → 0.5493 Sec Calculeaza secanta argumentului Sec(pi) → -1 Asec Calculeaza arcsecanta argumentului Asec(-1) → 3.1416 Sech Calculeaza secanta hiperbolica a argumentului Sech(2+2i) →

-0.1175 - 0.2475i Asech Calculeaza arcsecanta hiperbolica a argumentului Asech(2) → 1.0472i Csc Calculeaza cosecanta argumentului Csc(pi/2) → 1 Acsc Calculeaza arccosecanta argumentului Acsc(1) → 1.5708 Csch Calculeaza cosecanta hiperbolica a argumentului Csch(2+2i) →

-0.1080 - 0.2447i Acsch Calculeaza arccosecanta hiperbolica a argumentului Acsch(2) → 0.4812

TEMA 29: Sa se creeze in directorul curent fisierul de tip functie sumasin.m care are ca parametru de intrare vectorul x=0:0.0001:5 de numere reale, calculeaza functia sumasin=sin+sinh+asin+asinh si care traseaza graficul lui abs(sumasin) functie de x.

TEMA 30: Se da un transformator monofazat avand urmatoarele date nominale: Sn=1000 VA, Pjn=50 W si Pfe=35 W. Sa se creeze un fisier de tip functie rand.m care sa primeasca ca parametrii datele prezentae anterior si care sa traseze caracteristica randamentului transformatorului pe acelasi grafic pentru sarcina pur rezistiva.

TEMA 31: Se da o bobina cu miez feromagnetic de forma patrata avand caracteristicile prezentate in figura de mai jos. Curba de magnetizare a miezului feromagnetic se da prin tabelul de mai jos si va trebui introdusa intr-un fisier text care sa fie citit de programul MATLAB. H [A/m] B [T] 0 0 500 0,2 1400 0,49 5000 1,08 8200 1,34 11500 1,53 15000 1,67 20000 1,84 26800 1,96 36700 2,03 57200 2,1 Aplicand legea circuitului magnetic pe conturul inchis Γ sa se determine valoarea

Γ

NI=10000 A L=100 mm

S = 900 mm2

103

Page 104: MATLAB IN INGINERIE - tmt.ugal.ro

inductiei magnetice B in miezul magnetic (aceasta se considera constanta pe toata regiunea miez magnetic). Pentru rezolvarea problemei va trebui creat un fisier M care sa ceara interactiv utilizatorului valorile celor trei parametri NI, L, si S. Apoi programul MATLAB trebuie sa apeleze o functie care sa faca interpolare liniara a valorilor B-H.

6.5. Functii de matematica discreta MATLAB contine un ansamblu de functii de matematica discreta cum ar fi functiile de calcul al divizorilor si multiplilor comuni etc. dupa cum sunt prezentate in tabelul de mai jos. Functia Descriere Exemplu Factor Intoarce un vector ce contine factorii primii ai

unui numar n Factor(39) → 3 13

Factorial Calculeaza factorialul unui numar n Factorial(4) → 24 Gcd Calculeaza cel mai mare divizor comun a doua

numere Gcd(115, 35) → 5

Lcm Calculeaza cel mai mic multiplu comun a doua numere

Lcm(115, 35) → 805

Primes Intoarce un vector ce contine numerele prime mai mici decat n

Primes(7) → 2 3 5 7

Isprime Determina daca elementele unui vector sau matrice sunt numere prime

Isprime([4 5 7]) → 0 1 1

Nchoosek Calculeaza combinari de n luate cate k Nchoosek(3, 2) → 3 Perms Calculeaza toate permutarile posibile Perms([2, 3]) → 3 2

2 3 TEMA 32: Sa se creeze in directorul curent fisierul de tip functie cmmdc.m care are ca parametrii de intrare trei numere naturale a, b, c, si care calculeaza cmmdc(a, b, c).

104