5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
Tiberiu TUDORACHE
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ MATLAB
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
1/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
2/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
3
Sumar PREFAĂ ......................................................................................................................................5 1. INTRODUCERE ÎN MATLAB .............................................................................................. 6 1.1. Ce este MATLAB ?.........................................................................................................6 1.2. Structura sistemului MATLAB........................................................................................7 1.3. Funcii de intrare şi ieşire................................................................................................. 8 1.4. Ferestrele de lucru MATLAB ........................................................................................ 12 1.5. Configurarea MATLAB Desktop................................................................................... 24 2. FUNCII DE MANIPULARE A MATRICELOR................................................................. 33 2.1. Definirea matricelor....................................................................................................... 33 2.2. Indexarea elementelor.................................................................................................... 36 2.3. Operaiuni de bază cu matrice........................................................................................ 38 2.4. Rezolvarea sistemelor de ecuaii liniare folosind operaii cu matrice.............................. 47 2.5. Aplicaii numerice ......................................................................................................... 49 3. FUNCII MATEMATICE UZUALE.................................................................................... 58 3.1. a numerelor................................................................................. 3.2. Funcii de aproximare operare cu numere complexe......................................................................... 58 3.3. Funciile putere, radical, logaritm şi exponenială .......................................................... 59 3.4. Funcii trigonometrice ................................................................................................... 60 3.5. Funcii de matematică discretă ....................................................................................... 60 3.6. Aplicaii numerice ......................................................................................................... 61 4. FUNCII MATLAB DE INTERES GENERAL.................................................................... 65 4.1. Expresii MATLAB ........................................................................................................ 65 4.2. Introducerea variabilelor, funciilor şi comenzilor MATLAB......................................... 67 4.3. Opiuni de configurare Command Window.................................................................... 75 4.4. Utilizarea funciei Help.................................................................................................. 76 4.5. Funcii de gestionare a spaiului de lucru, a directoarelor şi fişierelor............................. 81 ii dede 4.6. manipulare datei şi orei............................................................................... 86 4.7. Func Elemente interfaarea MATLAB................................................................................. 87 4.8. Aplicaii numerice ......................................................................................................... 98 5. REPREZENTAREA GRAFICELOR .................................................................................. 101 5.1. Reprezentarea graficelor 2D ........................................................................................ 101 5.2. Reprezentarea graficelor 3D ........................................................................................ 103 5.3. Configurarea şi salvarea graficelor............................................................................... 106 5.4. Aplicaii numerice ....................................................................................................... 114 6. ELEMENTE DE PROGRAMARE MATLAB .................................................................... 124 6.1. Fişiere de tip M............................................................................................................ 124 6.2. Tipuri de variabile şi de operatori ................................................................................ 129 6.3. Instruciuni de control logic ......................................................................................... 132 6.4. Interaciunea program-utilizator................................................................................... 135 6.5. Operaii cu şiruri de caractere ...................................................................................... 142 6.6. Aplicaii numerice ....................................................................................................... 143 7. CALCULE NUMERICE CU POLINOAME....................................................................... 164 7.1. Evaluarea polinoamelor ............................................................................................... 164 7.2. Operaii aritmetice cu polinoame ................................................................................. 165 7.3. Descompunerea în fracii simple.................................................................................. 167 7.4. Calculul derivatei......................................................................................................... 168 7.5. Calculul rădăcinilor ..................................................................................................... 169 7.6. Aplicaii numerice ....................................................................................................... 170
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
3/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
4
8.
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
FUNCII MATLAB DE INTERPOLARE ŞI APROXIMARE A DATELOR..................... 173 8.1. Căutarea datelor în tabele............................................................................................. 173 8.2. Interpolarea funciilor de o singură variabilă ................................................................ 175 8.3. Interpolarea funciilor de două variabile....................................................................... 179 8.4. Aproximarea polinomială prin metoda celor mai mici pătrate ...................................... 184
8.5. Interpolarea funciilor de trei variabile......................................................................... 185 8.6. Aplica ii numerice ....................................................................................................... 187 9. DERIVAREA ŞI INTEGRAREA NUMERICĂ A FUNCIILOR ...................................... 193 9.1. Derivarea numerică...................................................................................................... 193 9.2. Integrarea numerică ..................................................................................................... 199 9.3. Aplicaii numerice ....................................................................................................... 204 10. INTEGRAREA NUMERICĂ A ECUAIILOR DIFERENIALE.................................. 209 10.1. Ecuaiile difereniale de ordinul întâi........................................................................ 209 10.2. Funcii MATLAB pentru integrare numerică a ecuaiilor difereniale....................... 209 10.3. Integrarea ecuaiilor difereniale de ordin superior şi a sistemelor de ecuaii difereniale............................................................................................................... 212 10.4. Aplicaii numerice ................................................................................................... 213 11. FUNCII DE OPTIMIZARE NUMERICĂ ..................................................................... 216 11.1. Minimizarea funciilor de o variabilă ....................................................................... 216 11.2. Minimizarea funciilor de mai multe variabile.......................................................... 217 11.3. Calculul zerourilor funciilor de o variabilă reală ..................................................... 217 11.4. Aplicaii numerice ................................................................................................... 218 12. BIBLIOGRAFIE ŞI WEBOGRAFIE............................................................................... 221
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
4/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
5
PREFAĂ Lucrarea de faă este destinată studenilor din învăământul superior tehnic din domeniul şi nosiuni ingineriei electrice care doresc să sedefamiliarizeze cu principalele comenzi, şfunc de programare specifice pachetului programe MATLAB. Prin structura i coniiinutul ău, lucrarea este accesibilă cu minime cunoştine de electricitate şi studenilor din alte domenii ale ingineriei cum ar fi inginerie mecanică, electronică, automatică, etc. Înelegerea noiunilor prezentate în lucrare presupune un minim de cunostine prealabile de informatică, programare a calculatoarelor, electricitate, algebră şi analiză matematică. Materialul prezentat este structurat pe 13 capitole şi are un pronunat caracter practic abordând comenzile, funciile matematice şi facilităile MATLAB cu aplicabilitate directă în probleme tehnice de calcul numeric. Capitolul 1 al lucrării este unul introductiv şi prezintă pe scurt istoria pachetului de programe MATLAB, structura programului, comenzile de intrare şi ieşire, ferestrele de şi configurarea Desktop lucru Capitolul 2 trateaz MATLAB func.ii de generare, indexare şi manipulare a matricelor, ă principalele vectorilor şi tablourilor în mediul MATLAB. Capitolul 3 tratează principalele funcii matematice MATLAB, cum ar fi func iile de aproximare a numerelor, funcii de operare cu numere complexe, funcii trigonometrice, funcii de matematică discretă etc. Capitolul 4 este dedicat funciilor MATLAB de interes general cum ar fi func iile de import şi export al datelor, de gestionare a spa iului de lucru, de utilizare a help-ului etc. În capitolul 5 sunt prezentate principalele elemente MATLAB de reprezentare a graficelor 2D şi 3D. Acest capitol vizează însuşirea principalelor comenzi de creare, etichetare şi salvare a graficelor, respectiv de manipulare a obiectelor grafice specifice.
În capitolul 6 şsunt abordate principalele nocu iunicele de dou programare acest capitol se urmăre te familiarizarea utilizatorului fişiere M şÎn i anume ă tipuri deMATLAB. fişierele de tip script şi fişierele de tip function. Tot în cadrul acestui capitol este abordat ă pe scurt tehnica de programare a interfeelor grafice simple. Capitolul 7 este dedicat funciilor de operare cu polinoame. În capitolul 8 sunt tratate problemele specifice interpol ării şi aproximării datelor. Capitolul 9 abordează derivarea şi integrarea numerică a funciilor folosind comenzile MATLAB specifice. În capitolul 10 sunt prezentate funciile MATLAB de integrare a ecuaiilor difereniale, respectiv a sistemelor de ecuaii difereniale. Capitolul 11 al lucrării tratează problematica minimizării funciilor cu una sau mai multe variabile. Pentru fixarea noiunilor şi a cunoştinelor dobândite pe măsura parcurgerii lucrării, la sfârşitul capitolelor sunt propuse seturi de aplicaii numerice rezolvate. Aplicaiile propuse constau în abordarea unor probleme de calcul numeric având diferite nivele de complexitate. Lucrarea de faă este un rezultat al activităii didactice şi de cercetare efectuate de către autor în cadrul Laboratorului de Procesare Electromagnetic ă a Materialelor şi Modele Numerice (PEM_MN), Facultatea de Inginerie Electrică, Universitatea POLITEHNICA din Bucureşti.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
5/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
6
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
1. INTRODUCERE ÎN MATLAB 1.1. Ce este MATLAB ? ®
este şun MATLAB (MATtrix LABoratory) programe de înaltă performan interactiv, destinat calculului matematic, tiinpachet ific şideingineresc. MATLAB integreazăă, calcul, programare şi vizualizare, într-un mediu de lucru prietenos, soluionarea problemelor presupunând folosirea notaiilor 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ă ştiinifică şi inginerească, Dezvoltare de aplicaii software, incluzând construcia de interfee grafice (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 interfee cu limbajul de programare C, C++ şi FORTRAN. Versiunea cea mai recentă a pachetului de programe MATLAB este versiunea 7. MATLAB a cunoscut o puternică evoluie în decursul ultimilor ani, reprezentând ast ăzi în mediile universitare din Statele Unite, Japonia şi Uniunea Europeană o unealtă standard de calcul, fiind asociată diverselor cursuri introductive sau avansate de matematică, ştiină sau 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 conine o întreagă familie de module specifice, denumite tool-box-uri, respectiv blockset-uri, care permit rezolvarea unor aplicaii din diverse domenii ale ingineriei cum ar fi: inginerie electrică, matematică, economică, mecanică, aerospaială, biomedicală, statistică şi multe altele. Aceste module sunt colecii de funcii 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. Colecia de module MATLAB conine: Simulink, DSP, Control System, SimPowerSystems, SimMechanics, Data Acquisition, Fuzzy Logic, System Image Processing, Partial Differential Equations, Neural Network, Optimization, Identification, Financial, Statistics, Communications, Database, Virtual Reality etc.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
6/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
7
1.2. Structura sistemului MATLAB Structura sistemului MATLAB este compusă din cinci pări principale: Acesta esteMulte alcătuit dintr-un de unelte caredefaciliteaz 1.2.1 Mediul deşidezvoltare. folosirea funciilor fişierelor MATLAB. dintre acesteasetsunt controlate interfe ăe 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 Help, Workspace, Files, Search Path etc.
1.2.2 Biblioteca de funcii matematice MATLAB. Această bibliotecă constă dintr-o vastă colecie de algoritmi de calcul, pornind de la funcii elementare precum sumă, sinus, cosinus şi aritmetică complexă, pană la funcii mai sofisticate precum inversare de matrice, calcul de valori proprii, funcii Bessel, transformata Fourier etc. de înalt 1.2.3 MATLAB. nivel ce Limbajul include instruc iuni deLimbajul control alMATLAB buclelor, este funcun ii, limbaj structurimatrice/vector de date, comenzi de intrare/ieşire şi instruciuni de programare orientată pe obiecte. Limbajul MATLAB permite atât o ”programare simplă” pentru crearea rapidă a unor mici programe de calcul specifice, cât şi o "programare complexă" în vederea dezvoltării unor programe laborioase de nivel superior.
1.2.4 Manipularea graficelor ( 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, animaie şi grafică, cât şi comenzi de jos nivel ce permit personalizarea completă a reprezentărilor grafice şi construirea integrală a interfeelor grafice (GUI) pentru aplicaiile MATLAB.
1.2.5 Interfaa program a aplicaiilor MATLAB (Application Program Interface API). Aceasta este o bibliotecă ce permite scrierea programelor C şi Fortran ce interacionează cu MATLAB. Biblioteca conine facilităi de apel de subrutine din MATLAB (dynamic linking), de apelare a MATLAB-ul ca pe o maşină de calcul şi de citire/scriere de fişiere de tip MAT.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
7/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
8
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
1.3. Funcii de intrare şi ieşire 1.3.1. Comenzi de lansare MATLAB. Există mai multe variante de lansare a pachetului de programe MATLAB, şi anume: Varianta A) • Dublu-clic pe icoana MATLAB din Windows Desktop Varianta B) • Clic pe butonul START
,
• urmat de clic pe opiunea MATLAB 6.5, ca în Fig. 1.1.
Fig. 1.1. Lansarea din meniul6.5START prin clic pe MATLAB opiunea MATLAB
Varianta C) • Clic pe butonul START • urmat de clic pe opiunea Run
,
,
• urmat de tastarea cuvântului ” matlab” în fereastra Run, ca în Fig. 1.2.
Fig. 1.2. Lansarea MATLAB din meniul START prin clic pe opiunea Run
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
8/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
• urmată de Enter sau clic pe butonul OK
9
.
Varianta D)
• Dublu-clic pe icoana de tip shortcut ”MATLAB 6.5” din directorul de instalare
C:/MATLAB6p5/ , ca în Fig. 1.3.
Fig. 1.3. Lansarea MATLAB 6.5. prin dublu-clic pe icoana de tip shortcut corespunz ătoare
Varianta E) • În cazul lansării dintr-o fereastră DOS, se tastează cuvântul ”matlab” la promptul DOS, ca în Fig. 1.4, fiind urmat de Enter.
Fig. 1.4. Lansarea MATLAB dintr-o fereastră DOS
Mai sunt şi alte variante de lansare a pachetului de programe MATLAB pe care le lăsăm a fi descoperite de către utilizator.
1.3.2. Opiuni de lansare MATLAB. Există mai multe opiuni de lansare MATLAB, acestea putând fi activate la lansarea programului, în felul următor:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
9/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
10
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
• Clic-dreapta pe icoana MATLAB din Window Desktop •
,
urmat de clic pe Properties în meniul contextual, ca în Fig. 1.5,
Fig. 1.5. Apelul ferestrei Properties
• urmat de tastarea în câmpul Target, (după calea către fişierul executabil ”matlab.exe” ),
a opiunilor de lansare, cum ar fi de pildă opiunea /minimize, Fig. 1.6:
Fig. 1.6. Opiuni de lansare MATLAB 6.5.
Aciunile corespunzătoare diverselor opiuni de lansare MATLAB sunt prezentate în Tabelul 1.1: Tabel 1.1 Opiune /minimize /nosplash /r M_file /logfile logfilename
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
Aciune Lansare MATLAB în format minimizat, f ără afişare de splash. Lansare MATLAB f ără afişare splash. Lansare MATLAB împreună cu lansarea automată a fişierului cu numele M_file. Se înregistrează automat lista de comenzi MATLAB din sesiunea curentă în fişierul log specificat.
10/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
11
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
,
• urmat de clic pe Properties în meniul contextual, ca în Fig. 1.7,
Fig. 1.7. Apelul ferestrei Properties
• urmat de tastarea căii de acces către directorul de lucru, în câmpul Start in, ca de
exemplu calea D:\MATLAB, Fig. 1.8,
Fig. 1.8. Alegerea directorului de lucru înainte de lansare
• urmat de 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 aciona în mai multe feluri, şi anume:
A)
• Clic pe meniul File + clic pe Exit MATLAB, ca în Fig.1.9.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
11/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
12
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 1.9. Opiuni de încheiere a unei sesiuni MATLAB
B) • Clic pe icoana close box a ferestrei MATLAB Desktop
.
C)
• Tastare ”exit” sau ”quit” în Command Window, ca în Fig. 1.10,
• urmat de Enter.
Fig. 1.10. Opiuni de încheiere a unei sesiuni MATLAB
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 (MATLAB Desktop), ce conine unelte pentru controlul directoarelor, fi şierelor, variabilelor şi aplicaiilor MATLAB asociate, Fig. 1.11.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
12/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Prin expandare se pot obine informaii despre diverse module MATLAB
Prin clic se pot obine informaii ajutătoare
Vizualizare sau lansarea funciilor folosite anterior
Se pot introduce funcii şi comenzi MATLAB
Afişare în prim plan a Workspace sau Current Directory
13
Vizualizare sau schimbarea directorului curent
Clic pentru a muta fereastra în afara desktopului
Clic pentru a închide fereastra
Redimensionarea ferestrelor prin mutarea separatorului
Fig. 1.11. Fereastra principală MATLAB
Accesul la comenzile clasice MATLAB este facilitat de către bara de unelte a ferestrei MATLAB Desktop Toolbar, Fig. 1.12. inând cursorul deasupra unui buton, o indicaie 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 supervizate de MATLAB Desktop. 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 funciilor lansate anterior în Command Window; • Fereastra Launch Pad , permite lansarea uneltelor şi accesarea documentaiei MATLAB; • Fereastra Current Directory, permite controlul asupra fişierelor MATLAB şi a celor asociate; • Fereastra Help, permite vizualizarea şi căutarea documentaiei MATLAB; • Fereastra Workspace permite vizualizarea şi schimbarea coninutului spaiului de lucru; • Fereastra Array Editor permite editarea şi vizualizarea coninutului variabilelor într-un format tabelar.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
13/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
14
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
• Fereastra Editor/Debugger permite crearea, editarea şi depanarea fişierelor M ce conin
funcii MATLAB. Alte unelte şi ferestre MATLAB cum ar fi ferestrele grafice nu sunt supervizate de MATLAB Desktop. Crează un nou fişier M
Funcia Crează un nou model Simulink Deschide undo un nou Funcia copy fi ier Funcia Accesează fereastra Funcia redo Funcia Help paste cut
Vizualizează sau modifică directorul curent Selectează directoare curente folosite anterior Caută directorul curent
Indicaie ce descrie butonul. Indicaiile pot fi activate sau dezactivate din General Prefrerences
Fig. 1.12. Bara de unelte sau MATLAB toolbar .
1.4.2.1. Command Window. Command Window este fereastra principală de comunicare a utilizatorului cu programul MATLAB, Fig. 1.13. Această fereastră permite lansarea de funcii şi efectuarea de operaii MATLAB. Pentru vizualizarea ferestrei se selecteaz ă Command Window din meniul View.
Fig. 1.13. Fereastra Command Window.
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 instruciunilor specifice etc. Pentru afişarea cutiei de dialog cu proprietăile ferestrei Command Window, selectai Preferences din meniul File al MATLAB Desktop. Cutia de dialog se deschide permi ând modificarea proprietăilor ferestrei Command Window, Fig. 1.14.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
14/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
15
Fig. 1.14. Configurarea fonturilor şi culorilor ferestrei Command Window.
1.4.2.2. Fereastra Command History. Fereastra Command History apare când lansai MATLAB. Fereastra Command History afişează o listă a funciilor lansate recent în Command Window, ca în Fig. 1.15. Afiş area func iilor în fereastra Command History. Lista de comenzi afişate în fereastra Command History include atât funcii din sesiunea curentă cât şi funcii din sesiuni anterioare. Ora şi data pentru fiecare sesiune apare în partea superioar ă a listei de funcii aferente acelei sesiuni de lucru. Folosii scroll-bar-ul sau săgeile up ↑ şi down ↓ pentru a naviga în fereastra Command History. Fişierul specific uneltei Command History este history.m. Tastai prefdir în Command Window pentru a vedea locaia acestui fişier. Fişierul history.m este încărcat odată cu lansarea programului MATLAB şi suprascris la ieşirea din MATLAB.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
15/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
16
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Indicaie privind data şi ora ce marchează începutul fiec ărei sesiuni de lucru Selectai una sau mai multe linii şi clicai dreapta pentru a le copia sau pentru a crea un fişier M
Fig. 1.15. Fereastra Command History. Ş tergerea func iilor din fereastra Command History. Se recomandă ştergerea funciilor
din fereastra Command History când se strâng prea multe şi navigarea devine dificilă. Toate funciile sunt înregistrate până când alegei opiunea de a le şterge. Pentru a şterge o funcie, selectai funcia sau folosii Shift+clic sau Ctrl+clic pentru a selecta mai multe, sau folosii Ctrl+A pentru a le selecta pe toate, iar prin clic-dreapta selectai una dintre opiunile de ştergere din meniul contextual: Delete Selection – şterge funcia selectată, Delete to Selection – şterge toate funciile anterioare până la cea selectată, Delete Entire History – şterge toate funciile din fereastra Command History. O altă cale de ştergerea a întregii liste de funcii constă în selectarea comenzii Clear Command History din meniul Edit. Lansarea func iilor din fereastra Command History. Pentru a executa o funcie din fereastra Command History se poate face un dublu-clic pe funcia respectivă în fereastra Command History. De exemplu, pentru a relansa funcia prefdir se face un dublu-clic pe funcia prefdir. Putei deasemenea lansa o funcie cu clic-dreapta pe funcie şi selectând Evaluate Selection din meniul contextual, sau copiind funcia în Command Window. Copierea func iilor din fereastra Command History. Selectai o funcie sau cu Shift+clic sau Ctrl+clic selectai mai multe funcii, sau folosii Ctrl+A pentru a selecta toate funciile. Apoi putei executa următoarele comenzi, Tabel 1.2. Tabel 1.2 Aciune Lansarea funciilor Command Window
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
Mod de lucru în Copia i selecia în clipboard prin clic-dreapta şi selectarea opiunii Copy din meniul contextual. Selecia se copiază cu Paste în Command Window (altă alternativă constă în executarea unui dragging al seleciei în Command Window). În Command Window se editează la nevoie funcia şi se apasă pe Enter sau
16/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
17
Return pentru executarea funciei. Copierea funciilor în altă Copia i selecia în clipboard prin clic-dreapta şi selecia comenzii fereastră Copy din meniul contextual. Copiai selecia într-un fişier M deschis în Editor sau altă aplicaie. Crearea unui fişier M din Clic-dreapta pe selecie şi selectează Create M-File din meniul funciile selectate contextual. Editor-ul deschide un nou fişier M ce conine funciile pe care le-ai selectat din fereastra Command History.
1.4.2.3. Fereastra Launch Pad . Fereasta Launch Pad din MATLAB permite accesul uşor la unelte, demo-uri, şi documentaia produselor MathWorks, Fig. 1.16. Pentru lansare selectai Launch Pad din meniul View din MATLAB Desktop. Îndată sunt listate toate produsele MathWorks instalate pe sistemul dvs. Help: dublu-clic pentru a accesa direct documentaia MATLAB Demos: dublu-clic pentru a afişa Demo launcher Tools: dublu-clic pentru a deschide unealta Product Page: dublu-clic pentru a vizualiza ultimele informaii de pe site-ul MathWorks Web Clic pentru a afişa detalii despre un anumit modul MATLAB
Fig. 1.16. Fereastra Launch Pad .
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 listă, sau clic-dreapta şi selectai Open din meniul contextual. Aciunea depinde de lista pe care a i selectat-o, după cum este prezentat în Tabelul 1.3. Tabel 1.3. Icoana
Descrierea aciunii în urma lansării Documentaia produsului respectiv se deschide în fereastra Help 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 la lansarea sesiunii curente. Dacă schimbai calea de căutare după lansarea unei sesiuni, de pildă prin adăugarea unui director
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
17/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
18
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
toolbox, fereastra Launch Pad nu este automat actualizată. Clic-dreapta în fereastra Launch Pad şi selectai Refresh din meniul contextual pentru a actualiza fereastra Launch Pad aşa încât să afişeze toate produsele în calea curentă de căutare.
1.4.2.4. Fereastra Current Directory. Pentru a căuta, vizualiza, deschide şi pentru a modifica directoare şi fişiere asociate MATLAB-ului, folosii fereastra Current Directory, Fig.1.17. Pentru a deschide fereastra Current Directory, selectai Current Directory din meniul View din MATLAB Desktop, sau tastai filebrowser la promptul Command Window. Putei deasemenea să o deschidei din Launch Pad , sub MATLAB. Folosii căsua de editare a căi pentru a vizualiza directoarele şi coninutul acestora
Clic pe butonul de c ăutare în fişierele M
Dublu-clic pe un fişier pentru a îl deschide
Vizualizarea zonei de help corespunzătoare fişierului M selectat
Fig. 1.17. Fereastra Current Directory.
Principalele operaiuni cu directoare şi fişiere ce pot fi efectuate folosind fereastra Current Directory sunt operaiuni 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 coninutului fişierelor, • căutarea şi înlocuirea coninutului fişierelor. 1.4.2.5. Fereastra Help. Se foloseşte fereastra Help pentru căutarea şi vizualizarea documentaiei MATLAB, Fig. 1.18 şi produsele MathWorks. Help este un Web browser integrat în MATLAB Desktop care afişează documente HTML. Pentru lansarea ferestrei Help:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
18/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
• Clica i pe butonul help
19
din toolbar sau
• Tasta i helpbrowser în Command Window sau • Selecta i Help din meniul View sau • Folosii meniul Help în orice unealtă MATLAB.
Tab-urile panelului Help Navigator permit diferite moduri de accesare a documentaiei Folosii close box pentru a închide panelul Help Navigator
Panel ce permite vizualizarea documenta iei
Folosii bara de separaie pentru a redimensiona panelurile
Fig. 1.18. Fereastra Help.
Fereastra Help conine două paneluri: • Panelul Help Navigator din stânga, care se folose şte pentru căutarea informaiei. Acesta include un filtru Product Filter şi ferestrele Contents, Index, Search, şi Favorites. • Panelul display din dreapta, folosit pentru vizualizarea documentaiei. Proprietăile specifice ferestrei Help pot fi modificate selectând Preferences din meniul File al ferestrei MATLAB Desktop. Cutia de dialog se deschide şi permite selectarea opiunii Help în urma căreia se deschide fereastra Help Preferences pentru modificarea
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
19/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
20
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
proprietăilor ferestrei Help. Se pot modifica caracteristicile fontului folosit în ferestrele Help, se poate selecta locaia documentaiei, etc.
1.4.2.6. Fereastra Workspace. Folosii Workspace pentru executarea operaiunilor în spaiul de lucru MATLAB. Pentru a lansa Workspace, Fig. 1.19, există mai multe că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.
Fig. 1.19. Fereastra Workspace.
• • • • •
Printre operaiunile ce pot fi executate din fereastra Workspace sunt: vizualizarea Current Workspace, salvarea Current Workspace, încărcarea Saved Workspace, ştergerea Workspace Variables, crearea graficelor din fereastra Workspace,
• vizualizarea şi editarea Workspace Variables folosind Array Editor.
Proprietăile specifice ferestrei Workspace pot fi modificate selectând Preferences din meniul File al ferestrei MATLAB Desktop. Cutia de dialog se deschide şi permite selectarea opiunii Workspace în urma căreia se deschide fereastra Workspace Preferences pentru modificarea proprietăilor ferestrei Workspace. Se pot modifica caracteristicile fontului folosit în fereastra Workspace şi se poate opiona pentru afişarea unei căsue de dialog de confirmare a ştergerii variabilelor.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
20/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
21
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 fereastra Workspace se selectează în fereastra Workspace variabila pe care dorii să o afişai (Shift+clic sau Ctrl+clic pentru a selecta mai multe variabile). Clica i pe butonul Open din toolbar, sau clic-dreapta şi selectai 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 putei deschide un vector cu mai mult de 10000 de elemente. Pentru a afişa coninutul unei variabile în Workspace, tastai numele variabilei la promptul Command Window. Pentru a afişa o variabilă în Array Editor , Fig. 1.20, folosii funcia openvar('nume_variabila') tastată la linia de comandă din Command Window având ca argument numele variabilei pe care dorii să o afişai. Elemente ale unor variabile de tip vector; valorile pot fi schimbate
Alegerea formatului de afişare
Modificarea dimensiunilor variabilelor de tip vector
Folosii tab-urile pentru vizualizarea variabilelor deschise în Array Editor
Fig. 1.20. Fereastra Array Editor .
Modificarea valorilor elementelor în Array Editor. În Array Editor, clica i pe celula a cărei valoare dorii să o modificai. Tastai o nouă valoare. Apăsai Enter sau Return, sau clica i în altă celulă şi modificarea va fi efectuată. Pentru a modifica dimensiunile unui vector, tasta i noile valori corespunzând numărului de rânduri şi coloane în Size fields. Dacă creştei dimensiunea vectorului sau matricei, noile rânduri şi coloane sunt adăugate la sfârşit şi sunt umplute cu zerouri. Dac ă reducei dimensiunea, vei 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ă deschidei un fişier MAT existent şi efectuai modificări asupra acestuia folosind Array Editor, va trebui să salvai acel fişier MAT dacă dorii ca schimbările să fie salvate.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
21/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
22
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Controlul afişă rii valorilor în Array Editor. În Array Editor, selectai 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 opiunii 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 din MATLAB, Fig.1.21, pune la dispoziie o interfaă grafică ce permite editarea elementară de text şi depanarea ( debugging) oricărui tip de fişier M. Editor/Debugger este o unealtă care se poate folosi pentru editare, debugging sau ambele. Există diferite modalităi de lansare a ferestrei Editor/Debugger: A) Lansarea ferestrei Editor/Debugger în vederea cre rii unui nou fi ier M . Pentru a ă
ş
crea un nou fişier M în Editor/Debugger, fie clica i pe butonul new file din toolbar-ul MATLAB, sau selectai File + New + M-file din meniul MATLAB Desktop. Putei deasemenea crea un fişier M folosind meniul contextual în fereastra Current Directory. Editor/Debugger se deschide dacă nu cumva este deja deschisă, cu un fişier gol în care putei scrie instruciunile fişierului M. Dacă Editor/Debugger este deschis, putei crea mai multe fişiere noi folosind butonul new file din toolbar, sau selectai File + New + M-file. Funcia echivalentă de creare a fişierelor M noi în Editor/Debugger este funcia edit tastată în Command Window. Dacă tastai edit filename.m şi fişierul cu acest nume nu există încă, apare un mesaj care vă ă dacă dori i săă un ă fialege i da, întreab crea i un fişier cu numele filename.m. Editor/Debugger creaz fişier golnou cu numele filename.m, altfel fişierul Dac nu va creat.
B) Lansarea ferestrei Editor/Debugger pentru deschiderea fişierelor M existente. Pentru a deschide un fişier M existent în Editor/Debugger, clica i pe butonul open din toolbar-ul MATLAB sau din Editor/Debugger, sau selectai File + Open şi apoi din Open dialog box, selecta i fişierul M şi Clica i pe Open. Se pot deasemenea deschide fişiere din fereastra Current Directory. Putei selecta un fişier în vederea deschiderii din lista celor mai recent folosite fi şiere, în partea inferioară a meniului File în MATLAB Desktop sau în Editor/Debugger. Putei schimba numărul de fişiere care apar în această listă. O funcie echivalentă folosită pentru editarea sau deschiderea unui fişier M existent în Editor/Debugger este funcia edit filename.m.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
22/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
23
Fig. 1.21. Fereastra Editor/Debugger .
C) Lansarea ferestrei Editor/Debugger f ă ră a lansa MATLAB. Pe platformele Windows, putei folosi MATLAB Editor f ără să lansai MATLAB prin dublu-clic pe fişierul M în Windows Explorer. Fişierul M se deschide în MATLAB Editor. Pentru a deschide fereastra Editor f ără fişier implicit, lansai fişierul MATLAB6p5/bin/win32/meditor.exe. Se pot deschide mai multe sesiuni simultane de meditor. Când lansai MATLAB Editor f ără lansare MATLAB, Editor devine o aplicaie de sine stătătoare. ăile ferestrei Editor/Debugger Propriet se pot meniul File al ferestrei MATLAB Desktop. Cutia de modifica dialog seselectând Preferences deschide şi permite din selectarea opiunii Editor/Debugger în urma ăcreia se deschide fereastra Editor/Debugger Preferences de modificare a proprietăilor, Fig. 1.22. Prin intermediul opiunilor disponibile în cadrul ferestrei Preferences se pot modifica caracteristicile fontului şi culorilor folosite în fereastra Editor/Debugger, se poate selecta modul de afişare, salvare etc.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
23/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
24
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 1.22. Configurarea opiunilor ferestrei Editor/Debugger .
1.5. Configurarea MATLAB Desktop 1.5.1. Apelul uneltelor MATLAB Desktop. Pentru a apela o unealtă din MATLAB Desktop, selecta i unealta din meniul View sau executai un 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 dată 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 variabilă în fereastra Workspace, • Editor/Debugger – care se deschide prin crearea unui nou fişier M sau prin deschiderea unui fişier M existent. Uneltele se pot deschide şi prin folosirea funciilor. De pildă, funcia helpbrowser deschide fereastra Help. 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ă. Selectai o entitate în meniul Window pentru a ajunge direct la acea fereastră sau document. Selectai Close All pentru a închide toate entităile listate în meniul Window. De pildă, meniul Window de mai jos, Fig. 1.23, 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, să devină fereastră activă.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
24/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
25
Close All închide toate entităile listate în meniul Window Trei variabile sunt deschise în Array Editor: x, y şi m Două fişiere sunt deschise în Editor/Debugger: sqsum.m şi variance.m Clicai pe o entitate pentru a accesa direct fereastra corespunzătoare
Fig. 1.23. Alegerea ferestrei active.
1.5.3. Redimensionarea ferestrelor. Pentru redimensionarea ferestrelor în MATLAB Desktop, se foloseşte bara separator, care este bara dintre două ferestre: Muta i cursorul deasupra barei separator. Cursorul capătă o altă formă. Dragga i bara separator pentru a modifica dimensiunile ferestrelor, Fig. 1.24. Folosii bara de separaie pentru a redimensiona subferestrele din desktop
Fig. 1.24. Redimensionarea ferestrelor.
1.5.4. Mutarea ferestrelor. Există trei modalităi de bază de mutare a ferestrelor : mutare în interiorul mutare în(Tabbing). afara MATLAB Desktop, MATLABmutare Desktop MATLAB Desktop,ferestrelor în interiorul MATLAB Desktop prin gruparea Mutare în interiorul MATLAB Desktop. Pentru a muta o fereastra într-o alt ă locaie în interiorul MATLAB Desktop muta i title bar-ul ferestrei spre noua locaie. Pe măsura ce mutai fereastra, un contur al acesteia va deveni vizibil. Când conturul se apropie de o poziie posibilă, conturul se fixează în acea locaie. Status bar afişează instruciuni despre mutarea ferestrei în timpul schimbării conturului. În exemplul de mai jos, Fig. 1.25, fereastra Command History este iniial la stânga ferestrei Command Window şi este mutată
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
25/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
26
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
deasupra ferestrei Command Window. Când title bar-ul ferestrei Command History atinge zona inferioară a toolbar-ului, conturul devine vizibil. Mutai bara de titlu a ferestrei Command History pentru a muta locaia fereastrei
Eliberai butonul mouse-ului când loca ia ferestrei Command History vă convine
Bara de stare afişează instruciuni despre opera ia în curs de mutare a ferestrei
Fig. 1.25. Poziionarea ferestrelor.
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. În figura de mai jos, Fig. 1.26, este ilustrată noua poziie a ferestrelor din desktop după mutarea ferestrei Command History deasupra ferestrei Command Window.
Fig. 1.26. Noua poziie a ferestrelor.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
26/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
27
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 dorii să o mutai în afara MATLAB Desktop, •• Muta meniul în al acelei ferestre; fereastra activiă title , Selecta Undock View i ititle bar-uldinferestrei afara MATLAB Desktop; pe trebuie măsurăsăcefiemuta
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 din Fig. 1.27, fereastra Command History a fost mutată în afara MATLAB Desktop.
Fig. 1.27. Mutarea ferestrelor în exteriorul MATLAB Desktop .
Mutarea ferestrelor din exteriorul MATLAB Desktop în interior. Pentru a muta o fereastra din exteriorul MATLAB Desktop în interior, selectai opiunea Dock din meniul View al ferestrei respective. Gruparea (Tabbing) ferestrelor împreună. Putei grupa ferestrele aşa încât acestea să ocupe acelaşi spaiu în MATLAB Desktop, păstrând însă accesul la toate ferestrele. Pentru a grupa împreună 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 Fig. 1.28 fereastra iniial laferestrei stânga Command prin mutarea title Command History estebar-ului Command Window Windowseiarrealizeaz bar-ului ferestrei deasupra title ă gruparea acestora împreună ( tabbing).
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
27/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
28
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Conturul ferestrei inclusiv tab-ul
Fig. 1.28. Gruparea ferestrelor (tabbing) în interiorul MATLAB Desktop .
Apoi elibera i mouse-ul. Ambele ferestre ocupă acelaşi spaiu şi în zona inferioară a ferestrelor apar tab-urile ce permit identificarea ferestrelor. În Fig. 1.29, fereastra Command History şi Command Window sunt grupate împreună, fereastra Command History fiind cea activă.
Folosii săgeile pentru a vizualiza
Există mai multe tab-uri grupate
tab-urile care nu sunt acest exemplu săge ilevizibile. sunt griÎn indicând că toate tab-urile sunt v
ă în Clica ă pentru împreun fereastr fiecare tool. i pe un tab pentru a vizualiza acel tool.
Fig. 1.29. Noua poziie a ferestrelor grupate în interiorul MATLAB Desktop .
Vizualizarea ferestrelor grupate. Pentru a vizualiza o fereastră dintr-un grup, 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.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
28/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
29
Mutarea ferestrelor grupate. Pentru a muta o fereastră grupată spre o altă locaie, muta i title bar-ul sau tab-ul spre noua locaie. Putei muta fereastra în interiorul sau în exteriorul MATLAB Desktop. Închiderea ferestrelor grupate. Când clica i pe close box-ul ferestrei care este parte a unui grup de ferestre, închide doar fereastra în cauză. Nu putei închide toate ferestrele grupate deodat ă, ci doarseuna câte una.
1.5.5. Comenzi de închidere a unei ferestre MATLAB. Pentru închiderea unei ferestre MATLAB se poate aciona î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, Fig. 1.30.
Fig. 1.30. Comenzi de închidere a ferestrelor.
1.5.6. Configuraia MATLAB Desktop predefinită. Există şase configuraii predefinite MATLAB Desktop, pe care le putei selecta din meniul View + Desktop Layout: • Default - conine în stânga fereastrele Workspace şi Current Directory grupate împreună, iar în dreapta fereastra Command History; • Command Window Only - conine doar fereastra Command Window; această opiune face ca MATLAB Desktop să apară similar cu versiunile de MATLAB anterioare; • Simple - conine fereastra Command History şi Command Window, una lângă alta; • Short History - conine fereastrele Current Directory şi Workspace grupate împreună deasupra ferestrei Command Window respectiv deasupra ferestrei Command History care are talie redusă;
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
29/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
30
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
• Tall History - conine ferestrele Command History în stânga şi Current Directory şi
Workspace grupate împreună deasupra ferestrei Command Window; • Five Panel - conine fereastra Launch Pad deasupra ferestrei Command History în stânga, Workspace deasupra Current Directory în centru, şi Command Window în dreapta. După selectarea unei configuraii predefinite, putei muta, redimensiona şi deschide/închide ferestrele.
1.5.7. Accesarea adresei Web a companiei The MathWorks. Putei accesa din MATLAB Desktop paginile Web ale companiei The MathWorks, selectând una dintre următoarele opiuni: The MathWorks Web Site, MATLAB Central, MATLAB File Exchange, MATLAB Newsgroup Exchange, Check for Updates, Products, Membership, Technical Support Knowledge Base. Multe dintre facilităilemeniuri. sunt disponibile MATLAB Desktop Meniulcontextuale, contextual.cunoscute din1.5.8. meniurile ca pop-up Pentru a accesa un meniu contextual, se execută clic-dreapta pe o entitate, iar meniul contextual împreună cu operaiunile specifice devin vizibile. Mai jos, Fig. 1.31, se prezint ă meniul contextual al ferestrei Command History.
Accesarea meniului contextual este posibilă prin clic dreapta pe o entitate selectată
Fig. 1.31. Meniul contextual al ferestrei Command History.
1.5.9. Taste cu rol de prescurtare şi accelerare. Putei accesa multe articole de meniu folosind prescurtări sau taste acceleratoare cum ar fi Ctrl+X care este identic cu operaiunea 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ă aciunea curentă asupra unei selecii; de pildă, apă sând Enter când este selectată o linie în fereastra Command History acea comandă este executată în Command Window; • Escape – anulează aciunea curentă; • Ctrl+Tab sau Ctrl+F6 – deplasare spre tab-ul urmă tor în desktop, sau spre fişierul urmă tor deschis în Editor/Debugger;
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
30/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
31
• 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ă; •• Alt+F4 spre tab-ul anterior într-o fereastră; Ctrl+Page Down – deplasare – închide desktop-ul sau fereastra în afara desktop-ului; • Alt+Space – afişează meniul sistem.
1.5.10. Selectarea simultană a mai multor entităi. În multe ferestre ale desktop-ului, putei selecta simultan mai multe entităi şi apoi putei executa o aciune asupra tuturor entităilor. Putei selecta simultan mai multe entităi clicând pe prima entitate inând apă sată tasta Ctrl şi apoi clicând pe entitatea urmă toarea pe dorii s ă o selectai. Repetai acest ultim pas până ai selectat toate entităile dorite. Dacă ine i apă sată tasta Shift în locul tastei Ctrl în timp ce clica i pe o entitate, ve i selecta toate entită ile cuprinse între cele două entităi selectate. Putei executa asupra entităilor selectate o comandă comună cum ar fi de pildă Delete. 1.5.11. Folosirea Clipboard-ului. Putei executa operaiuni cut şi copy asupra unei selecii dintr-o fereastră din Desktop spre Clipboard şi apoi să executai paste în altă fereastră din MATLAB Desktop . Folosii meniul Edit, meniurile contextuale sau prescurtările standard. De pildă, putei executa copy asupra unei selecii de comenzi din fereastra Command History şi să executai paste în Command Window. Articolul Paste Special din meniul Edit deschide selecia din Clipboard în Import Wizard . Putei folosi această facilitate pentru a copia datele dintr-o altă aplicaie, cum ar fi Excel , în MATLAB. Pentru a anula cea mai recentă execuie cut, copy, sau paste, selectai Undo din meniul Edit. Folosii Redo pentru a executa din nou acele operaiuni (aciune opusă lui Undo). Putei deasemenea realiza copierea prin mutarea (dragging) selec iei. De pildă, dacă efectuai o selecie din fereastra Command History şi muta i selec ia în Command Window, este echivalent cu execuia comenzii paste. Putei în continuare să editai liniile în Command Window.
1.5.12. Proprietăi generale ale MATLAB Desktop. Putei modifica proprietăile predefinite ale MATLAB Desktop, cum ar fi de pildă 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 selectai Preferences din meniul File. Cutia de dialog Preferences se deschide şi permite modificarea proprietăilor prin selecia tipului de proprietăi. În exemplul de mai jos, Fig. 1.32, sunt modificate propriet ăile generale ale MATLAB Desktop, reprezentate prin articolul de meniu General . Dacă apare un semn + în stânga unui articol din meniu, clica i pe + pentru a afişa în detaliu opiunile coninute, şi apoi selecta i opiunea ale cărei proprietăi dorii să le modificai. Panelul din dreapta reflectă tipul de proprietăi pe care le-ai selectat. În panelul din dreapta specificai proprietăile dorite şi clica i pe OK . Proprietăile se vor schimba imediat.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
31/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
32
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 1.32. Configurarea opiunilor MATLAB Desktop .
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
32/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
33
2. FUNCII DE MANIPULARE A MATRICELOR 2.1. Definirea matricelor O metodă eficientă de a începe iniierea în mediul de lucru MATLAB este de a înv ăa operaiunile de generare şi manipulare a matricelor. Definirea matricelor în MATLAB este posibilă pe mai multe căi. De pildă putei: • Defini explicit matrice prin introducerea unor liste de elemente în Command Window; • Defini matrice prin încărcarea datelor din fişiere externe; • Genera matrice folosind funcii MATLAB incluse; • Crea matrice folosind propriile dvs. funcii scrise în fişiere M.
2.1.1. Definirea explicită a matricelor în Command Window. O metodă de definire a matricelor constă în introducerea explicită a elementelor matricelor la linia de comand ă în fereastra Command Window. Prezena prompt-ului (>>) în Command Window indică faptul că MATLAB este gata de a accepta o comand ă din partea dvs. Astfel putei introduce o variabilă, lansa o funcie etc. Începei prin introducerea unei matrice ca o listă de elemente. Trebuiesc respectate câteva convenii de bază: • Separai elementele unui rând cu spa ii blanc sau virgule; • Folosii un semn punct şi virgulă, ” ;”, pentru a indica sfârşitul fiecărui rând; • Includei întreaga listă între paranteze pătrate, ” [ ] ”. Astfel pentru a defini o matrice, tasta i la linia de comandă în Command Window: A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
(2.1)
După ce ai tastat linia de comandă de mai sus, când apă sa i tasta Enter sau Return, MATLAB va afişa matricea pe care tocmai ai introdus-o: A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
(2.2)
Odată introdusă matricea de mai sus, aceasta este automat memorată în MATLAB Workspace. Putei accesa şi vizualiza această matrice tastând simplu A la linia de comandă urmată de Enter. În mod similar introducerii unei matrice, pentru a lansa o func ie, tasta i func ia inclusiv toate argumentele şi apă sa i tasta Return sau Enter. MATLAB va afişa rezultatul. De pildă, tasta i: det(A)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
33/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
34
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
MATLAB va calcula determinantul matricei A definite anterior şi va răspunde cu: ans = 0
(2.3)
Când nu specificai o variabilă de ieşire (variabilă răspuns), MATLAB foloseşte variabila predefinită ans, o prescurtare pentru cuvântul englezesc answer, pentru a stoca rezultatul unei calculaii.
2.1.2. Definirea matricelor prin încărcarea datelor din fişiere externe. Matricele pot fi create deasemenea prin încărcarea datelor din fişiere externe folosind funcia load . Funcia load citeşte fişiere binare coninând matrice generate în sesiuni MATLAB anterioare, sau citeşte fişiere text coninând date numerice. Fişierul text trebuie organizat sub forma unui tabel de numere, separate de blancuri, cu număr egal de elemente pe fiecare rând, respectiv pe fiecare coloană. În urma unui astfel de import de date numerice dintr-un fişier cu numele matrice.txt, folosind sintaxa load matrice.txt, MATLAB va citi fişierul matrice.txt şi va crea în MATLAB workspace o variabilă cu numele matrice, coninând datele din respectivul fişier. Pentru a denumi altfel variabila creată în workspace, (de pildă A) se poate folosi următoarea sintaxă a funciei load . A = load('matrice.txt');
(2.4)
O metodă uşoară de a importa în MATLAB Workspace date scrise în diverse formate de tip text sau binare constă în folosirea funciei Import Wizard din meniul Edit + Paste Special .
2.1.3. Generarea matricelor de bază folosind funcii MATLAB incluse. MATLAB dispune de mai multe funcii de generare a matricelor de baz ă, cum ar fi, Tabel 2.1: Tabel 2.1 zeros ones rand eye
Matrice ce conine doar elemente nule Matrice ce conine doar elemente unitate Matrice cu elemente aleatoare, uniform distribuite, cuprinse între 0 şi 1 Matrice cu elemente nule, cu excep ia diagonalei principale ce conine elemente unitate Matrice diagonală Vectori cu elemente având valori distribuite liniar Vectori cu elemente având valori distribuite logaritmic
diag linspace logspace
Iată câteva exemple. Tastai: Z = zeros(2, 3)
(2.5)
Z = 0 0
(2.6) 0 0
0 0
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
34/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
35
F = 5*ones(2, 2)
(2.7)
F = 5 5
(2.8) 5 5
N = fix(10*rand(1, 10)) N = 4 9 4 4 8
(2.9) (2.10) 5
2
6
8
0
R = rand(4, 4)
(2.11)
R = 0.4447 0.7382 0.9169 0.3529
(2.12)
0.6154 0.1763 0.4103 0.0099 0.8132 0.7919 0.4057 0.8936 0.9218 0.9355 0.0579 0.1389 S = eye(3, 4)
(2.13)
S= 1 0 0
(2.14) 0 1 0
0 0 1
0 0 0
iin Pute crea propriile Definirea folosind funcii scrise M. ce dvs.2.1.4. matrice folosindmatricelor fişiere de tip M . Aceste fişiere suntîn fifişiere con instruc şiere text iuni MATLAB şi au extensia .m. Un astfel de fişier M îl putei crea folosind MATLAB Editor sau oricare alt editor de text (de pild ă Notepad sau Wordpad ) şi trebuie să conină aceleaşi instruciuni pe care le-ai tasta la linia de comandă în Command Window. După ce ai creat fişierul acesta trebuie salvat sub un nume dorit însă trebuie să aibă extensia .m. De pildă, creai un fişier coninând următoarele cinci linii.
A = [… 16.0 3.0 2.0 13.0 5.0 10.0 11.0 8.0
(2.15)
4.0 9.0 15.0 6.0 14.0 7.0 12.0 1.0 ]; Stocai fişierul sub numele matricem.m. Tastând în continuare la linia de comandă în Command window instruciunea matricem.m MATLAB va citi fişierul şi va crea o variabilă, A, coninând matricea de mai sus.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
35/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
36
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
2.2. Indexarea elementelor Elementul din rândul i şi coloana j a matricei A este notat cu A(i, j). De pildă, A(4, 2) este elementul din rândul 4 şi coloana 2, adică, în cazul matricei de mai sus, este num ărul 15. Pentru a calcula suma elementelor din coloana a patra a matricei A, tastai: A(1, 4) + A(2, 4) + A(3, 4) + A(4, 4)
(2.16)
MATLAB va răspunde cu ans = 34
(2.17)
Aceasta metodă nu este însă cea mai eficientă de a suma elementele unei coloane. Este posibilă accesarea elementelor elementelor unei matrice cu un singur indice, A(k). Acesta ă poate este modul uzual de accesare a unorbidimensionale, vectori tip rândcaz sauîncoloan . Aceastăeste metod aplicat ă deasemenea unei matrice care ăvectorul privit ca unfi vector lung de tip coloană format din coloanele matricei originale. Astfel, în cazul matricei A definite anterior, A(8) este o altă cale de accesare a valorii 15 stocată în A(4, 2). Dacă încercai să accesai valoarea unui element din afara matricei, apare un mesaj de eroare. Tastai:
t = A(4, 5)
(2.18)
MATLAB va răspunde cu: ??? Index exceeds matrix dimensions.
(2.19)
Pe de altă parte, dacă stocai o valoare într-un element din afara matricei, dimensiunea matricei creşte pentru a include noua valoare. Tastai de pildă : X = A;
(2.20)
X(4, 5) = 17
(2.21)
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.22)
2.2.1. Operatorul ”:„ este foarte important în MATLAB. Acesta apare în diferite forme. De pildă expresia 1:10 este un vector rând coninând întregii de la 1 la 10. Tastai: 1:10
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(2.23)
36/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
37
MATLAB va răspunde cu: ans = 1 2
(2.24) 3
4
5
6
7
8
9
10
Pentru a obine un ecart diferit de unitate între elementele vectorului astfel generat, specificai un increment. De pildă tastai: 100: -7: 50
(2.25)
MATLAB va răspunde cu: ans = 100 93 86 79 72 65 58 51
(2.26)
Tastai: 0: pi/4: pi
(2.27)
MATLAB va răspunde cu: ans = 0 0.7854 1.5708 2.3562 3.1416
(2.28)
Expresiile cu indici ce conin operatorul ”:” se referă la poriuni dintr-o matrice. De pildă A(1:k, j) reprezintă primele k elemente (rânduri) ale coloanei j ale matricei A. Astfel folosind operatorul ”:” şi funcia de sumare sum este posibil calculul sumei elementelor ă o alt ă cale ă. Operatorul coloanei a patra a matricei sum(A(1:4, Dar exist ”:” în sine, se refer elementele unui rând sau mai ale eficient unei coloane a unei ă de fapt la toate 4)). matrice şi cuvântul cheie end se referă la ultimul rând sau coloană. Prin urmare sum(A(:, end)) calculează suma elementelor de pe ultima coloană a matricei A. Dacă tastai:
sum(A(:, end))
(2.29)
MATLAB va răspunde cu: ans = 34
(2.30)
2.2.2. Indexarea logică. Vectorii logici creai din operaii logice şi relaionale pot fi folosi i pentru a face referină la subvectori. Dacă presupunem că X este o matrice clasică şi L o matrice de aceaşi dimensiune care este rezultatul unei operaii logice, atunci X(L) furnizează elementele lui X unde elementele lui L sunt diferite de zero. Indexarea elementelor unei matrice se poate efectua specificând o opera ie logică. Să presupunem că avem următorul 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
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(2.31)
37/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
38
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
NaN este un simbol pentru ( Not-a-Number). Pentru a elimina aceasta dată irelevantă utilizând indexarea logică, se foloseşte funcia finite(x), care este adevarată pentru toate valorile numerice finite şi falsă pentru NaN şi Inf . x = x(isfinite(x))
(2.32)
MATLAB va răspunde 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
(2.33)
2.3. Operaiuni de bază cu matrice MATLAB pune la dispoziia utilizatorului un număr important de funcii de calcul cu matrice.
2.3.1. Operaii matematice cu matrice. Operaiile matematice de bază cu matrice presupun utilizarea operatorilor din Tabelul 2.2. Tabel 2.2 Operator + * / \ ^
’( )
Operaie Adunare Scădere Înmulire Împărire Împărire la stânga Putere Transpusa complex Pentru ordinea operaconjugat iilor ă
Operaiile matematice efectuate asupra matricelor reprezintă obiectul de studiu al algebrei liniare. De pildă adăugând la o matrice transpusa sa se ob ine o matrice simetrică: A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1];
(2.34)
A + A'
(2.35)
ans =
(2.36)
8 3220 8 1711 2317 11 17 14 26 17 23 26 2 Operatorul de multiplicare ,*, aplicat matricelor determină multiplicarea matricelor utilizând produsul intern între rânduri şi coloane. Înmulind transpusa unei matrice cu matricea însăşi se obine o matrice simetrică:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
38/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
A'*A ans = 378 212 206 360
39
(2.37) (2.38) 212 370 368 206
206 368 370 212
360 206 212 378
Determinantul matricei A fiind zero, matricea este singulară şi nu are inversă. Dacă încercai să calculai inversa cu: X = inv(A)
(2.39)
Vei obine un mesaj de avertizare: Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.175530e-017.
(2.40)
Erorile de trunchiere îngreuiază algoritmul de detectare cu precizie a singularităii. În acest caz valoarea lui rcond , care desemnează nivelul de condiionare al matricei este de ordinul lui eps, adică precizia relativă în virgulă mobilă, deci precizia de calcul a inversei este mediocră. Valorile proprii ale matricei A se calculează cu: e = eig(A)
(2.41)
e=
(2.42)
34.0000 8.0000 0.0000 -8.0000 Matricele şi scalarii pot fi combinai în multe feluri. De pildă, în cazul în care un scalar este adunat sau înmulit cu o matrice, operaia se efectuează asupra fiecărui element al matricei. Tasta i de pildă: A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] ;
(2.43)
B = A - 8.5 Se formează astfel o matrice având sumele elementelor coloanelor egale cu zero.
(2.44)
B =
(2.45)
7.5 -3.5 0.5 -4.5
-5.5 1.5 -2.5 6.5
-6.5 2.5 -1.5 5.5
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
4.5 -0.5 3.5 -7.5
39/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
40
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
sum(B)
(2.46)
ans = 0 0
(2.47) 0
0
MATLAB permite asignarea unui anumit scalar tuturor indicilor dintr-un domeniu. De pildă, B(1:2,2:3) = 0 afectează valoarea zero unei poriuni a matricei B. B = 7.5 -3.5 0.5 -4.5
(2.48) 0 0 -2.5 6.5
0 4.5 0 -0.5 -1.5 3.5 5.5 -7.5
2.3.2. Operaii matematice element cu element. Operaiile matematice de adunare şi scădere cu matrice sau cu vectori, efectuate element cu element, sunt identice cu cele efectuate direct asupra matricelor, dar operaia de înmulire este diferită. MATLAB foloseşte operatorul punct, ".", ca parte din nota ia aferentă operaiei de înmulire a vectorilor. Lista de operatori include, Tabel 2.3: Tabel 2.3 Operator + .* ./ .\
Operaie Adunare Scădere Înmulire element cu element Împarire element cu element Împarire la stânga element cu element Putere element cu element Transpusa matricei cu elementele neconjugate complex
.^ .’
Dacă matricea A se înmuleşte cu ea însăşi folosind înmulirea vectorială element cu element A.*A
(2.49)
Rezultatul este o matrice coninând pătratele elementelor matricei A iniiale: ans = 256
(2.50) 9
4 169
25 100 121 64 81 36 49 144 16 225 196 1 Operaiile cu vectori sunt folositoare pentru construirea tablourilor. Să presupunem că n este vectorul coloană n = (0:9)'. Folosind comanda: pows = [n n.^2 2.^n]
(2.51)
putei construi un tablou cu p ătratele şi puterile lui 2 de la 0 la 9.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
40/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
41
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
(2.52)
Funciile matematice elementare operează asupra vectorilor element cu element. Tastai: format short g x = (1:0.1:2)'; logs = [x log10(x)] Răspunsul MATLAB constă în construcia unui tabel de logaritmi.
(2.53)
logs = 1.0 1.1 1.2 1.3 1.4 1.5
(2.54) 0 0.04139 0.07918 0.11394 0.14613 0.17609
1.6 1.7 0.20412 0.23045 1.8 0.25527 1.9 0.27875 2.0 0.30103
2.3.3. Funcii de informare generală. Funciile mai importante de informare generală referitoare la matrice pot fi structurate în Tabelul 2.4. Se consideră A = [1 2 3; 2 3 4], B = [1 2 3; 2 3 5]. Tabel 2.4
Funcie disp
Descriere Afişează vectori sau matrice
display
Afişează vectori sau matrice
isempty
Testează dacă vectorii sau matricele sunt goale
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
Exemplu disp(A) → 123 234 display(A) → A= 123 234 isempty(A) → 0
41/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
42
isequal isnumeric issparse isfinite isnan isinf length ndims numel size
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Testează dacă vectorii sau matricele sunt egale Testează dacă elementele vectorilor sau matricelor sunt numere Testează dacă vectorii sau matricele sunt de tip rar Testează dacă vectorii sau matricele au elemente de valoare finită Testează dacă vectorii sau matricele au elementul NaN (not a number) Testează dacă vectorii sau matricele au elementul Inf (infinity) Determină lungimea unui vector şi cea mai mare dimensiune a unei matrice Determină numărul de dimensiuni al matricelor Determină numărul de elemente al vectorilor şi matricelor Determină dimensiunile vectorilor şi matricelor
isequal(A, B) → 0 isnumeric(A) → 1 issparse(A) → 0 isfinite(A) → 1 1 1 111 isnan(A) → 0 0 0 000 isinf(A) → 0 0 0 000 length(A) → 3 ndims(A) → 2 numel(A) → 6 size(A) → 2 3
func2.5. iile Pentru MATLAB utilizate se în 2.3.4. manipul Funciiăriidematricelor prelucrare matricelor. vederea sunta cele prezentatePrintre în Tabelul exemplificare consideră A = [1 2 3; 2 3 4], B = [1 2 3; 2 3 5], C = [1 2 3], D = [2 3 4], E = [5 2; 1 3]. Tabel 2.5 Funcie blkdiag
Descriere Crează o matrice cu diagonala formată din blocuri
cat
Concatenează vectori
cross cumprod cumsum diag dot end find fliplr flipud flipdim horzcat
Exemplu blkdiag([1 2; 3 4], 2) → 1 2 0 3 4 0 0 0 2 cat(1, A, B) → 1 2 3
2 3 4 1 2 3 2 3 5 Calculează produsul vectorial a doi vectori cross(C, D) → -1 2 -1 Calculează produsul cumulativ a doi vectori cumprod(D) → 2 6 24 Calculează suma cumulativă a doi vectori cumsum(D) → 2 5 9 Defineşte sau întoarce diagonalele matricelor diag(A) → 1 3 Calculează produsul scalar a doi vectori dot(C, D) → 20 Incheie buclele for, while, switch, try, if sau A(1:end, 2) → 2 defineşte ultimul index al matricelor sau vectorilor 3 Găseşte indicii şi elementele nenule ale vectorilor find(A) → 1 2 3 4 5 6 sau matricelor Permută matricele stânga-dreapta fliplr(A) → 3 2 1 4 3 2 Permută matricele sus-jos flipud(A) → 2 3 4 1 2 3 Permută matricele după o dimensiune flipdim(A,1) → 2 3 4 1 2 3 Realizează concatenarea orizontală a matricelor horzcat(A, B) → 1 2 3 1 2 3
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
42/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
max min prod reshape rot90 sort sortrows sum sqrtm tril triu vertcat
43
2 3 4 2 3 5 Calculează maximul elementelor unui vector sau max(C) → 3 maximul elementelor după o anumită direcie Calculează minimul elementelor unui vector sau max(C) → 1 minimul elementelor după o anumită direcie Calculează produsul elementelor unui vector prod(C) → 6 Crează o altă matrice de dimensiuni impuse reshape(A,3,2) → 1 3 2 3 2 4 Roteşte o matrice cu 90˚ rot90(A) → 3 4 2 3 1 2 Sortează elementele în ordine crescătoare sort(E) → 1 2 5 3 Sortează rândurile în ordine crescătoare sortrows(E) → 1 3 5 2 Însumează elementele unui vector sum(C) → 6 Calculează matricea radical, adică matricea care se sqrtm(E) → 2.2065 0.5128 obine astfel încât X*X = E 0.2564 1.6937 Returnează elementele de sub diagonala principal ă tril(E) → 5 0 a unei matrice, inclusiv aceasta (triunghiul 1 3 inferior) Returnează elementele de deasupra diagonalei triu(E) → 5 2 principale a unei matrice, inclusiv aceasta 0 3 (triunghiul superior) Realizează concatenarea verticală a matricelor vertcat(A, B) → 1 2 3 2 3 4 1 2 3 2
3
5
De pildă dacă efectuai suma elementelor matricei particulare A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] de-a lungul oricărui rând sau coloană, sau de-a lungul oricărei diagonale principale, vei obine întotdeauna acelaşi număr. Să verificăm această caracteristică a matricei A în MATLAB. Întâi să efectuăm suma elementelor de pe coloanele matricei. Pentru aceasta vom folosi funcia sum(A) care realizează tocmai acest lucru: sum(A) MATLAB răspunde cu:
(2.55)
ans = 34 34 34 34
(2.56)
Folosind funcia sum(A) se calculează un vector linie coninând sumele elementelor de pe coloanele matricei A. Pe fiecare coloană se obine aceeaşi sumă, 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 funcie sum pe matricea transpusă şi în final de a transpune rezultatul folosind aceea şi funcie de transpunere a matricelor. Func ia
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
43/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
44
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
de transpunere a matricelor este A’, şi constă în 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
(2.57)
(2.58)
Aplicând funcia: sum(A')' MATLAB va răspunde cu: ans = 34 34 34 34
(2.59)
(2.60)
Suma elementelor de pe diagonala principală se obine folosind funciile sum şi diag. Funcia diag(A) scoate ca rezultat un vector coninând elementele de pe diagonala principală. Tastai: diag(A)
(2.61)
MATLAB va răspunde cu: ans = 16 10 7 1 Tastând:
(2.62)
sum(diag(A))
(2.63)
se va obine rezultatul dorit: ans = 34
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(2.64)
44/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
45
Suma elementelor de pe anti-diagonala matricei A, se poate obine folosind funcia, fliplr, care generează matricea permutată stanga-dreapta (flip left-right). Astfel pentru a obine suma dorită tastai: sum(diag(fliplr(A)))
(2.65)
MATLAB va răspunde cu: ans = 34
(2.66)
Aflarea dimensiunilor matricelor şi vectorilor este posibilă folosind funciile size şi length. Deoarece matricea A este o matrice 4x4, executând comanda size(A) se obine: size(A)
(2.67)
ans = 4 4
(2.68)
Funcia find determină indicii elementelor unui vector care îndeplinesc o condi ie logică dată. În forma sa cea mai simpla, find întoarce un vector coloană de indici cu elemente nenule. Transpunând acel vector se obine un vector de tip rând de indici. Dacă definim B = [ 0 1 2; 1 0 3; 1 2 0] şi aplicăm funcia find , găsim locaiile numerelor nenule folosind indexarea unidimensională în matricea B: k = find(B)'
(2.69)
k = 2
(2.70) 3
4
6
7
8
Pentru a afişa acele numere nenule ca un vector rând în ordinea determinat ă de k, folosim operaia B(k) ans = 1 1
(2.71) 1
2
2
3
Când folosii vectorul k drept index stânga într-o instruciune de asignare, structura matricei este păstrată. De pildă tastai: B(k) = NaN (2.72) = B (2.73) 0 NaN NaN NaN 0 NaN NaN NaN 0
2.3.5. Concatenarea şi reconfigurarea matricelor. Concatenarea este procesul de alăturare a matricelor mici pentru a construi matrice mai mari. De fapt, o matrice reprezint ă concatenarea elementelor sale individuale. Perechea de paranteze p ătrate, [ ] , este operatorul
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
45/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
46
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
de concatenare. De pildă, plecând de la matricea A, construii matricea B = [A A+32; A+48 A+16] . Rezultatul este o matrice 8 x 8, obinută alăturând cele patru sub-matrice. 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
(2.74)
Sumele elementelor de pe coloanele matricei B se obin folosind funcia sum(B): ans = 260 260 260 260 260 260 260 260
(2.75)
Sumele elementelor de pe rândurile matricei B se obin folosind funcia sum(B')'. ans = 196 196 196 196 324
(2.76)
324 324 324 Putei şterge rânduri şi coloane dintr-o matrice folosind doar o pereche de paranteze pătrate. Începei cu X = A. Apoi, pentru a şterge cea de-a doua coloan ă a lui X , folosii X(:, 2) = [ ] . Astfel X devine: X = 16 2 13 5 11 8 94
(2.77)
714 121
Dacă ştergei un singur element dintr-o matrice, rezultatul nu mai este o matrice. Deci expresii ca X(1, 2) = [ ] sunt incorecte şi generatoare de erori.
2.3.6. Funcii de analiză matriceală. MATLAB include o bibliotecă de funcii de analiză matriceală din care fac parte cele din Tabelul 2.6. Pentru exemplificare se consider ă B = [5 2; 1 3].
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
46/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Tabel 2.6 Funcie cond det eig norm rank trace
Descriere Numărul de condiionare Calculează determinantul unei matrice Calculează valorile proprii ale unei matrice Calculează norma unei matrice sau a unui vector Calculează rangul unei matrice Calculează urma unei matrice sau suma elementelor de pe diagonala principală
47
Exemplu cond(B) → 2.6180 det(B) → 13 eig(B) → 5.7321 2.2679 norm(B) → 5.8339 rank(B) → 2 trace(B) → 8
2.4. Rezolvarea sistemelor de ecuaii liniare folosind operaii cu matrice Una dintre problemele importante în calculul tehnic const ă în soluionarea simultană a ecuaiilor liniare. În limbaj matriceal, această problemă poate fi formulată după cum urmează: Fiind dat ă o matrice A şi un vector B , exist ă un vector unic X astfel încât AX = B sau XA = B ? Putem considera în prima fază exemplul unei matrice A de dimensiune 1x1, A = 7 şi B = 21. Are ecuaia 7 . X = 21 o soluie unică ? Bineîneles şi soluia aceasta este obinută prin împărire, X = 21/7 = 3. Soluia nu este în general obinută prin calculul inversului lui 7 , adică 7 -1 = 0.142857 ..., şi apoi prin înmulirea lui 7 -1 cu 21. Aceste operaiuni ar presupune mai multe calcule şi, dacă 7 -1 este reprezentat de un numar finit de digi i, operaiunile ar putea conduce la un rezultat afectat de erori. Considera ii similare sunt ii liniare valabile în cazul ecua seturilor mai mult o ănecunoscut . MATLAB rezolv ă asemenea ii f ărde ă aecua calcula inversacumatricei. Celededou simboluri ăde împărire, ”/” şi ”\” sunt folosite pentru cele două situaii în care matricea necunoscută apare în stânga sau în dreapta matricei coeficienilor. • X = A\B reprezintă soluia ecuaiei matriceale AX = B. • X = B/A reprezintă soluia ecuaiei matriceale XA = B.
În practică, ecuaiile liniare de forma AX = B sunt mult mai frecvente decât cele de forma XA = B. Matricea coeficienilor A nu trebuie să fie neapărat pătratică. Dacă A este de dimensiune ă treipatratic, cazuri posibile: m • x mn,=exsist n sistem caz în care se caută o soluie exactă.
• m > n sistem supradeterminat, caz în care se caută o soluie în sensul celor mai mici
patrate. • m < n sistem subdeterminat, caz în care se caută o soluie de bază cu cel mult m componente nenule. Cazul cel mai frecvent întâlnit în practic ă este cel în care m = n şi în care avem de a face cu un sistem pătratic.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
47/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
48
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Dacă matricea A este singulară, soluia ecuaiei AX = B fie nu există, fie nu este unică. Operaia A\B generează un mesaj de avertizare dacă matricea A este aproape singulară şi un mesaj de eroare dacă matricea A este singulară.
2.4.1. Formularea matriceală a sistemelor de ecuaii liniare. Fie următorul sistem de ecuaii liniare: 3x + 2y – z = 10 - x + 3y + 2z = 5 x - y - z = -1
(2.78)
Acest sistem poate fi pus sub forma matriceal ă AX = B unde: • matricea A = [3 2 -1; -1 3 2; 1 -1 -1]; • vectorul X = [x; y; z]; • vectorul B = [10; 5; -1];
2.4.2. Rezolvarea sistemelor prin împărirea matricelor. O metodă de rezolvare a sistemelor de ecuaii liniare constă în împărirea matricelor. În cazul aplicaiei numerice de mai sus rezolvarea ecuaiei matriceale presupune împărirea la stânga a matricelor: AX = B
=> X = A \ B
(2.79)
Astfel pentru a rezolva aplicaia numerică de mai sus se face apel la următoarea secvenă de comenzi MATLAB: A = [3 2 -1; -1 3 2; 1 -1 -1]; B = [10; 5; -1]; X = A\B Rezultatul calculelor efectuate este următorul:
(2.80)
X = [-2.0000; 5.0000; -6.0000]
(2.81)
Ceea ce semnifică faptul că soluia sistemului este: x = -2, y = 5 şi z = -6 .
2.4.3. Rezolvarea sistemelor prin inversarea matricelor. O altă metodă de rezolvare a sistemelor de ecuaii liniare constă în inversarea matricelor. În cazul aplicaiei numerice de mai sus rezolvarea ecuaiei matriceale presupune inversarea matricei A. Astfel înmulind la stânga sistemul matriceal AX = B cu A-1 se obine: A-1 AX = A-1 B
=>
I X = X = A -1 B
(2.82)
Inversarea unei matrice în MATLAB presupune utilizarea funciei specifice inv. Astfel pentru a rezolva aplicaia numerică de mai sus se face apel la următoarea secvenă de comenzi MATLAB: A = [3 2 -1; -1 3 2; 1 -1 -1]; B = [10; 5; -1];
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(2.83)
48/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
49
X = inv(A)*B Rezultatul calculelor efectuate este acelaşi cu cel obinut prin metoda împăririi matricelor: X = [-2.0000; 5.0000; -6.0000]
(2.84)
Aceasta semnifică faptul că soluia sistemului este x = -2, y = 5 şi z = -6 . Folosind ansamblul de comenzi de cronometrare a timpului de calcul tic toc se poate constata că metoda de rezolvare a sistemelor folosind inversarea matricelor conduce la un timp de calcul sensibil mai lung decât metoda împ ăririi matricelor.
2.5. Aplicaii numerice APLICA IA 1: Genera i o matrice 4x4 cu numere reale aleatoare cuprinse între 0 şi 100 folosind func ia MATLAB rand. Se foloseşte comanda MATLAB: 100*rand(4, 4) În urma lansării în execuie a comenzii anterioare rezultatul MATLAB este similar cu cel de mai jos: ans = 95.0129 89.1299 82.1407 92.1813 23.1139 76.2097 44.4703 73.8207 60.6843 45.6468 61.5432 17.6266 48.5982 1.8504 79.1937 40.5706 APLICA IA 2: Genera i matricea A =[16 2 3 NaN; NaN 11 10 8; Nan 7 6 12; 4 Nan 15 1]. Afecta i valoarea zero elementelor NaN ale matricei A şi afi şati rezultatul pe ecran folosind func ia MATLAB isnan de găsire a elementelor care nu sunt numere (care sunt NaN – Not a Number ) ale unei matrice. Se foloseşte setul de comenzi MATLAB: A = [16 2 3 nan; nan 11 10 8; nan 7 6 12; 4 nan 15 1] A (isnan(A)) = 0 Rezultatul MATLAB va fi:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
49/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
50
A = 16 2 3 NaN 11 NaN 7 4 NaN
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
NaN 10 8 6 12 15 1
A = 16 2 3 0 0 11 10 8 0 7 6 12 4 0 15 1 APLICA IA 3: Crea i într-un editor exterior MATLAB-ului (de pild ă Notepad) un fi şier text matrice.dat sau matrice.txt con inând următoarele date: 16.0 3.0 11.0 2.0 13.0 5.0 10.0 8.0 9.0 6.0 7.0 12.0 4.0 15.0 14.0 1.0 Importa i fi şierul în MATLAB workspace folosind una din sintaxele func iei ”load”: load matrice.dat sau load matrice.txt.
Se deschide aplicaia Windows Notepad şi se tastează valorile de mai jos separate de tab. 16.0 3.0 2.0 13.0 5.0 9.0 10.0 6.0 11.0 7.0 8.0 12.0 4.0 15.0 14.0 1.0 Se salvează informaiile de mai sus în directorul curent, în fişierul cu numele matrice.txt . Se încarcă în Workspace matricea de mai sus în variabila A, folosind comanda MATLAB : A = load('matrice.txt'); APLICA IA 4: Se dau vectorii x = [1 5 2 8 9 0 1] şi y = [5 2 2 6 0 0 2]. Executa i comenzile de mai jos şi explica i rezultatele ob inute: x > y y < x y(y= x x | y (În MATLAB operatorul ”|” înseamnă ”sau” logic) x & y (În MATLAB operatorul ”&” înseamnă ” şi” logic)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
50/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
51
x & (~y) (x > y) | (y < 4) (x > y) & (x < y)
Se lansează setul de comenzi MATLAB: x = [1 5 2 8 9 0 1] y = [5 2 2 6 0 0 2] x > y ans = 0 1 0 1 1 0 0 Vectorul obinut mai sus are aceeaşi lungime cu x şi cu y, iar elementul k are valoarea 0 acolo unde x(k) ≤ y(k), respectiv valoarea 1 acolo unde x(k) > y(k). y < x ans = 0
1
0
1
1
0
0
Vectorul obinut este identic cu cel obinut în urma apelului comenzii x > y. y(y
6
0
Se obine un vector ce conine toate elementele k ale vectorului y ce verifică următoarea condiie y(k) < x(k). x == y ans = 0
0
1
0
0
1
0
Vectorul obinut are aceeaşi lungime cu x şi cu y, elementul k având valoarea 0 acolo unde condiia x(k) = y(k) nu este îndeplinită, respectiv valoarea 1 acolo unde condiia x(k) = y(k) este îndeplinită. x <= y ans = 1
0
1
0
0
1
1
Se obine un vector de aceeaşi lungime cu x şi cu y în care elementul k are valoarea 0 acolo unde x(k) > y(k), respectiv valoarea 1 acolo unde x(k) ≤ y(k). y >= x ans = 1
0
1
0
0
1
1
Răspunsul este identic cu cel obinut în urma apelului comenzii x <= y. x | y ans = 1 1 1 1 1 0 1 Se obine un vector de aceeaşi lungime cu x şi cu y în care elementul k are valoarea 0 acolo unde x(k) = 0 şi y(k) = 0, respectiv valoarea 1 acolo unde x(k) ≠ 0 sau y(k) ≠ 0. x & y ans = 1
1
1
1
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
0
0
1
51/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
52
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Vectorul obinut are aceeaşi lungime cu x şi cu y, elementul k având valoarea 0 acolo unde x(k) = 0 sau y(k) = 0, respectiv valoarea 1 acolo unde x(k) ≠ 0 şi y(k) ≠ 0. x & (~y) ans = 0
0
0
0
1
0
0
Vectorul obinut are aceeaşi lungime cu x şi cu y, elementul k având valoarea 0 acolo unde x(k) = 0 sau y(k) ≠ 0, respectiv valoarea 1 acolo unde x(k) ≠ 0 şi y(k) = 0. (x > y) | (y < 4) ans = 0 1 1
1
1
1
1
Se obine un vector de aceeaşi lungime cu x şi cu y în care elementul k are valoarea 0 acolo unde x(k) ≤ y(k) şi y(k) ≥ 4, respectiv valoarea 1 acolo unde x(k) > y(k) sau y(k) < 4. (x > y) & (x < y) ans = 0 0 0
0
0
0
0
Se obine un vector de aceeaşi lungime cu x şi cu y în care toate elementele sunt nule întrucât condiiile x > y şi x < y sunt contradictorii şi nu pot fi îndeplinite simultan niciodată. APLICA IA 5: 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 şi afi şati-le pe ecran. Se face apel la setul de comenzi MATLAB: A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]; A>10; A(A>10)' Răspunsul MATLAB este următorul: ans = 16 11 14 15 13 12 APLICA IA 6: Crea i matricea A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1] si determina i numărul de elemente şi dimensiunile matricei folosind func iile MATLAB numel , şi size. Se foloseşte setul de comenzi MATLAB: A = [16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]; numel(A) size(A) Răspunsul MATLAB este: ans = 16
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
52/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
ans = 4
53
4
Prin urmare matricea A are 16 elemente şi are dimensiunile 4 x 4. IA 7: APLICA Să se creeze în directorul curent un fi şier script care să genereze o matrice A de dimensiune 10 x 10 şi un vector B de dimensiune 10 x 1, ambele cu elemente aleatoare cuprinse între 0 şi 100. Apoi să se determine numărul de condi ionare al matricei A şi să se rezolve sistemul AX = B prin dou ă metode.
Se folosesc comenzile MATLAB: A = 100*rand(10, 10); B = 100*rand(10, 1); cond(A) X1= X2= A\B inv(A)*B Răspunsul MATLAB este similar cu cel de mai jos: ans = 110.7713 X1 = 3.8843 2.5836 -0.9715 -1.2489 0.9733 -3.9952 -0.6386 -0.6295 -0.0911 -0.4651 X2 = 3.8843 2.5836 -0.9715 -1.2489 0.9733 -3.9952 -0.6386 -0.6295 -0.0911 -0.4651
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
53/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
54
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Prin urmare numărul de condiionare al matricei este 110.7713 iar soluia ecuaiei este fie X1 fie X2. APLICA IA 8: Crea ad ă4ugând la Genera fiecare din elementele matricei =[16 2 3egale 13; cu5 ă matrice 11 10i o8;matrice 9 7 6 B12; 14 15161]. i o nou C avândA elementele r ăd ăcina pătrat ă a elementelelor matricei B. Genera i o nouă matrice D având elementele egale cu pătratul elementelelor matricei C. Folosi i func ia sqrt de extragere a radicalului.
Se face apel la setul de comenzi MATLAB de mai jos: A =[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]; B = A + 16 C = sqrt(B) D = C.^2 Răspunsul MATLAB este: B = 32 21 25 20
18 27 23 30
19 26 22 31
29 24 28 17
C = 5.6569 4.5826 5.0000 4.4721
4.2426 5.1962 4.7958 5.4772
4.3589 5.0990 4.6904 5.5678
5.3852 4.8990 5.2915 4.1231
D = 32.0000 21.0000 25.0000 20.0000
18.0000 27.0000 23.0000 30.0000
19.0000 26.0000 22.0000 31.0000
29.0000 24.0000 28.0000 17.0000
APLICA IA 9: 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. Se folosesc comenzile MATLAB: n = 1:100; Xn = (-1).^(n+1)./(2*n-1);
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
54/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
55
Suma = sum(Xn) Răspunsul MATLAB este: Suma = 0.7829 APLICA IA 10: Calcula i numeric limita seriei ∑ Xn pentru n=1... ∞ , în care Xn=1/[n(n+1)]. Vom calcula seria pentru valori din ce în ce mai mari ale lui n folosind seturile de comenzi MATLAB de mai jos: n = 1:100; Xn = 1./(n.*(n+1)); format long Suma = sum(Xn) Funcia format long permite afişarea răspunsul cu mai multe zecimale pentru a evidenia mai clar evoluia acestuia. MATLAB va răspunde cu: Suma = 0.99009900990099 n = 1:1000 Xn = 1./(n.*(n+1)) Suma = sum(Xn) MATLAB va răspunde cu: Suma = 0.99900099900100 n = 1:10000 Xn = 1./(n.*(n+1)) Suma = sum(Xn) MATLAB va afişa răspunsul: Suma = 0.99990000999900 n = 1:100000 Xn = 1./(n.*(n+1)) Suma = sum(Xn) MATLAB va răspunde cu: Suma = 0.99999000010001
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
55/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
56
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Se observă că pe măsură ce n creşte Suma tinde asimptotic la 1. Deci limita seriei este 1. APLICA IA 11: Calcula i valorile curen ilor I 1 , I 2 , I 3 folosind teoremele lui Kirchoff şi opera iile cu ii pune i-le sub forma [R]*[I]=[U], unde [R] matrice Cele 3ă de ecuadimensiune reprezint ădino MATLAB. matrice cunoscut 3x3, [I] reprezint ă un vector coloană necunoscut care con ine cei 3 curen i, iar [U] reprezint ă un vector coloană cunoscut.
7V I1
I2 1Ω
I3 2Ω
3 Ω
12 V
Se scriu ecuaiile lui Kirchoff corespunzătoare circuitului studiat: I1 + I3 I1 -+I2 2·I2 = 7= 0 2·I2 + 3·I3 = 12 Sistemul de ecuaii trebuie pus sub forma matriceală [R]·[I] = [U] ca mai jos: 1·I1 - 1·I2 + 1·I3 = 0 1·I1 + 2·I2 + 0·I3 = 7 0·I1 + 2·I2 + 3·I3 = 12
1 − 1 1 I 1 0 adică sub forma: 1 2 0 ⋅ I 2 = 7 0 2 3 I 3 12 Setul de comenzi MATLAB care generează matricele cunoscute [R] şi [U] este: R = [1 -1 1; 1 2 0; 0 2 3]; U = [0; 7; 12];
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
56/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
57
Soluia sistemului se obine cu una din comenzile MATLAB de mai jos: I = R\U sau I = inv(R)*U MATLAB va răspunde cu: I = 1.0000 3.0000 2.0000 Deci valorile celor trei cureni sunt: I1 = 1 A I2 = 2 A I3 = 3 A
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
57/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
58
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
3. FUNCII MATEMATICE UZUALE MATLAB pune la dispoziia utilizatorului o bibliotecă bogată de funcii matematice de diferite tipuri.
3.1. Funcii de aproximare a numerelor Funciile MATLAB de rotunjire a numerelor sunt prezentate succint în Tabelul 3.1. Tabel 3.1 Funcia ceil fix floor round rem mod rat rats sign
Descriere Exemplu Returnează un număr întreg rotunjit la cel mai apropiat ceil(3.2) → 4 număr întreg spre +infinit Returnează un număr întreg rotunjit la cel mai apropiat fix(-3.2) → -3 număr întreg spre zero Returnează un număr întreg rotunjit la cel mai apropiat număr întreg spre –infinit Returnează un număr întreg rotunjit la cel mai apropiat număr întreg Returnează restul împăririi argumentelor Returnează modulul restul împăririi argumentelor Returnează aproximarea unui număr cu fracii raionale continue Returnează aproximarea unui număr cu fracii raionale Returnează semnul argumentului
floor(3.2) → 3 round(3.2) → 3 rem(-5,2) → -1 mod(-5,2) → 1 rat(5.2) → 5 + 1/(5) rats(5.2) → 26/5 sign(-5.2) → -1 sign(5.2) → +1 sign(0) → 0
Funciile de mai sus pot fi aplicate unor scalari sau pot fi aplicate element cu element unor matrice sau vectori.
3.2. Funcii de operare cu numere complexe Operaiile principale specifice numerelor complexe din pachetul MATLAB sunt prezentate în Tabelul 3.2. Tabel 3.2 Funcia abs angle unwrap conj imag
Descriere Calculează (valoarea absolută) modulul numerelor complexe Calculează faza numerelor complexe Calculează pările reală şi imaginară a numerelor complexe exprimate sub formă polară Calculează conjugata complexă a numerelor complexe Calculează partea imaginară a numerelor complexe
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
Exemplu abs(3+4i) → 5 angle(1+i) → 0.7854 unwrap(1+i) → 1+i conj(1+i) → 1-i imag(1+3i) → 3
58/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
real complex isreal
59
Calculează partea reală a numerelor complexe real(3+i) → 3 Construieşte numere complexe dacă se cunosc complex(2,3) → 2+3i pările reală şi imaginară Determină dacă elementele matricelor sau vectorilor isreal([2 3]) → 1 sunt numere reale
Operaiile aritmetice clasice rămân valabile pentru numerele complexe, respectiv pentru vectori şi matrice având ca elemente numere complexe, Tabel 3.3. Tabel 3.3 Operator + * / \
’^ ()
Operaie Adunare Scădere Înmulire Împărire Împărire la stânga Putere Transpusa complex conjugată Pentru ordinea operaiilor
3.3. Funciile putere, radical, logaritm şi exponenială Funciile MATLAB de ridicare la putere, de extragere a radicalului, de calcul al logaritmului şi al exponenialei sunt prezentate în Tabelul 3.4. Tabel 3.4 Funcia ^ power mpower exp log log2 log10 nextpow2 pow2 sqrt reallog realpow realsqrt
Descriere Ridicare la putere a numerelor sau matricelor Ridicare la putere a numerelor sau matricelor element cu element Ridicare la putere a matricelor Calculează exponeniala Calculează logaritmul natural Calculează logaritmul în baza 2 Calculează logaritmul în baza 10 Calculează puterea N a lui 2 care majorează modulul lui 2N Calculează puterea lui 2 Calculeaz de ordinul 2 al numerelor Calculeazăă radicalul logaritmul natural pentru numere pozitive Calculează puterea numerelor pozitive Calculează radicalul de ordinul 2 al numerelor pozitive
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
Exemplu 2^2 → 4 power(2,2) → 4 mpower(2,2) → 4 exp(2) → 7.3891 log(7.3891) → 2 log2(4) → 2 log10(100) → 2 nextpow2(15) → 4 pow2(5) → 32 sqrt(36) reallog(9)→→6 2.1972 realpow(2,3) → 8 realsqrt(16) → 4
59/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
60
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
3.4. Funcii trigonometrice MATLAB dispune de o bibliotecă bine pusă la punct de funcii trigonometrice care sunt prezentate în Tabelul 3.5. Funciile trigonometrice pot aciona asupra unor scalari sau asupra elementelor unor vectori sau matrice, în func ie de tipul argumentului transmis. Unghiurile sunt în general considerate în radiani. Tabel 3.5 Funcia sin asin sinh
Descriere Calculează sinusul argumentului Calculează arcsinusul argumentului Calculează sinusul hiperbolic al argumentului
asinh cos acos
Calculează arcsinusul hiperbolic al argumentului Calculează cosinusul argumentului Calculează arcosinusul argumentului
cosh acosh tan atan tanh
Calculează cosinusul hiperbolic al argumentului Calculează arcosinusul hiperbolic al argumentului Calculează tangenta argumentului Calculează arctangenta argumentului Calculează tangenta hiperbolica a argumentului
atanh
Calculează arctangenta hiperbolică a argumentului
cot acot coth
Calculează cotangenta argumentului Calculează arcotangenta argumentului Calculează cotangenta hiperbolică a argumentului
acoth sec asec sech
Calculează arcotangenta hiperbolică a argumentului Calculează secanta argumentului Calculează arcsecanta argumentului Calculează secanta hiperbolică a argumentului
asech csc acsc csch
Calculează arcsecanta hiperbolică a argumentului Calculează cosecanta argumentului Calculează arccosecanta argumentului Calculează cosecanta hiperbolică a argumentului
acsch
Calculează arccosecanta hiperbolică a argumentului
Exemplu sin(pi/2) → 1 asin(1) → 1.5708 sinh(2+2i) → -1.5093 + 3.4210i asinh(2) → 1.4436 cos(pi) → -1 acos(-1) → 3.1416 → + 3.2979i cosh(2+2i) -1.5656 acosh(2) → 1.3170 tan(pi/4) → 1 atan(1) → 0.7854 tanh(2+2i) → 1.0238 - 0.0284i atanh(2) → 0.5493 + 1.5708i cot(pi/4) → 1 acot(1) → 0.7854 coth(2+2i) → 0.9760 + 0.0271i acoth(2) → 0.5493 sec(pi) → -1 asec(-1) → 3.1416 sech(2+2i) → -0.1175 - 0.2475i asech(2) → 1.0472i csc(pi/2) → 1 acsc(1) → 1.5708 csch(2+2i) → -0.1080 - 0.2447i
acsch(2) → 0.4812
3.5. Funcii de matematică discretă MATLAB conine un ansamblu de funcii de matematică discretă cum ar fi funciile de calcul al divizorilor şi multiplilor comuni etc. după cum sunt prezentate în Tabelul 3.6.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
60/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Tabel 3.6 Funcia factor
Descriere Întoarce un vector ce conine factorii primii ai unui număr n Calculează factorialul unui număr n Calculează cel mai mare divizor comun a două numere Calculează cel mai mic multiplu comun a dou ă numere Întoarce un vector ce conine numerele prime mai mici decât n Determină dacă elementele unui vector sau matrice sunt numere prime Calculează combinări de n luate câte k Calculează toate permutările posibile
factorial gcd lcm primes isprime nchoosek perms
61
Exemplu factor(39) → 3 13 factorial(4) → 24 gcd(115, 35) → 5 lcm(115, 35) → 805 primes(7) → 2 3 5 7 isprime([4 5 7]) → 0 1 1 nchoosek(3, 2) → 3 perms([2, 3]) → 3 2 23
3.6. Aplicaii numerice APLICA IA 12: Se d ă un transformator monofazat func ionând în gol şi având următoarele date: R1=1Ω , X σ 1=2Ω , Rw= 2000 Ω , X m= 2000 Ω. Tensiunea primar ă este U 1=220 V. Să se scrie un fi şier script care să aibă ca parametri datele transformatorului şi care să permit ă calculul mărimilor: a) Curentul I 10 şi tensiunea U 20’ în gol, b) Puterile activă P şi reactivă Q absorbite de transformator. 10
I10 R1 U 1
10
jXσ1
Rw jXm U20’
Folosind setul de comenzi MATLAB de mai jos se definesc mărimile cunoscute, caracteristice transformatorului: R1 = 1; Xs1 = 2; Xm = 2000; Rw = 2000; U1 = 220;
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
61/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
62
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Pentru a calcula mărimile cerute se face apel la comenzile MATLAB: I10 = U1/(R1 + j*Xs1 + j*Rw*Xm/(Rw + j*Xm)) U20p = I10*j*Xm*Rw/(Rw + j*Xm) P10 = R1*abs(I10^2) + abs(U20p^2)/Rw Q10 = Xs1*abs(I10^2) + abs(U20p^2)/Xm Răspunsul MATLAB va fi: I10 = 0.1098 - 0.1099i U20p = 2.1967e+002 -1.0967e-001i P10 = 24.1517 Q10 = 24.1758 APLICA IA 13: Să se genereze un vector X=1:10 şi un vector Y cu 10 de elemente numere întregi aleatoare între 0 şi 100. Programul va crea un alt vector Y1 care se ob ine înlocuind cu 0 toate numerele divizibile cu 7 şi va afi şa cei trei vectori X, Z, Y1. Se folosesc instruciunile MATLAB: X = 1 :10 Y = round(100*rand(1, 10)) Y1 = Y ; Y1(rem(Y1, 7)==0) = 0 MATLAB va afişa cei trei vectori în mod similar ca în exemplul de mai jos : X = 1 2 3 4 5 6 7 8 9 10 Y = 84 37 62 73 19 90 57 63 23 55 Y1 = 0 37 62 73 19 90 57 0 23 55 APLICA IA 14: Să se genereze vectorul x=[3 15 9 12 -1 0 -12 9 6 1] şi să se precizeze comenzile care vor efectua următoarele opera iuni: a) crează un vector y1 care con ine valorile vectorului x însă în care toate valorile pozitive sunt egalate cu zero b) creazădeun vector y2 care multiple 3 sunt egalate cu 3 con ine valorile vectorului x însă în care toate numerele c) crează un vector y3 care con ine valorile vectorului x însă multiplicând cu 5 valorile pare ale lui x d) extrage valorile lui x care sunt mai mari ca 10 şi le grupează într-un vector y4 e) crează un vector y5 care con ine valorile vectorului x însă în care toate valorile mai mici decât media elementelor sunt egalate cu zero f) crează un vector y6 care con ine valorile vectorului x însă în care toate valorile mai mari decât media elementelor sunt egalate cu diferen a acestora fa ă de medie.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
62/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
63
Comenzile MATLAB necesare pentru generarea vectorilor x, y1, y2 … y6 sunt următoarele: x=[3 15 9 12 -1 0 -12 9 6 1] y1 = x; y1(y1>0) = 0 y2 = x; y2(rem(y2, 3) == 0) = 3 y3 = x; y3(rem(y3, 2) == 0) = y3(rem(y3, 2) == 0)*5 y4 = x; y4 = y4(y4>10) y5 = x; y5(y5sum(y6)/length(y6)) = y6(y6>sum(y6)/length(y6)) - sum(y6)/length(y6) Răspunsurile MATLAB corespunzătoare sunt:
x = 3 15 9 y1 = 0 0 0 y2 = 3 3 3 y3 = 3 15 9
12 0 3 60
-1 0 -12 9 -1 0 -12 0 -1 3 3 3 -1 0 -60 9
6 1 0 0 3 1 30 1
y4y5==150 12 15 9 12 0 0 0 9 6 0 y6 = 3.0000 10.8000 4.8000 7.8000 -1.0000 1.0000
0 -12.0000 4.8000 1.8000
APLICA IA 15: Afecta i valoarea zero elementelor matricei A =[16 5 4 1; 5 1 10 6; 3 7 6 1; 2 1 13 10] care nu sunt prime şi afi şati rezultatul pe ecran folosind func ia MATLAB ”~isprime” de găsire a numerelor neprime aplicat ă unei matrice. În MATLAB operatorul ”~” înseamnă ”nu logic”). Se folosesc următoarele comenzi MATLAB: A = [16 5 4 1; 5 1 10 6; 3 7 6 1; 2 1 13 10] ; A(~isprime(A)) = 0 MATLAB va răspunde cu: A = 0 5 0 0 5 0 0 0 3 7 0 0 2 0 13 0 APLICA IA 16: Să se calculeze cel mai mic divizor comun al numerelor 55878, 112782, 1278. Se folosesc următoarele instruciuni MATLAB: ab = gcd(55878, 112782); cmmdc = gcd(ab, 1278)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
63/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
64
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
MATLAB va răspunde cu: cmmdc = 6 Deci cel mai mic divizor comun al celor trei numere naturale este 6.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
64/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
65
4. FUNCII MATLAB DE INTERES GENERAL 4.1. Expresii MATLAB Ca alte limbaje de programare, MATLAB pune la dispoziie expresii matematice, dar spre deosebire de multe alte limbaje de programare aceste expresii lucreaz ă cu matrice. În clasa expresiilor pot fi incluse variabilele, numerele, operatorii şi funciile.
4.1.1. Variabile. MATLAB nu necesită nici un tip de instruciuni de declaraie sau dimensionare a variabilelor. Când MATLAB întâlneşte un nou nume de variabilă, acesta crează automat variabila şi alocă memoria necesară. Dacă variabila deja există, MATLAB schimbă coninutul acesteia şi dacă este necesar alocă o altă cantitate de memorie. De pild ă tastai: (4.1) num_studenti = 25 MATLAB crează o matrice 1x1 numita num_studenti şi alocă valoarea 25 singurului element al matricei. Numele de variabile constau dintr-o liter ă, urmată de un număr de litere, cifre, etc. MATLAB foloseşte doar primele 31 caractere ale unui nume de variabilă. MATLAB face deosebirea între litere mari şi mici (este case sensitive). A şi a nu reprezintă aceeaşi variabilă. Pentru a vizualiza matricea asociat ă oricărei variabile, tastai numele acestei variabile.
4.1.2. Numere. MATLAB foloseşte pentru numere notaia zecimală convenională, cu punct zecimal opional şi semne plus sau minus. Notaia ştiinifică foloseşte litera e pentru a specifica 10 la o putere. Numerele imaginare folosesc fie i fie j ca sufix. Iată câteva exemple de numere: 3 -99 0.0001 9.6397238 1.60210e-20 6.02252e23 1i -3.14159j 3e5i
(4.2)
Toate numerele sunt stocate intern folosind formatul long standardizat. Având o precizie de circa 16 cifre semnificative, variind între aproximativ 10-308 şi 10+308.
4.1.3. Operatori. Operatorii aritmetici familiari folosii în MATLAB sunt prezentai în Tabelul 4.1. Tabel 4.1 Operator + * / \
Operaie Adunare Scădere Înmulire Împărire Împărire la stânga
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
65/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
66
^ ’ ()
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Putere Transpusa complex conjugată Pentru ordinea operaiilor
4.1.4. Funcii. MATLAB pune la dispoziia utilizatorului un mare număr de funcii matematice standard, cum ar fi de pild ă abs, sqrt, exp, şi sin. Scoând radical sau aplicând logaritm unui 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 pild ă cazul funciilor Bessel. Multe dintre aceste funcii acceptă argumente complexe. O listă a funciilor elementare se poate obine tastând help elfun. Pentru a obine o listă a funciilor mai avansate de matematică şi de manipulare a matricelor tastai help specfun, help elmat. Anumite funcii cum ar fi sqrt şi sin, sunt incluse în MATLAB core. Acestea sunt prin urmare foarte eficiente, dar detaliile de calcul nu sunt uşor accesibile. Alte funcii ca sinh, sunt implementate în fişiere de tip M având codul accesibil, acesta putând fi chiar modificat. Diverse funcii speciale furnizează valori ale unor constante folositoare, ca în Tabelul 4.2. Tabel 4.2 pi i j eps realmin realmax Inf NaN
3.14159265... sqrt(-1) sqrt(-1) Precizia relativă în virgulă mobilă 2-52 Cel mai mic număr în virgulă mobilă 2-1022 Cel mai mare număr în virgulă mobilă (2-eps)21023 Infinit Not a number
ărirea cu zero a uni număr ne-nul, sau prin evaluarea este generat Infinite (Inf) unor expresii matematice careprin depîmp ăşesc realmax. Not-a-number (NaN) este generat când se încearcă 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 nouă variabilă, de pildă eps = 1.e-6 şi apoi să utilizăm acea valoare în calcule ulterioare. Funcia originală poate fi restaurată cu funcia clear eps.
4.1.5. Exemple de expresii. Iată câteva exemple de expresii MATLAB şi rezultatele corespunzătoare. Tastai: rho = (1+sqrt(5))/2
(4.3)
rho = 1.6180
(4.4)
a = abs(3+4i)
(4.5)
a = 5
(4.6)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
66/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
67
z = sqrt(besselk(4/3,rho-i))
(4.7)
z = 0.3730+ 0.3214i
(4.8)
huge = exp(log(realmax))
(4.9)
huge = 1.7977e+308
(4.10)
toobig = pi*huge
(4.11)
toobig = Inf
(4.12)
4.2. Introducerea variabilelor, funciilor şi comenzilor MATLAB Funciile şi comenzile MATLAB se lansează la linia de comandă în fereastra Command Window. Prompt-ul (>>) din Command Window indică faptul că MATLAB este gata de a accepta o comandă din partea dvs. Când apare promptul >>, putei introduce o variabilă sau lansa o funcie. De pildă, pentru a crea o matrice, A de dimensiune 3 x 3 tasta i: A = [1 2 3; 4 5 6; 7 8 10]
(4.13)
După cevaairătastat MATLAB spundelinia cu: de comandă de mai sus, când apă sa i tasta Enter sau Return, A = 1 2 3 4 5 6 7 8 10
(4.14)
Pentru a lansa o funcie, tasta i func ia, inclusiv toate argumentele şi apă sa i tasta Return sau Enter. MATLAB va afişa rezultatul. De pildă, tasta i: rand(3) şi MATLAB va răspunde cu:
(4.15)
ans = 0.4199 0.9200 0.6208 0.7537 0.8447 0.7313 0.7939 0.3678 0.1939
(4.16)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
67/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
68
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Dacă vrei să introducei mai multe linii de comand ă înainte să le lansai în execuie, folosii tastele Shift + Enter sau Shift + Return după fiecare linie, până la ultima. Apoi apăsai Enter sau Return pentru a lansa în execuie toate liniile. Afişarea promptului sub forma K >> în Command Window indică faptul că MATLAB lucrează în debug mode.
4.2.1. Funcia format. Funcia format controlează formatul numeric al valorilor afişate de MATLAB. Funcia afectează doar afişarea numerelor, nu şi modul de calcul şi salvare. Iată câteva exemple de formate, împreună cu rezultatele furnizate. Tasta i: format short
(4.17)
x = [4/3 1.2345e-6]
(4.18)
x = 1.3333 0.0000
(4.19)
format short e
(4.20)
x
(4.21)
x = 1.3333e+000 1.2345e-006
(4.22)
format short g
(4.23)
x
(4.24)
x =1.3333 1.2345e-006
(4.25)
format long
(4.26)
x
(4.27)
x = 1.33333333333333 0.00000123450000
(4.28)
format long e
(4.29)
x
(4.30)
x = 1.333333333333333e+000 1.234500000000000e-006
(4.31)
format long g
(4.32)
x
(4.33)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
68/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
x = 1.33333333333333
69
(4.34) 1.2345e-006
format bank
(4.35)
x
(4.36)
x = 1.33
(4.37) 0.00
format rat
(4.38)
x
(4.39)
x =
(4.40) 4/3
1/810045
format hex
(4.41)
x
(4.42)
x = 3ff5555555555555 3eb4b6231abfd271
(4.43)
format +
(4.44)
x
(4.45)
x = ++
(4.46)
Dacă cel mai mare element al unei matrice este mai mare decât 10 3 sau mai mic decât 10-3, MATLAB aplică un factor de scalare comun pentru formatele short şi long. În plus faă de funciile format arătate mai sus funcia format compact şterge din liniile vide afişate odată cu rezultatele MATLAB în Command Window.
4.2.2. Evaluarea unei selecii. Pentru a lansa în execuie o selecie în Command Window, efectua i selec ia, apoi executai un clic-dreapta şi selecta i Evaluate Selection din meniul contextual. Nu putei evalua o selecie cât timp MATLAB este ocupat, de pildă pe durata lansării unui fişier M. 4.2.3. Deschiderea unei selecii. Pentru a deschide un fişier function M, selectai funcia corespunzătoare fişierului în Command Window, şi apoi clic-dreapta şi selectai Open Selection din meniul contextual. Fişierul function M asociat func iei respective se deschide în Editor/Debugger. 4.2.4. Lansarea unui singur proces. În MATLAB putei lansa doar un singur proces simultan. Dacă MATLAB este ocupat cu rularea unei alte funcii, orice altă comandă lansată
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
69/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
70
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
nu va putea fi executată. Comanda următoare va fi lansată când cea anterioară s-a încheiat. De pildă, nu putei defini breakpoints din Editor/Debugger cât timp MATLAB execută o funcie în Command Window.
4.2.5. Diferenierea între litere mari şi litere mici. MATLAB face diferena între litere mici şi litere mari (este case sensitive). De pildă, nu putei lansa funcia Plot ci trebuie să lansai funcia plot. În mod similar, variabila a nu este tot una cu variabila A. Trebuie notat faptul că dacă folosii funcia help, numele funciilor sunt afişate cu litere mari, de pildă, PLOT , însă doar cu scopul de a le scoate în eviden ă faă de restul textului. Nu folosii litere mari când lansai funcii MATLAB. Anumite funcii de interfaare cu Java într-adevăr folosesc minuscule şi majuscule şi trebuiesc introduse ca atare. Spa iile de tip blanc în jurul operatorilor cum ar fi -, :, şi ( ), sunt opionali, şi pot îmbunătăi claritatea programului. 4.2.6. Introducerea mai multor funcii pe o linie de comandă. Pentru a introduce mai multe funcii într-o singură linie de comandă, separai funciile cu o virgulă ( , ) sau punct şi ă ( ;precedente. şi virgul virgul ). Prin folosirea ; ) sepentru eliminaăconstrui afişarea un rezultatului comenzii De pildsemnului 3 func ii pe ăo (linie tabel de ă, plasaipunct logaritmi :
>> format short; x = (1:10)'; logs = [x log10(x)]
(4.47)
apoi apăsai Enter sau Return pentru a lansa funciile în ordine de la stânga la dreapta.
4.2.7. Introducerea liniilor de comandă lungi. Dacă o instruciune nu încape pe o linie, folosii 3 puncte, "..." pentru a indica faptul ca această instruciune continuă pe linia următoare, apăsai apoi Enter sau Return pentru a avansa la linia următoare şi apoi continuai introducerea instruciunii. De pildă: s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ... - 1/8 + 1/9 - 1/10 + 1/11 - 1/12;
(4.48)
sau de pildă: headers = ['Author Last Name, Author First Name, ' ... 'Author Middle Initial']
(4.49)
MATLAB va afişa: headers = Author Last Name, Author First Name, Author Middle Initial
(4.50)
Numărul maxim de caractere permis pe o singură linie este de 4096.
4.2.8. Marcarea sintaxei. Anumite instruciuni apar în diferite culori pentru a vă ajuta să găsii mai uşor anumite elemente, cum ar fi identificarea perechilor de instruciuni if/else:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
70/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
71
• Tastai un string şi acesta va fi afişat în mov. Când finalizai tastarea string-ului, acesta • • • •
devine roşu; Tastai un cuvânt cheie, cum ar fi funcia for şi aceasta va fi afişată cu albastru. Liniile de comandă pe care le introducei între funciile de început şi sfârşit de control logic sunt scrise cu aliniat. Un dublu-clic pe o paranteză rotundă de deschidere sau închidere ( ), parantez ă dreaptă [], sau acoladă {}, are ca urmare selectarea caracterelor dintre acea parantez ă şi perechea sa. Tastând o paranteză de închidere (sau deschidere) şi paranteza sa pereche de deschidere (sau închidere) paranteza respectivă apare pentru scurt timp marcată cu altă culoare. Tastai o paranteză de închidere (sau deschidere) prost pusă şi MATLAB va afişa o linie orizontală peste paranteza respectivă. De pildă:
>> CC = C {:}
(4.51)
• Folosii tastele săgeată pentru a vă poziiona deasupra unei paranteze de deschidere sau închidere. Acea paranteză şi paranteza sa pereche de închidere sau deschidere apar
pentru scurt timp marcate cu altă culoare. • Dacă tastai simbolul %, MATLAB înelege că ceea ce urmează este un comentariu şi va apare scris în culoarea verde. Aceea informaie este tratată de MATLAB ca un comentariu. Tastai o comandă sistem, cum ar fi ! (shell escape), şi linia va apare în galben. Erorile apar scrise în roşu. Culorile predefinite sunt indicate aici – pentru a le schimba folosii Preferences
Cuvintele cheie sunt marcate cu albastru Variabilele de tip string închise sunt marcate cu maro Variabilele de tip string deschise sunt marcate cu mov
Fig. 4.1. Marcarea cuvintelor cheie MATLAB.
4.2.9. Editarea liniei de comenzi. Facilităile de editare a textului permit creşterea eficienei şi reducerea timpului de lucru. 4.2.9.1. Lucrul cu clipboard-ul . Comenzile Cut, Copy, Paste, Undo, şi Redo din meniul Edit fac parte din această categorie şi pot fi folosite în editarea textului introdus la linia de
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
71/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
72
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
comandă în Command Window. Unele dintre aceste comenzi pot fi accesate deasemenea din meniul contextual.
4.2.9.2. Re-apelarea liniilor de comandă. Folosii tastele tip săgeată, tasta tab, şi tastele de control pentru a reapela, edita, şi refolosi funcii pe care le-ai introdus anterior. De pildă, să presupunem că din greşeală ai introdus: rho = (1+ sqt(5))/2
(4.52)
MATLAB va răspunde cu: ??? Undefined function or variable 'sqt'.
(4.53)
Deoarece ai introdus greşit funcia sqrt. În loc de a retasta întreaga linie, ap ăsai tasta ↑. Linia tastată anterior este reafişată. Folosii tastele tip săgeata stânga sau dreapta pentru a repoziiona cursorul şi pentru a corecta funcia şi a introduce litera r care lipseşte şi deci ă linii. Pute pentru aanterior. obine sqrt în locpede sqt. Folosirea repetat tastei ↑ reapeleaz de comand tastate Funciile care le-a i introdus suntă amemorate într-un buffer i folosiă re-apelarea inteligentă pentru a reapela o funcie anterioară ale cărei prime caractere le specificai dvs. De pildă, tastând literele plo şi apăsând tasta ↑ va fi reapelată ultima funcie care a început cu plo, cum ar fi cazul func iei plot apelată recent. Această operaiune face difereniere între litere mici şi mari. În Tabelul 4.3 este prezentată o listă de taste tip săgeată sau taste de tip control pe care le pute i folosi în Command Window. Tabel 4.3 Tasta
Tasta control Operaiune Re-apelează linia anterioară Ctrl+P ↑ Re-apelează linia următoare ↓ Ctrl+N ← Mută cursorul înapoi cu un caracter Ctrl+B Mută cursorul înainte cu un caracter → Ctrl+F Mută cursorul la dreapta cu un cuvânt Ctrl + → Ctrl+R Mută cursorul la stânga cu un cuvânt Ctrl + ← Ctrl+L Home Ctrl+A Mută cursorul la începutul unei linii End Ctrl+EMută cursorul la sfârşitul unei linii Şterge linia Esc Ctrl+U Delete Ctrl+D Şterge caracterul din dreapta cursorului Şterge caracterul din stânga cursorului Backspace Ctrl+H Şterge caracterele până la sfârşitul liniei Ctrl+K Selectează caracterele până la începutul liniei Shift+Home Shift+End
Selectează caracterele până la sfârşitul liniei
4.2.9.3. Completarea numelui cu ajutorul tastei Tab. MATLAB completează numele unei funcii, variabile, nume de fişier, sau proprietate a unui grafic, dacă tastai primele câteva litere şi apoi apăsai tasta Tab. Dacă există un singur nume, numele este completat în mod automat. De pildă, dacă ai creat o variabilă costuri_iulie, tastai costuri şi apăsai tasta Tab. MATLAB va completa numele, afişând costuri_iulie. Apăsai apoi Return sau Enter pentru a lansa instruciunea. În acest exemplu, MATLAB afişează coninutul variabilei costuri_iulie. Dacă există mai multe nume care încep cu literele pe care le-ai tastat, apăsai
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
72/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
73
tasta Tab din nou pentru a vedea o lista a acestor nume. De pildă, tastai cos şi apăsai tasta Tab. MATLAB nu afişează nimic, indicând că există mai multe nume de funcii care încep cu cos. Apasai din nou Tab şi MATLAB va afişa:
cos
cos_tr
cosh
cosint
costfun
costuri_iulie
(4.54)
Lista rezultantă cu nume de funcii include numele variabilei pe care a i creat-o, costuri_iulie, dar include deasemenea şi alte funcii care încep cu cos.
4.2.10. Ştergerea comenzilor afişate în Command Window. Pentru ştergerea comenzilor afişate în Command Window selecta i Clear Command Window din meniul Edit. Această comandă nu şterge variabilele din workspace, ci doar afişarea comenzilor. Prin urmare putei continua să folosii tasta ↑ pentru a reapela funcii lansate anterior. Acelaşi efect de ştergere se obine prin tastarea la linia de comandă a funciei clc. Similar funciei clc, funcia home mută prompt-ul pe primul rând şi prima coloană în fereastra Command Window. 4.2.11. Eliminarea afişării comenzilor . Dacă o linie de comandă se încheie cu punct şi virgul ă ( ; ), MATLAB lansează instruciunea, dar în urma apăsării tastei Enter sau Return, nu afişează nimic pe ecran. Această comandă devine foarte utilă în cazul generării matricelor mari. De pildă, dacă tastai: A = rand(200);
(4.55)
şi apoi apăsai tasta Enter sau Return MATLAB crează matricea A dar nu o afişează pe ecran.
4.2.12. Paginarea rezultatelor în Command Window. Dacă rezultatul în Command Window este lung, este posibil să nu încapă pe ecran şi să fie afişat prea repede pentru a putea fi îneles. Folosii funcia more pentru a controla paginaia afişării în Command Window. Iniial, funcia more este dezactivată (este off ). Când tastai more on, MATLAB afişează doar o pagină (un ecran întreg) de rezultate simultan. După afişarea primului ecran, apăsai una dintre tastele din Tabelul 4.4. Tabel 4.4 Tasta Enter sau Return Space Bar Q
Aciune Avans la linia următoare Avans la pagina următoare Opreşte afişarea rezultatelor
4.2.13. Controlul formatului şi spaierea rezultatelor. Iniial, rezultatul numeric din Command Window este afişat ca o valoare scalată în virgulă fixă cu 5-digii. Proprietăile 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 şi modul de calcul MATLAB sau modul de salvare. Un rezultat similar în ceea ce prive şte controlul
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
73/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
74
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
formatului de afişare al valorilor numerice din Command Window se obine prin folosirea funciei format. Formatul pe care îl specificai este valabil doar pe durata sesiunii curente.
4.2.14. Controlul interspaiilor. Pentru a controla interspaiile la afişarea textului în Command Window folosii funcia format în următoarele variante: • format compact pentru a suprima liniile vide; acest format v ă permite totodată să
vizualizai mai multe informaii în Command Window. • format loose pentru a afişa liniile vide; acest format permite o vizualizare mai u şoară a informaiilor.
4.2.15. Tipărirea coninutului ferestrei Command Window. Pentru a tipări tot coninutul Command Window, selectai Print din meniul File. Pentru a printa doar o selecie, efectuai mai întâi selecia în Command Window şi apoi alegei Print Selection din meniul File. 4.2.16. Înregistrarea unei sesiuni de lucru. Funcia diary crează o copie a sesiunii dvs. MATLAB într-un fişier pe disc, incluzând instruciunile introduse de la tastatură în Command Window şi răspunsul sistemului, exclusiv graficele. Putei vizualiza şi edita fişierul text rezultant folosind orice procesor de text. Pentru a crea un fi şier pe disc, denumit octombrie23.out care conine toate funciile pe care le introducei, şi toate răspunsurile MATLAB, tastai diary('octombrie23.out'). Pentru a întrerupe înregistrarea sesiunii, folosii diary('off'). Există alte două modalităi de vizualizare a informaiei unei sesiuni: • Utilizând Command History, care conine o listă a tuturor funciilor executate în
sesiunea curentă şi cele anterioare 1.3.2).
• Utilizând sub Windows opiunea logfile de lansare a MATLAB-ului (vezi paragraful
4.2.17. Execuia fişierelor M. Execuia fişierelor M, care sunt fişiere ce conin instruciuni scrise în limbajul MATLAB, se efectuază în acelaşi fel ca execuia oricărei alte funcii MATLAB. Tasta i numele fişierului M în Command Window şi ap ăsai tasta Enter sau Return. Pentru a afişa fiecare funcie din fişierul M pe măsură ce aceasta este executată, selectai opiunea Echo on, din meniul File + Preferences + Command Window sau folosii funcia echo on tastată la linia de comandă. 4.2.18. Întreruperea unui program în execuie. Putei întrerupe un program în execuie în orice moment, apăsând combinaia de taste Ctrl+C sau Ctrl+Break. Sub Windows, s-ar putea să mai treacă o anumită perioadă de timp până când funcia curentă sau fişierul MEX î şi încheie activitatea. Sub UNIX, execuia programului se încheie imediat. 4.2.19. Execuia programelor externe MATLAB-ului. Semnul de exclamare, "!", este un shell escape şi indică faptul că restul de comandă tastată la linia de comenzi este o comandă către sistemul de operare. Folosii această facilitate pentru a lansa alte programe f ără a părăsi mediul MATLAB. De pildă, tastai comanda !dir care este similară cu lansarea
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
74/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
75
comenzii dir din MS-DOS. După ce programul sau comanda executată se încheie, sistemul de operare reîntoarce controlul MATLAB-ului.
4.2.20. Deschiderea fişierelor M. Pentru a deschide un fişier M, selectai fişierul sau funcia în Command Window, şi apoi clic-dreapta şi selectai Open Selection din meniul contextual. Fişierul M se deschide în Editor/Debugger. 4.2.21. Examinarea erorilor. Dacă un mesaj de eroare apare la lansarea unui fi şier M, clicai pe poriunea subliniată a mesajului de eroare, sau apăsai Ctrl+Enter. Fişierul M ce conine eroarea se deschide în Editor, cu zona ce include linia eronat ă afişată în prim plan.
4.3. Opiuni de configurare Command Window Proprietăile ferestrei Command Window pot fi modificate din meniul File + Preferences + Command Window. 4.3.1. Text display. Meniul Text display conine opiuni de configurare a rezultatelor în Command Window: • Numeric format – Permite setarea formatului valorilor numerice afi şate în Command
Window. Acesta afectează doar modul de afişare a numerelor, nu şi modul de calcul sau salvare specifice MATLAB-ului. • Numeric display – Permite setarea interspaiilor în Command Window. Pentru a elimina liniile vide, folosii compact. Pentru a afişa liniile vide folosii loose. conine opiuni de activare sau dezactivare a ecoului şi a 4.3.2. Display. dimensiunii buffer Meniul Display -ului: • Echo on – Selectai această opiune dacă dorii vizualizarea în Command Window a
comenzilor din fişierele M aflate în execuie. • Wrap lines – Textul introdus la linia de comandă şi rezultatele în Command Window se pot extinde pe mai multe linii pentru a se încadra în lăimea curentă a ferestrei Command Window. În acest caz scroll-bar-ul orizontal nu apare întrucat nu mai este necesar. • Limit matrix display width to eighty columns – Selectai această opiune dacă dorii ca MATLAB să afişeze doar 80 coloane ale rezultatului tip matrice, indiferent de lăimea ferestrei Command Window. Deselectai opiunea dacă lăimea fereastrei Command Window o setai mai mare de 80 coloane şi dorii ca rezultatul tip matrice s ă umple lăimea ferestrei Command Window. • Command session scroll buffer size – Setai dimensiunea buffer -ului care păstrează o listă a comenzilor lansate anterior pentru a fi reapelate.
4.3.3. Command Window Font & Color Preferences. Acest meniu permite specificarea caracteristicilor font-ului folosit în Command Window. Selectai Use desktop font dacă
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
75/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
76
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
dorii ca fontul în Command Window să fie acelaşi cu cel specificat în General Font & Colors preferences. Dacă dorii ca fontul în Command Window să fie diferit, selectai Use custom font şi specificai caracteristicile fontului pentru Command Window. Alege i de pildă: • Font, SansSerif ; • Style, bold ; • Size în points, 12 points. După efectuarea seleciei, zona Sample area va afişa noua înf ăişare a fontului. Tot în cadrul aceleiaşi ferestre putei specifica culorile folosite în Command Window: • Text color – Culoarea textului obişnuit; • Background color – Culoarea de fundal a ferestrei; • Syntax highlighting – Culorile folosite pentru a sublinia sintaxa. Dacă opiunea este
selectată, clicai pe Set Colors pentru a le specifica.
4.3.4. Command Window Keyboard & Indenting. Acest meniu permite modificarea anumitor proprietăi legate de tastatură şi de aliniere. • Command line key bindings. Selectai Windows sau Emacs în funcie de tipul de
proprietăi de accelerare şi prescurtare pe care le dori i în Editor/Debugger. De pildă, dacă selectai Windows, prescurtarea lui paste este Ctrl+V. Dacă selectai Emacs, aceeaşi prescurtare este Ctrl+Y. • Tab key. Tab size – permite setarea numărului de spaii asociate unui tab în cursul afişării rezultatelor. Numărul implicit este 4. Enable up to n tab completions – selectai această opiune dacă dorii să folosii taburi de completare când tastai funcii în Command Window. Apoi introducei o limită în căsua de editare. De pildă, dacă introducei 10, când folosii taburi de completare, MATLAB afişează lista de posibile completări dacă există 10 sau mai puine. Dacă există mai mult de 10, MATLAB afişează un mesaj care afirmă că există mai mult de 10 completări. Deselectai cutia dacă nu dorii să folosii taburile de completare. MATLAB mută cursorul la următorul tab stop când apasai tasta Tab, în loc să completeze numele unei funcii. • Paranthesis matching. Acest meniu permite furnizarea de informa ii în vederea corelării parantezelor şi devine foarte util când în cadrul unei linii de comand ă apar paranteze multiple a căror poziie determină ordinea operaiilor matematice.
4.4. Utilizarea funciei Help Principalele căi de accesare a documentaiei MATLAB constau în folosirea ferestrei Help, a funciilor Help şi a altor facilităi specifice.
4.4.1. Tipuri de informaii Help . Fereastra şi funciile Help permit accesul la diferite tipuri de documentaii care se folosesc în funcie de necesitate.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
76/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
77
• Release Notes – Opiune ce oferă o vedere de ansamblu a noilor produse şi caracteristici • • •
•
ale versiunii curente. Documentaia aferentă conine printre altele şi un upgrade al informaiei împreună cu problemele şi limitările specifice . Getting Started with ... – Opiune destinată în primul rând începătorilor, ce permite accesul la o documentaie ce conine instruciunile de bază ale produsului respectiv. Using ... collections – Acest material conine instruciunile complete pentru folosirea unui produs. Reference Pages – Orice funcie are o pagină de referină care conine sintaxa, descrierea, exemple şi alte informaii despre acea funcie. Aceasta include link-uri către alte funcii înrudite şi informaii adiionale. Există Reference pages puse la dispoziie şi pentru blocuri. Folosii paginile de referină pentru a învăa mai mult despre o funcie sau pentru a vizualiza sintaxa acesteia. M-File Help – Permite obinerea în fereastra Command Window a unor informaii de bază despre anumite fişiere de tip funcie. Informaiile pot conine o scurtă descriere a funciei şi a sintaxei acesteia, respectiv un exemplu simplu de utilizare. Această
ă M-file informa este denumit textul help-ului este o serie de comentarii scrise laie începutul fişierului M alhelp funcdeoarece iei respective. • Product Page – Permite accesare site-ului MathWorks Web, şi conine cele mai noi informaii despre produse. • Online Knowledge Base – Opiune ce facilitează obinerea suportului tehnic online oferit de MathWorks în vederea soluionării întrebărilor puse de utilizatori.
4.4.2. Folosirea ferestrei Help Navigator. 4.4.2.1. Folosirea opiunii Product Filter. Folosii Product filter în fereastra Help Navigator pentru a vizualiza doar documentaia produselor specificate de dvs., Fig. 4.2.
Fig. 4.2. Filtrarea informaiilor obinute în MATLAB Help.
Pentru afişarea documentaiei tuturor produselor MathWorks instalate pe calculatorul dvs., selectai All . Pentru a vizualiza doar o anumită documentaie specifică produselor MathWorks instalate pe calculatorul dvs., setai Product filter pe opiunea Selected . Pentru a specifica setul de produse dorit, clica i pe butonul Select. Fereastra Help Product Filter se deschide, Fig. 4.3. Selectai produsele a căror documentaie dorii să o accesai în fereastra Help Navigator şi apoi clicai pe OK . În aceste condiii, cu Product filter setat pe opiunea Selected , Help Navigator va afişa doar documentaia corespunzătoare produselor specificate de dvs. Panelurile din stânga ferestrei Help permit accesarea selectivă a documentaiei, după cum urmează: • Contents va lista doar setul produselor specificate de dvs. • Index va afişa informaii doar despre termenii index din setul de produse specificate de dvs. • Search va efectua căutarea documentaiei doar în setul de produse specificate.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
77/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
78
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
• Demos permite vizualizarea unor demonstraii ale funciilor şi facilităilor produselor
precizate de dvs. • Favorites permite memorarea unor pagini ce conin informaii utile ce pot fi ulterior accesate rapid.
Fig. 4.3. Filtrul produselor MATLAB existente în sistem.
4.4.2.2. Folosirea listei Contents în fereastra Help. Pentru a lista titlurile şi tabla de materii corespondentă documentaiei produselor MathWorks, clicai pe Contents tab în panelul Help Navigator, Fig. 4.4. În Contents, putei: • Clica pe semnul + situat la stânga unui articol pentru o listare expandată, • Clica pe semnul - situat la stânga unui articol sau executa un dublu-clic pe articol pentru
a comprima afişarea acelui articol, • Selecta un articol pentru a vizualiza prima pagin ă a acelui document în panelul display din dreapta, • Executa dublu-clic pe un articol pentru o listare expandat ă şi pentru afişarea primei pagini a acelui document în panelul display, • Folosi tastele sageată ↓ ↑ pentru navigare prin lista cu articole.
4.4.2.3. Căutarea documentaiei folosind Index. Pentru a obine informaii despre o anumită funcie din documentaia MathWorks corespunzătoare produselor dvs., folosii Index tab în panelul Help Navigator, Fig. 4.5. Pentru a utiliza această facilitate: • Clica i pe Index tab. • Tasta i un cuvânt sau cuvinte în căsua de editare Search index for. Pe măsură ce tastai
literele unui cuvânt cheie, o listă de entităi ce conin literele tastate vor fi afişate treptat pe ecran.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
78/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
79
Fig. 4.4. Utilizarea opiunii Contents.
Fig. 4.5. Utilizarea opiunii Index.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
79/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
80
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
4.4.2.4. Căutarea documentaiei folosind Search. Pentru a căuta o anumită frază în documentaie, folosii Search tab în panelul Help Navigator, Fig. 4.6.
Fig. 4.6. Utilizarea opiunii Search.
Pentru utilizarea Search tab: • Clica i pe Search tab. • Selecta i un Search type: o Full Text caută prin toată documentaia. Acesta poate furniza un număr mare de articole. o Document Titles caută între titlurile documentaiei. Acesta este cel mai indicat pentru a începe o căutare minuioasă. o Function Name caută printre paginile de referină ale funciilor. Acesta este echivalent cu funcia doc. o Etc. • Tastai cuvântul sau cuvintele pe care le c ăutai în căsua de editare Search for, şi clicai
pe Go (sau apăsai Enter sau Return).
În funcie de selecia dvs. documentele coninând termenul căutat sunt listate, grupate după tipul produsului.
4.4.2.5. Pagini favorite. Clicai pe Favorites tab în Help Navigator pentru a vizualiza o listă a documentelor selectate de dvs. ca fiind favorite. Din list ă putei: • Selecta un articol – acel document apare în panelul display. • Ş terge i un articol – executa i un clic-dreapta pe articolul din listă şi selecta i Remove din meniul contextual, sau apăsai pe tasta Delete. • Redenumii un articol - executa i un clic-dreapta pe articolul din listă şi selecta i Rename din meniul contextual. Tastai peste numele iniial numele nou. 4.4.2.6. Vizualizarea unor demonstraii. Clicai pe Demo tab în Help Navigator pentru a vizualiza diferite exemple de utilizare cu caracter demonstrativ a unor funcii sau facilităi
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
80/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
81
MATLAB sau a produselor asociate. Lista disponibilă de exemple demonstrative este afişată în stânga ferestrei Help Navigator.
4.4.3. Folosirea funciilor Help. Există mai multe func ii help care permit accesul la informaii de tip help în mod diferit decât fereastra Help, Tabel 4.5. Tabel 4.5. Funcia doc help helpbrowser, helpdesk helpwin lookfor
Descriere Afişează pagina de referină pentru funcia specificată în fereastra Help, furnizând informaii despre sintaxă, descriere, exemple şi link-uri la func ii similare Afişează M-file help în Command Window pentru funcia specificată Deschide fereastra Help Afişează în fereastra Help o listă a tuturor funciilor ce permit acces la M-file help ă specificat Afi şi o scurt descriere pentru toate Command Windowinclude o listăcuvântul funcşeaz iileă aîncăror scurtă descriere cheie
4.4.4. Alte metode de asistenă Help. În plus faă de fereastra Help şi funciile Help, anumite produse permit şi alte metode de accesare a informa iei de tip help, de pildă articole specifice în meniul Help, butoane Help în cutiile de dialog sau în meniurile contextuale. Multe produse includ exemple demonstrative care pun în evidenă trăsăturile de bază specifice. Deseori este utilă lansarea exemplelor demonstrative când folosii pentru prima dată un produs. Pentru a vedea lista cu exemple demonstrative accesibile pentru un produs, folosii Launch Pad , şi selectai un exempu considerat necesar.
4.5. Funcii de gestionare a spa iului de lucru, a directoarelor şi fişierelor 4.5.1. Spaiul de lucru MATLAB (MATLAB Workspace). Spaiul de lucru MATLAB sau workspace constă într-un set de variabile (vectori) definite în cursul unei sesiuni de lucru MATLAB şi stocate în memorie. Putei adăuga variabile la workspace-ul curent folosind funcii, lansând fişiere M, şi încărcând workspace-uri salvate anterior. De pildă tastai: t = 0:pi/4:2*pi; y = sin(t);
(4.56)
În acest moment în workspace vor exista două variabile, y şi t, fiecare având 9 valori.
4.5.2. Vizualizarea Workspace-ului curent. Pentru vizualizarea Workspace-ului curent putei folosi fereastra Workspace din MATLAB Desktop (vezi paragraful 1.4.2.6) sau funciile alternative: • who pentru a lista variabilele din workspace-ul curent; • whos pentru a lista variabilele şi informaii despre dimensiunile şi clasa lor;
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
81/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
82
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
• exist pentru a vedea dacă variabila specificată se află în workspace.
De pildă dacă tasta i comenzile: t = 0:pi/4:2*pi; y = sin(t); who
(4.57)
MATLAB va răspunde cu: Your variables are: t y
(4.58)
Dacă tasta i:
whos MATLAB va răspunde cu:
(4.59)
Name Size Bytes Class t 1x9 72 double array y 1x9 72 double array Grand total is 18 elements using 144 bytes
(4.60)
4.5.3. Salvarea workspace-ului curent. Coninutul Workspace-ului nu este memorat de la o sesiune MATLAB la alta. Când încheiai sesiunea MATLAB, coninutul Workspacei salva ă sau toate ului se fipierde. Putecare din Workspace-ul într-un şier MAT, esteorice un fişvariabil ier MATLAB de tipvariabilele binar. Ulterior pute i încărca ficurent, şierul MAT fie în cursul sesiunii MATLAB curente sau într-o altă sesiune, în scopul reutilizării variabilelor din Workspace salvate.
4.5.3.1. Salvarea tuturor variabilelor . Pentru a salva toate variabilele din Workspace cu ajutorul ferestrei Workspace: • Din meniul File sau din meniul contextual selecta i Save Workspace As, sau clicai pe butonul save din Workspace toolbar. Cutia de dialog Save se deschide. • Specifica i locaia şi numele fişierului, de pildă worksp; MATLAB adaugă automat fişierului extensia .mat. • Clica i pe Save. Variabilele workspace-ului sunt salvate sub numele fişierului MAT pe care l-ai specificat. 4.5.3.2. Salvarea variabilelor selectate. Pentru a salva doar anumite variabile din Workspace procedai de maniera următoare: • Selecta i variabila în fereastra Workspace. Pentru a selecta mai multe variabile, folosi i Shift-clic sau Ctrl-clic. • Clic-dreapta şi din meniul contextual, selectai Save Selection As. Cutia de dialog Save to MAT-File se deschide.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
82/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
83
• Specifica i locaia şi File name. MATLAB furnizează automat extensia .mat. • Clica i pe Save.
Variabilele Workspace-ului pe care le-ai selectat sunt salvate în fişierul MAT cu numele pe care l-ai specificat. Workspace-ul curent poate fi salvat şi cu ajutorul comenzii save lansată la linia de comandă. Tastai de pildă save worksp. MATLAB va înregistra Workspace-ul curent în fişierul worksp.mat, extensia .mat fiind adăugată implicit.
4.5.4. Încărcarea coninutului unui Workspace salvat şi importul datelor. Pentru a încărca variabilele salvate dintr-un Workspace anterior procedai în felul următor: • Clica i pe load data button
din toolbar-ul ferestrei Workspace, sau executai un clic-dreapta în fereastra Workspace şi selectai Import Data din meniul contextual. Cutia de dialog Open se deschide şi selectai fişierul MAT pe care dorii să-l încărcai şi clicai pe Open. Variabilele şi valorile acestora, salvate în fi şierul MAT, sunt încărcate în Workspace-ul curent. Dacă vreuna din variabilele care sunt încărcate au aceleaşi nume cu variabilele din Workspace-ul curent, valorile de fişierul MAT va înlocui valorile din Workspace-ul curent. Orice variabile din fişierul MAT care nu sunt în Workspace sunt adăugate la cele existente deja în Workspace-ul curent. • O altă variantă constă în utilizarea funciei load pentru a deschide un Workspace salvat. Tastai de pildă: o load('worksp') pentru a încărca vechiul Workspace împreună cu variabilele corespunzătoare o who pentru a vizualiza variabilele anterioare. Pentru a încărca sau importa date în MATLAB există şi alte metode, respectiv funcii cum ar fi: • Selecta i din fereastra Workspace opiunea Edit + Paste Special , • Folosi i Ctrl+V pentru a importa date în MATLAB folosind Import Wizard .
4.5.5. Schimbarea şi copierea numelor variabilelor. Pentru a redenumi o variabilă în Workspace, executai un clic-dreapta pe variabilă în fereastra Workspace şi selecta i Rename din meniul contextual. Tastai noul nume de variabilă peste numele existent şi apăsai tasta Enter sau Return. Pentru a copia numele variabilelor în clipboard , selectai variabilele din Workspace şi apoi Edit + Copy. Putei copia numele acestora cu paste, de pildă, în Command Window. Variabilele multiple sunt separate de virgul ă. 4.5.6. Ştergerea variabilelor din Workspace. Putei şterge variabile din Workspace procedând în felul urm ător: • Din fereastra Workspace, selectai variabila, sau Shift+clic sau Ctrl+clic pentru a selecta mai multe variabile. Pentru a selecta toate variabilele, alege i Select All din meniul Edit sau meniurile contextuale. Apăsai tasta Delete sau clicai pe delete button din toolbar. O cutie de dialog de confirmare poate apare. Dac ă apare, clicai pe Yes pentru a şterge variabilele. Cutia de confirmare apare dac ă specificai acest lucru în meniul File + Preference.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
83/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
84
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
• Pentru a şterge toate variabilele odată, selectai Clear Workspace din meniul Edit în
fereastra Workspace. • O altă variantă de ştergere a variabilelor constă în utilizarea funciei clear. Tastai de pildă: o clear y pentru a şterge variabila y, o who pentru a verifica faptul că variabila y nu mai există în Workspace-ul curent, o clear pentru a şterge toate variabilele odată, o who pentru a verifica faptul că nu mai există nici o variabilă în Workspace-ul curent.
4.5.7. Crearea graficelor din fereastra Workspace. Pentru a reprezenta grafic o variabilă din fereastra Workspace procedai după cum urmează: • Clic-dreapta pe variabila pe care dorii să o reprezentai, • Din meniul contextual selecta i Graph şi apoi alegei tipul de grafic pe care dorii să-l creai. Graficul va apare într-o fereastra figure. De pildă tastai: t = 0:pi/20:2*pi; pentru a crea variabila t y = sin(t); pentru a crea variabila y
(4.61) (4.62)
• Clic-dreapta pe variabila y, • Din meniul contextual selecta i Graph Selection şi apoi alegei tipul de grafic plot.
Graficul va apare într-o fereastră figure ca mai jos, Fig. 4.7.
Fig. 4.7. Reprezentarea grafică a unei variabile.
4.5.8. Setarea căii de căutare (Set Path). MATLAB foloseşte căile de căutare pentru a găsi fişierele M şi alte fişiere MATLAB asociate, care sunt organizate în directoare în cadrul sistemului de fişiere Windows. Aceste fişiere şi directoare sunt furnizate cu MATLAB respectiv cu toolbox-urile asociate. Orice fi şier pe care dorii să-l lansai în MATLAB este localizat într-un director aflat într-o cale de căutare sau se află în directorul curent. Fişierele
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
84/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
85
furnizate odată cu MATLAB, respectiv cu toolbox-urile MathWorks sunt incluse implicit în calea de căutare sau în MATLAB path. Pentru a crea fişiere MATLAB, adăugai în mod explicit directoarele coninând fişierele respective la calea de c ăutare MATLAB. Subdirectoarele trebuiesc deasemenea adăugate la calea de căutare; ele nu sunt adăugate implicit în calea de căutare chiar dacă directoarele lor ”tată” sunt. Calea de căutare este salvată în fişierul pathdef.m. Ordinea directoarelor în calea de c ăutare este importantă. De pildă dacă tastai test la promptul MATLAB din Command Window, MATLAB efectuează următoarele aciuni: • Caută test ca pe un nume de variabilă, • Verifică dacă test este o funcie MATLAB inclusă, • Caută în directorul curent un fişier cu numele test.m, • Caută în directoarele din MATLAB path, pentru a găsi fişierul test.m. Ordinea directoarelor din calea de c ăutare este important dacă mai există funcii cu aceleaşi nume. Când MATLAB caută acea funcie, doar prima funcie din calea de căutare este găsită. Alte funcii cu acelaşi nume nu pot fi executate.
4.5.9. Vizualizarea şi setarea căii de căutare. Pentru a vizualiza şi modifica MATLAB path şi pentru a vedea fişierele în directoarele care sunt în calea de căutare folosii cutia de dialog Set Path. Pentru a o accesa selectai Set Path din meniul File, sau tastai pathtool la linia de comandă. Cutia de dialog Set Path se va deschide ca mai jos, Fig. 4.8. Când folosii unul din aceste butoane schimb ările sunt executate asupra căi curente de căutare. Totuşi calea de căutare nu este automat salvată pentru sesiuni viitoare
Directoare adăugate la calea de căutare curentă MATLAB
Butoane ce permit modificarea căii de căutare
Buton ce permite salvarea modificărilor pentru sesiuni MATLAB ulterioare
Fig. 4.8. Fereastra Set Path.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
85/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
86
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Folosind facilităile cutiei de dialog Set Path putei efectua următoarele aciuni: • Vizualiza calea de căutare, • Adăuga directoare la calea de c ăutare, • Muta directoare în calea de c ăutare, •• • • •
Ş terge directoare calea Reface calea de cădin utare inide ialăc,ăutare, Reveni la calea de căutare anterioară, Salva setările căii de căutare, Modifica pathdef.m.
4.5.10. Operaii cu fişiere. Operaiile MATLAB cu fişiere folosesc directorul curent ca punct de referină. Orice fişier pe care vrei să-l lansai trebuie mutat în directorul curent sau într-un director pe care să-l includei în calea de căutare. Deasemenea, când deschidei un fişier în MATLAB, punctul de plecare pentru cutia de dialog Open, de deschidere a fişierelor, este directorul curent. Operaiunile cu fişiere pot fi executate folosind câmpul Current directory, respectiv fereastra Current Directory (vezi paragraful 1.4.2.4). O metodă rapidă de a vizualiza sau modifica directorul curent este prin utilizarea câmpului Current Directory în Desktop toolbar. Pentru a modifica directorul curent din acest câmp, putei proceda în mai multe feluri, şi anume: • Tasta i calea către noul director curent, • Clica i pe să geata în jos ▼ pentru a vizualiza lista directoarelor de lucru anterioare şi selectai un articol din listă pentru a face ca acel director s ă devină directorul curent MATLAB. Directoarele sunt listate în ordine, cu cele mai recent folosite situate în partea superioară a listei. Putei şterge lista şi seta numărul de directoare salvate în list ă. • Clica i pe browse button (...) pentru a seta un nou director curent. Alte func Tabelul 4.6. ii MATLAB de lucru cu fi şiere şi cu sistemul de operare sunt prezentate în Tabel 4.6 Funcia cd pwd dir, ls delete !
Destinaia Schimbă directorul curent Afişează directorul curent Listează fişierele şi subdirectoarele din directorul curent Şterge fişiere din directorul curent sau obiecte grafice Execută comezi ale sistemului de operare
4.6. Funcii de manipulare a datei şi orei MATLAB conine o multitudine de funcii de manipulare a datei şi orei. Iată câteva dintre aceste funcii ce pot avea utilitate practică în multe aplicaii numerice, Tabel 4.7. Tabel 4.7 Funcie clock date
Descriere Indică data curentă şi ora ca vector de tip dată Indică data curentă ca şir de caractere de tip dată
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
86/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
calendar cputime etime tic, toc
87
Indică afişează calendarul lunii curente Afişeaza CPU time în secunde de când a fost lansat MATLAB Afişează timpul scurs în secunde Afişează timpul scurs între cele două comenzi
4.7. Elemente de interfaare MATLAB 4.7.1. Importul şi exportul datelor. MATLAB pune la dispoziie mai multe căi de încărcare a datelor din fişiere de pe disc sau din clipboard în Workspace, un proces numit importul datelor, şi de salvare a variabilelor din Workspace în fişiere pe disc, proces numit exportul datelor. Modul de lucru depinde de doi factori: • Operaia avută în vedere, de import sau export de date, • Formatul datelor: text, binar, etc. text,cedatele apară în coduri alfanumerice. tip American 4.7.1.1.Code Importul datelor de Interchange tip text . În format Standard for Information (ASCII), reprezint caractere Datele text ASCII pot fi vizualizate într-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 fişierelor de date de tip ASCII delimitate, importul datelor numerice cu text headers, importul datelor alfanumerice.
A) 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 opiunea Import Data din meniul File din MATLAB Desktop. MATLAB afişeaza o cutie de dialog de selecie de fişiere. Acelaşi inei prin lansarea efect funcimportul iei uiimport la linia de comand, ăselecta . Pentruîl aobfolosi Import Wizard la datelor din clipboard i opiunea Paste Special din meniul Edit în MATLAB Desktop. Putei deasemenea executa un clic dreapta în MATLAB Command Window şi alege Paste Special din meniul contextual. Se trece apoi la pasul 3 pentru a continua importul datelor din clipboard . 2) Specificai în cutia de dialog fişierul pe care dorii să-l importai şi clicai pe Open. Import Wizard lansează fişierul şi încearcă să proceseze coninutul. 3) Specificai caracterul folosit ca separator între date. Acest caracter este denumit delimitator sau separator de coloane. Import Wizard poate determina delimitator–ul folosit în multe cazuri. După ce Import Wizard a procesat corect datele, clica i pe Next. 4) Selectai variabilele pe care dorii să le importai. Implicit, Import Wizard pune toate ă şFig. datele într-o primului singură variabil i toate structurnumerice ă corespunzând buton din 4.9. datele text în alte variabile, aceast ă
Fig. 4.9. Opiuni pentru importul datelor.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
87/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
88
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Uneori este util s ă creem variabile separate din fiecare rând (sau coloan ă) de date şi să folosim header-ul de rând (sau coloană) ca nume de variabilă. Pentru aceasta trebuie selectat butonul al doilea din Fig. 4.10. 5) Clicai pe Finish pentru a importa datele în Workspace. De pildă, în exemplul de mai jos, Fig. 4.10, Import Wizard a deschis fişierul, note.txt ce conine notele a 4 studeni, după cum urmează: Andrei 8 9 5 7 Ana 9 9 6 8 Marian 10 9 9 9 Cristian 7 8 7 6
(4.63)
Număr de linii de antet ignorate Delimitator găsit în fişier
Previzualizarea datelor din fişier Previzualizarea variabilelor create de Import Wizard fişier
Fig. 4.10. Vizualizarea datelor importate în fereastra Import Wizard .
Utilizând comanda whos se pot afişa caraceristicile variabilelor create în urma importului datelor din fişierul note.txt. În data se regăsesc notele studenilor, în rowheaders şi în textdata se regăsesc numele studenilor. whos Name Size Bytes Class data 4x4 128 double array rowheaders 4x1 286 cell array textdata 4x1 286 cell array Grand total is 70 elements using 700 bytes
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(4.64)
88/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
89
B) Importul datelor de tip text folosind Import Functions. Pentru a importa date de tip text de la linia de comandă sau din fişiere M, putei utliza funciile MATLAB de import. Alegerea depinde de formatul datelor. Datele de tip text trebuiesc aranjate într-o structură uniformă de rânduri şi coloane, folosind un delimitator sau separator de coloane, pentru a separa datele unele de altele. Delimitatorul poate fi spa iul , virgula, punct şi virgula, tab, sau alte caractere. Datele individuale pot fi de tip alfabetic sau numeric sau un mixaj al celor două. Fişierul text poate deasemenea conine 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, Fig. 4.11, ilustrează un fişier text având ca delimitator un tab şi care conine text header şi header line şi column headers.
Fig. 4.11. Configurarea datelor importate.
În Tabelele 4.8 şi 4.9 sunt prezentate tipuri de formatare a datelor, respectiv func ii utilizate la importul datelor pentru diferite tipuri de formate. Detalii despre fiecare funcie se pot obine tastând la linia de comandă: help nume_func ie Tabel 4.8 Exemplu de formatare a datelor 12345 6 7 8 9 10 1; 2; 3; 4; 5 6; 7; 8; 9; 10 sau 1, 2, 3, 4, 5 6, 7, 8, 9, 10 Ion Sectia 1 12.34 45 Da Marian Sectia 2 45.67 67 Nu Nota1 Nota2 Nota3 91.5 89.2 77.3 88.0 67.8 91.0 67.3 78.1 92.5
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(4.65) Extensia fişierului .txt .dat sau altele .txt .dat .csv sau altele .txt .dat sau altele .txt .dat sau altele
89/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
90
Tabel 4.9 Funcie csvread dlmread fscanf load textread
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Tipul de date Format numeric Format numeric Format alfabetic şi numeric într-o singură variabilă Format numeric Format alfabetic şi numeric într-o singură variabilă
Delimitator Doar virgulă Orice caracter Orice caracter Doar spaii Orice caracter
4.7.1.2. Exportul datelor de tip ASCII delimitate. Pentru a exporta un vector într-un fişier de date de tip ASCII , putei folosi comanda save, specificând tipul -ASCII sau putei folosi funcia dlmwrite. Comanda save este mai uşor de folosit, însă funcia dlmwrite este mai flexibilă, permiându-vă să specificai orice caracter ca delimitator şi permiând exportul unor poriuni ale unui vector specificând gama de valori. Pentru a exporta vectorul A, A = [ 1 2 3 4 ; 5 6 7 8 ];
(4.66)
folosii comanda save după cum urmează: save fişierul_meu.out A –ASCII
(4.67)
Dacă vizualizai fişierul creat într-un editor de text, acesta arat ă în 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
(4.68)
Comanda save foloseşte implicit spaii ca delimitatoare, dar putei folosi în locul acestora tab-uri specificând tipul -tabs. Dacă folosii save pentru a scrie un vector de caractere într-un fişier ASCII , MATLAB scrie echivalentul ASCII al caracterelor în fişier. Dacă scriei stringul 'hello' intr-un fişier, save scrie valorile 104 101 108 108 111. Pentru a exporta un vector în format ASCII specificând delimitatorul, folosii funcia dlmwrite. De pildă, pentru a exporta matricea A, A = [ 1 2 3 4 ; 5 6 7 8 ]; (4.69) ca un fişier de date ASCII care foloseşte punct şi virgulă ca delimitator, folosii comanda de mai jos: dlmwrite('my_data.out', A, ';')
(4.70)
Dacă se vizualizează fişierul creat într-un editor de text, acesta va conine următoarele informaii: 1; 2; 3; 4 5; 6; 7; 8
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(4.71)
90/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
91
Funcia dlmwrite nu inserează delimitatoare la sfârşitul rândurilor. Dacă nu se specifică un delimitator, dlmwrite foloseşte implicit o virgulă ca delimitator. Putei specifica un spaiu (' ') ca delimitator sau, dacă specificai spaiu vid (''), nici un delimitator. Exportul fişierelor de date poate fi efectuat deasemenea folosind funcia diary (vezi paragraful 4.2). Pentru a exporta vectori de dimensiuni reduse putei folosi comanda diary. Această funcie crează o copie a sesiunii MATLAB pe un fi şier disc (în afara graficelor).
4.7.2. Operaiuni speciale cu fişiere şi date. MATLAB prevede funcii specifice de operaiuni cu fişiere cum ar fi: • Căutare şi salvare de informaii de pe Internet, cu ajutorul funciilor urlread şi urlwrite, • Arhivare şi dezarhivare a fişierelor şi directoarelor folosind funciile zip şi unzip, • Trimitere automată de mesaje e-mail folosind funcia sendmail . 4.7.3. Elemente de interfaare MATLAB – Microsoft Word. MATLAB permite interfaarea cu pachetul de programe Microsoft Word. Astfel prin intermediul facilit ăilor specifice utilizatorul poate redacta un referat sau un raport tehnic folosind editorul Microsoft Word şi adin interiorul acestui etc. program poate în apela vederea calculului numeric, reprezent ării grafice beneficiind acelaMATLAB şi timp deînavantajele ambelor pachete de programe.
4.7.3.1. Comanda notebook. Comanda notebook permite accesul la facilităile MATLAB de calcul numeric şi reprezentare grafică din interiorul programului de editare de text Microsoft Word. Folosind comanda notebook putei crea documente denumite M-book care conin în acelaşi timp informaii de tip text, comenzi şi rezultate de calcul MATLAB. Documentele de tip M-book pot fi deosebit de utile în vederea elabor ării de referate, rapoarte tehnice, proiecte etc. permiând integrarea informaiilor de tip text şi a rezultatelor de calcul numeric, respectiv structurarea acestora într-un format unitar. 4.7.3.2. Crearea unui document de tip M-book. Pentru a crea un document de tip M-book trebuie lansată comanda notebook la linia de comandă MATLAB în fereastra Command Window: notebook
(4.72)
Dacă utilizai această comandă pentru prima dată atunci va trebui mai întâi să o configurai folosind secvena de comenzi în Command Window, notebook –setup
(4.73)
Ca r ăspuns la această comandă MATLAB vă invită să specificai ce versiune de Microsoft Word folosii. Welcome to the utility for setting up the MATLAB Notebook for interfacing MATLAB to Microsoft Word
(4.74)
Choose your version of Microsoft Word: [1] Microsoft Word 97
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
91/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
92
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
[2] Microsoft Word 2000 [3] Microsoft Word 2002 (XP) [4] Exit, making no changes Microsoft Word Version: Tastai numărul ce corespunde versiunii dvs. De pildă tastai 3 dacă folosii Microsoft Word XP. Dacă MATLAB nu poate găsi toate fişierele necesare vă va solicita să specificai locaia fişierelor, inclusiv fişierul executabil Microsoft Word (winword.exe) şi fişierul de tip template (normal.dot ). Finalizarea configurării este anunată prin intemediul următorului mesaj: Notebook setup is complete.
(4.75)
Comanda notebook va lansa în execuie programul Microsoft Word şi va crea un nou document de tip M-book denumit Document1. Dacă în cursul lansării programului Microsoft Word apare o fereastră de dialog care solicită activarea sau dezactivarea comenzilor de tip macro va trebui să alegei activarea acestora. Prin intermediul comenzii notebook se definesc macro-urile Microsoft Word ce permit programului MATLAB să interpreteze diferitele tipuri de celule ce con in comenzi şi rezultate MATLAB. Comanda notebook adaugă meniul Notebook la bara de meniuri a programului Word ce permite accesare diferitelor facilităi specifice, Fig. 4.12.
Fig. 4.12. Meniul Notebook adăugat la bara de meniuri a programului Word .
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
92/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
93
Pentru a crea un alt document de tip M-book trebuie selectată comanda New M-book din meniul File al programului Word, Fig. 4.13.
Fig. 4.13. Crearea unui nou document de tip M-book folosind comanda New M-book .
4.7.3.3. Deschiderea unui document de tip M-book existent. Pentru a deschide un document existent de tip M-book putei lansa în Command Window următoarea comandă MATLAB: notebook nume_fisier
(4.76)
unde nume_fisier reprezintă numele fişierului de tip M-book ce urmează a fi deschis. O altă metodă de deschidere a fişierelor de tip M-book existente presupune executarea unui dublu-clic pe fişierul respectiv într-un program de gestiune a fi şierelor cum ar fi Windows Explorer de pildă. În acest caz Microsoft Word deschide fişierul M-book apelat şi în plus lansează în execuie programul MATLAB dacă acest program nu este deja în rulare. ă meniul Comandaop adaug bara şde meniuri a programului Word notebook Notebookallaaceluia respectiv iunea New M-book în meniul File i program.
4.7.3.4. Conversia unui document Word într-un document M-book. Pentru a converti un document Word într-un document M-book se urmează paşii următori: 1. 2. 3. 4.
Se crează un nou document de tip M-book Din meniul Insert selectai meniul File Selectai fişierul ce trebuie convertit Clicai pe OK.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(4.77)
93/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
94
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
4.7.3.5. Introducerea şi execuia comenzilor MATLAB într-un document M-book. Introducerea comenzilor şi a grupurilor de comenzi MATLAB într-un document M-book se efectuează în mod similar cu introducerea informa iilor de tip text obi şnuite, respectând însă sintaxa MATLAB specifică. Putei introduce de pildă într-un fişier M-book următoarele date ce reprezintă o combinaie de informaii de tip text şi de comenzi MATLAB: Să calcul ă m determinantul urmă tor: D = det( [1 2 3; 3 1 2; 3 2 1])
(4.78)
Pentru a executa comanda MATLAB det([1 2 3; 3 1 2; 3 2 1]) în documentul Word de tip M-book trebuie să definii comanda ca o celulă de intrare şi apoi să evaluai această celulă. Ca urmare MATLAB va afişa rezultatul comenzii într-o celul ă de ieşire în acelaşi document. Pentru comandă MATLAB ca celulă de intrare într-un document Word trebuie urma de maio jos: i paşaiidefini 1. Tastai comanda în documentul M-book. De pildă tastai: D = det([1 2 3; 3 1 2; 3 2 1])
(4.79)
2. Poziionai cursorul în interiorul comenzii şi selectai din bara de meniu Notebook -> Define Input Cell sau apăsai Alt+D. Dacă această comandă este înglobată într-o linie de text putei folosii mouse-ul pentru a selecta comanda. Astfel comanda MATLAB va fi definită ca o celulă de intrare fiind înglobată între paranteze pătrate de culoare gri, fontul schimbându-se în bold Courier New de culoare verde: [D
= det([1 2 3; 3 1 2; 3 2 1]) ]
(4.80)
3. Specificai celula de intrare ce urmează a fi evaluată selectând celula cu mouse-ul sau poziionând cursorul în interiorul ei, apoi selectai din bara de meniu Notebook -> Evaluate Cell sau apăsai combinaia de taste Ctrl+Enter. MATLAB va evalua celula de intrare şi va afişa rezultatul într-o celulă de ieşire ce va fi plasată imediat după celula de intrare. Dacă există deja o celulă de ieşire asociată, coninutul existent al acesteia va fi înlocuit în mod corespunzător. Iată de exemplu celula de intrare (4.80) şi cea de ieşire asociată după evaluarea MATLAB: [D [D
= det([1 2 3; 3 1 2; 3 2 1]) ] = 12
(4.81) (4.82)
]
Textul din celula de ieşire este marcat cu font albastru şi înglobat între paranteze pătrate bold, de culoare gri. Eventualele mesaje de eroare sunt marcate cu roşu.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
94/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
95
4.7.3.6. Evaluarea unui grup compact de celule de intrare într-un document M-book. Pentru a regrupa mai multe comenzi MATLAB definite ini ial ca celule de intrare separate, se selectează mai întâi celulele respective şi apoi se apelează opiunea din bara de meniu Notebook -> Grup Cells sau se apasă Alt+G. Dacă comenzile MATLAB nu sunt definite ini ial ca celule de intrare separate, constituirea acestora într-un grup de celule de intrare presupune selectarea grupului de comenzi cu mouse-ul şi alegerea din bara de meniu a op iunii Notebook -> Define Input Cell sau apăsarea combinaiei de taste Alt+D. Trebuie menionat faptul că un grup de celule nu trebuie s ă conină text sau celule de ieşire. Dacă grupul conine celule de ieşire acestea vor fi şterse iar dacă conine text acesta va fi mutat după grupul de celule. Dacă textul selectat odată cu grupul de celule se afl ă poziionat înaintea primei celule textul nu va suferi nicio modificare. Pentru a evalua simultan un grup de celule se poziionează cursorul în interiorul grupului de celule şi apoi se selectează Notebook -> Evaluate Cell sau se apasă combinaia de taste Ctrl+Enter. MATLAB va evalua grupul de celule de intrare şi va afişa rezultatul într-o celulă de ieşire ce va fi plasată imediat după grupul de celule de intrare. Dacă celula de ieşire asociată deja există aceasta va fi reactualizată în mod corespunzător. Să considerăm de pildă setul de informaii de mai jos ce includ date de tip text, un grup de celule de intrare ce permit definirea matricei A = [1 2 9; 2 3 4; 3 2 2], respectiv un grup de celule de ieşire pentru calculul inversei şi transpusei lui A: Să calcul ă m inversa şi transpusa matricei A [ A = [1 2 9; 2 3 4; 3 2 2];
(4.83)
A1 = inv(A) A2 = A']
[A1
=
0.0645 -0.4516 -0.2581 0.8065 0.1613 -0.1290 A2 = 1 2 3 2 3 2 9
4
0.6129 -0.4516 0.0323
]
2
4.7.3.7. Evaluarea unui grup de celule de intrare dispersate într-un document M-book. Pentru a evalua un grup de celule de intrare dispersate într-un document de tip M-book trebuie selectată poriunea de document ce conine celulele ce trebuiesc evaluate, ce pot fi eventual separate de informa ii de tip text. Ulterior se selectează din bara de meniu iunea Notebook -> ă combina ia de op se apas urma Evaluate Cell sau acestei operaiuni MATLAB va evalua fiecare celul ă de intrare dintaste selecCtrl+Enter. ie inserând În celulele de ieşire asociate sau reactualizând celulele de ieşire existente.
4.7.3.8. Definirea şi evaluarea unei zone de calcul dintr-un document M-book. Un document de tip M-book poate fi partiionat în mai multe seciuni denumite zone de calcul ( calc zone) ce pot conine informaii combinate de tip text, celule de intrare şi celule de ieşire. MATLAB inserează separatoare Microsoft Word înainte şi după fiecare seciune pentru a defini zonele de calcul. Separatoarele includ indicatoare de tip paranteze drepte,
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
95/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
96
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
bold, de culoare gri, pentru a le distinge de separatoarele Word standard. Variabilele folosite într-o zonă de calcul sunt accesibile tuturor zonelor. Pentre a crea o zonă de calcul se selectează seciunea respectivă a documentului care poate include informaii de tip text, celule de intrare şi celule de ieşire, apoi se activează din bara de meniuri opiunea Notebook -> Define Calc Zone. În faza de definire a unei zone de calcul trebuiesc selectate atât celulele de intrare cât şi cele de ieşire asociate, în vederea includerii în zona de calcul corespunzătoare Pentru a evalua o zonă de calcul se poziionează cursorul în interiorul zonei respective şi apoi se selctează din bara de meniuri opiunea Notebook -> Evaluate Calc Zone sau se apasă combinaia de taste Alt+Enter. MATLAB poziionează implicit celula de ieşire corespunzătoare zonei de calcul imediat după zona respectivă în cazul primei evaluări a zonei. Dacă zona de calcul are deja o celulă de ieşire existentă, MATLAB va afişa rezultatele în acea celulă, oriunde ar fi poziionată aceasta în documentul M-book.
4.7.3.9. Definirea şi evaluarea unui întreg document M-book. Un document de tip M-book poate fi evaluat în întregime apelând din bara de meniuri op iunea Notebook -> Evaluate M-book sau se apăsând combinaia de taste Alt+Enter. MATLAB începe evaluarea progresivă a celulelor de intrare ale documentului M-book pornind de sus în jos, indiferent de poziia cursorului. Pe măsură ce evaluarea avansează sunt inserate celule de ieşire acolo unde este cazul sau sunt actualizate cele existente. 4.7.3.10. Ştergerea celulelor de ieşire dintr-un document M-book. Un document de tip M-book poate conine unele celule de ieşire ce trebuiesc la un moment dat şterse. Pentru a şterge o celulă de ieşire se selectează celula folosind mouse-ul sau poziionând cursorul în interiorul acesteia şi apoi se face apel la opiunea Notebook -> Purge Selected Output Cells sau se apasă combinaia de taste Alt+P. 4.7.3.11. Conversia celulelor de ieşire în format text. Pentru a converti o celulă de ieşire în format text se selectează celula respectivă şi apoi se face apel la op iunea Notebook -> Undefined Cells sau se apasă combinaia de taste Alt+U . În cazul în care lucrai simultan cu mai multe fişiere M-book într-o singură sesiune Word trebuie inut cont de faptul că fiecare fişier M-book foloseşte aceeaşi copie MATLAB, toate fişierele partajând acelaşi workspace comun. Dacă utilizai aceleaşi nume de variabile în mai multe fişiere M-book, datele utilizate într-un fişier pot fi afectate de operaiunile efectuate în alt fişier. Putei proteja integritatea workspace-ului curent utilizând comanda clear în prima celulă autoinit din fişier. Celulele de intrare de tip autoinit sunt evaluate automat la fiecare deschidere a unui fişier M-book şi se definesc tastând comanda dorită în fişierul Word, urmată de apelul opiunii Notebook -> Define AutoInit Cell . Dacă respectiva comandă a fost definită în prealabil ca celulă de intrare aceasta poate fi convertită în celulă autoinit prin selectarea celulei sau prin poziionarea cursorului în interiorul acesteia, urmată de apelul opiunii Notebook -> Define AutoInit Cell . Pentru a vă asigura asupra consistenei datelor dintr-un fişier M-book se recomandă folosirea periodică a opiunii din bara de meniu Notebook -> Evaluate M-book.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
96/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
97
În afara facilităilor MATLAB de intefaare cu programul Microsoft Word descrise mai sus există şi altele ce pot fi avute în vedere şi care permit printre altele folosirea calculului în bucle repetitive etc.
4.7.4. Elemente de interfaare MATLAB – Microsoft Excel. MATLAB conine facilităi ce permit interfaarea cu pachetul de programe Microsoft Excel. În acest sens, deosebit de utilă poate fi funcia MATLAB xlsread care permite citirea fişierelor de date în format Microsoft Excel (*.xls). Comanda xlsread se apelează folosind una din sintaxele următoare: A = xlsread('nume_fisier') [A, B ] = xlsread('nume_fisier') [A, B] = xlsread('nume_fisier','nume_foaie')
(4.84) (4.85) (4.86)
Folosind sintaxa A = xlsread('nume_fisier') se citeşte fişierul cu numele nume_fisier.xls, datele numerice din prima foaie de calcul Microsoft Excel fiind stocate în variabila A de tip matrice. Comanda xlsread ignoră antetele existente la începutul coloanelor sau rândurilor. În cazul în care există celule goale sau care conin date de tip text şi acestea nu sunt celule de tip antet, comanda xlsread afectează valoarea NaN locaiei corespunzătoare din variabila A de tip matrice. Utilizarea sintaxei [A, B]= xlsread('nume_fisier') permite citirea fişierului cu numele nume_fisier.xls, datele numerice din prima foaie de calcul Microsoft Excel fiind stocate în variabila A de tip matrice, iar datele de tip text fiind stocate în variabila B de tip matrice de celule. Dacă foaia de calcul conine antete la începutul coloanelor sau rândurilor, comanda xlsread întoarce doar acele celule în variabila B. Dacă foaia de calcul conine informaii de tip text în celule ce nu reprezintă antete de început de coloană sau rând, comanda xlsread întoarce variabila B o matrice de celule deinaceea i dimensiune cuăfoaia de calcul cu informaiiînde tip text doar în celulele ce con text şîn foaia original , celulele ce conExcel in date numerice rămânând goale. Sintaxa [A, B] = xlsread('nume_fisier','nume_foaie') permite citirea unei anumite foi de calcul cu numele nume_foaie inclusă în fişierul Excel cu numele nume_fisier.xls. Dacă foaia de calcul apelată nu există MATLAB întoarce un mesaj de eroare. Să considerăm de exemplu fişierul note.xls de tip Microsoft Excel ce conine în prima foaie de calcul, denumită Foaia1, următoarele informaii de tip text, Tabel 4.10, combinate cu informaii numerice, reprezentând notele a 4 studeni la 3 discipline. Tabel 4.10 Algebr ă Chimie Fizică
8 Andrei 9 George8 Cristina 10 Paula 10 9 9 8 7 9 10 9
Pentru a importa în MATLAB datele din fi şierul note.xls şi pentru a stoca datele numerice în variabila A, respectiv pentru a stoca informaiile de tip text în variabila B se foloseşte comanda:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
97/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
98
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
[A, B] = xlsread('note.xls')
(4.87)
În urma apelului comenzii xlsread cele două variabile A şi B vor conine următoarele informaii. A = (4.88) 8 9 8 10 10 9 9 8 7 9 10 9 B = [] 'Algebra' 'Chimie' 'Fizica'
(4.89) 'Andrei' 'George' 'Cristina' [] [] [] [] [] [] [] [] []
'Paula' [ ] [ ] [ ]
În afara funciei xlsread de citire a fişierelor de tip Microsof Excel, MATLAB include şi funcia xlsfinfo care identifică dacă un fişier de date este de tip Excel sau nu.
4.8. Aplicaii numerice APLICA IA 17: Crea i în directorul curent fi şierul note.txt folosind un editor exterior MATLAB-ului (de pild ă Notepad) şi apoi importa i-l în MATLAB workspace utilizând Import Wizard. Fi şierul va con ine informa iile de mai jos, coloanele fiind separate între ele de un spa iu: Andrei Ana 9 8 99 65 87 Marian 10 9 9 9 Cristian 7 8 7 6
Rezolvarea aplicaiei presupune următorii paşi: 1) Se crează fişierul note.txt folosind editorul Notepad şi se salvează fişierul în directorul curent. 2) Se lansează Import Wizard , selectând opiunea Import Data din meniul File din MATLAB Desktop. MATLAB afişează o cutie de dialog de selecie de fişiere. Acelaşi efect îl obinei prin lansarea funciei uiimport la linia de comandă în Command Window. 3) Specificai în cutia de dialog fişierul pe care dorii să-l importai şi clicai pe Open. Import Wizard lansează fişierul şi încearcă să proceseze coninutul. 4) În această cutie de dialog clicai pe butonul Next> pentru ca Import Wizard să determine automat delimitator–ul folosit între coloanele alăturate. 5) Clicai pe Finish pentru a importa datele în Workspace.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
98/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
99
APLICA IA 18: Crea i în directorul curent un fi şier cu numele vectori.doc de tip M-book care să con ină următoarele date: 1) pe prima linie informa ia de tip text: Calcul vectori , ă ş 2) calculul un grup vectorilor de celule xs de =intrare săcos(x) permit sin(x) care şi xc = , definirea vectorului x = 0:pi/10:pi i 3) un grup de celule de ie şire pentru afi şarea rezultatelor numerice.
Rezolvarea aplicaiei presupune parcurgerea etapelor următoare: 1) Se lansează comanda notebook în MATLAB Command Window care deschide aplicaia Microsoft Word; 2) Se tastează pe prima linie a documentului deschis, informaia de tip text: Calcul vectori 3) Se tastează pe liniile 2, 3 şi 4 ale documentului informaiile: x = 0:pi/10:pi; xs = sin(x) xc = cos(x) 4) Se selectează liniile 2, 3 şi 4 ale documentului cu mouse-ul şi se apelează din bara de meniu opiunea Notebook -> Define Input Cell pentru a defini cele 3 comenzi MATLAB de mai sus ca celule de intrare; 5) Se poziionează cursorul în interiorul grupului de celule de intrare şi se selectează din bara de meniu opiunea Notebook -> Evaluate Cell ; 6) Se salvează în directorul curent fişierul cu numele vectori.doc. Parcurgând etapele de mai sus MATLAB va efectua calculul, con inutul documentului vectori.doc fiind următorul: Calcul vectori [x = 0:pi/10:pi; xs = sin(x) xc = cos(x)]
[xs
=
Columns 1 through 9 0 0.3090 0.5878 0.5878 Columns 10 through 11 0.3090 0.0000 xc = Columns 1 through 9 1.0000 0.9511 0.8090 -0.8090 Columns 10 through 11 -0.9511
0.8090
0.9511
1.0000
0.9511
0.8090
0.5878
0.3090
0.0000
-0.3090
-0.5878
]
-1.0000
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
99/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
100
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
APLICA IA 19: Crea i în directorul curent fi şierul Excel It.xls folosind Microsoft Excel şi apoi citi i datele în MATLAB utilizând comanda xlsread. Fi şierul va con ine informa ii de tip text, respectiv date numerice ca mai jos: Curent_I(A) 9 7 5 4 Timp_t(s) 0 1 2 3
Rezolvarea aplicaiei presupune următorii paşi: 1) Se crează fişierul It.xls folosind Microsoft Excel şi se salvează fişierul în directorul curent. 2) Se apelează în MATLAB Command Window comanda xlsread cu sintaxa: [A, B] = xlsread('It.xls') În urma apelului comenzii MATLAB, veriabilele A şi B vor conine următoarele informaii: A = 9 7 5 4 0 1 2 3 B = 'Curent_I(A)' 'Timp_t(s)'
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
100/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
101
5. REPREZENTAREA GRAFICELOR MATLAB dispune de o multitudine de facilit ăi pentru reprezentarea grafică a vectorilor şi matricelor, respectiv editarea şi printarea acestor grafice.
5.1. Reprezentarea graficelor 2D 5.1.1. Trasarea unui grafic 2D. O funcie de bază utilizată la trasarea graficelor 2D este funcia plot care are diferite forme, în funcie de argumentele de intrare. Dacă y este un vector, plot(y) produce un grafic, liniar pe poriuni, al elementelor lui y, în funcie de index-ul elementelor lui y. Dacă specificai doi vectori ca argumente, plot(x, y) crează un grafic al lui y funcie de x. Pentru exemplificare, tastai: (5.1)
x == sin(x); 0:pi/100:2*pi; y plot(x, y)
Acum se pot adăuga graficului notaii pe cele două axe, respectiv un titlu. Folosind caracterele \pi se crează simbolul π . xlabel('x = 0:2\pi') ylabel('sin( x)') title('Graficul Func iei sinus','FontSize',12)
(5.2)
În urma execuiei comenzilor de mai sus se ob ine graficul de mai jos, Fig. 5.1.
Fig. 5.1. Reprezentarea grafică a funciei sinus.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
101/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
102
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
5.1.2. Funcii de reprezentare grafică 2D. MATLAB include o gamă largă de funcii de reprezentare grafică 2D a curbelor, cum ar fi cele prezentate în Tabelul 5.1. Tabel 5.1 Funcia plot loglog semilogx semilogy plotyy stem bar barh stairs area fill
Destinaia Grafică 2D cu scară liniară pe ambele axe X şi Y Grafică 2D cu scară logaritmică pe ambele axe X şi Y Grafică 2D cu scară logaritmică pe axa X şi scară liniară pe axa Y Grafică 2D cu scară logaritmică pe axa Y şi scară liniară pe axa X Grafică cu etichetare pe partea dreapt ă şi stângă Grafică 2D pentru seturi de date discrete Grafică 2D, reprezentare cu bare Grafică 2D, reprezentare cu bare orizontale Grafică 2D, reprezentare în scară Grafică 2D, reprezentare cu arii Grafică 2D, de reprezentare a poligoanelor
5.1.3. Reprezentarea mărimilor complexe şi imaginare. Când argumentele funciei plot sunt complexe, partea imaginară este ignorată cu excepia situaiei când funciei i se transmite un singur argument complex. În acest caz special, comanda este o prescurtare pentru trasarea unui grafic de tip parte real ă funcie de partea imaginară. Deci, funcia plot(Z) unde Z este un vector sau matrice complex ă, este echivalentă cu plot(real(Z), imag(Z)). Tastai de pildă: t = 0: pi/20: 2*pi; plot(exp(i*t), '-o'); axis equal;
(5.3)
În urma comenzilor de mai sus MATLAB trasează un poligon cu 40 de laturi cu cercuri în vârfuri.
Fig. 5.2. Reprezentare grafică a numerelor complexe.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
102/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
103
5.2. Reprezentarea graficelor 3D 5.2.1. Reprezentarea suprafeelor. MATLAB defineşte o suprafaă prin coordonata z a punctelor situate pe un grid în planul x-y, folosind linii drepte pentru conectarea punctelor ăturate. al Diferite funcii de reprezentare grafică 3D a suprafeelor disponibile în MATLAB sunt prezentate în Tabelul 5.2. Tabel 5.2 Funcia mesh, surf meshc, surfc meshz pcolor surfl surface
Aciune Trasare de suprafee Trasare de suprafee cu contur dedesubt Trasare de suprafee cu perdea verticală Trasare de suprafee în plan (valoare proporională cu culoarea) Trasare de suprafee luminate dintr-o anumită direcie Creare de obiecte tip suprafaă
Cu excepia funciei pcolor toate celelalte funcii grafice prezentate în tabelul de mai sus afişează suprafeele în trei dimensiuni. Funciile din familia mesh generează suprafee de tip plasă colorând doar liniile ce conectează punctele definite, iar funciile de tip surf afişează atât liniile de legătură cât şi feele suprafeei colorate. Funcia pcolor permite afişarea în plan a unei suprafee având valoarea proporională cu culoarea.
5.2.2. Reprezentarea grafică a funciilor de două variabile. Pentru a afişa o funcie de două variabile, z = f(x, y) trebuiesc urmai paşii de mai jos: • Generai matricele X şi Y constând din rânduri şi coloane, reprezentând domeniul de definiie al funciei. • Folosii X şi Y pentru a evalua şi a trasa func ia.
Funcia meshgrid transformă domeniul specificat printr-un singur vector sau doi vectori x şi y în matrice X şi Y pentru evaluarea funciilor de două variabile. Rândurile lui X sunt copii ale vectorului x şi coloanele lui Y sunt copii ale vectorului y. Pentru a trasa graficul bi-dimensional al func iei sinc=sin(r)/r, Fig. 5.3, unde r reprezintă distana faă de origine, tastai comenzile de mai jos. Prin adăugarea lui eps (cel mai mic număr MATLAB în virgulă mobilă) se evită nedeterminarea 0/0 în origine. [X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps;
(5.4)
Z = sin(R)./R; mesh(X, Y, Z)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
103/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
104
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 5.3. Reprezentarea grafică a funciilor de două variabile folosind funcia mesh.
O altă formă de afişare a graficului funciei sinc constă în folosirea comenzii surf . De această dată culoarea feelor este determinată de valorile lui Z şi de colormap, Fig. 5.4. Tastai în acest sens comenzile de mai jos. surf(X, Y, Z) colormap hsv colorbar
(5.5)
Fig. 5.4. Reprezentarea grafică a funciilor de două variabile folosind funciile surf , colormap şi colorbar .
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
104/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
105
Comanda colorbar permite afişarea legendei de culori a graficului. Uneori este utilă aşa numita tehnică de luminare a unui obiect după o anumită direcie. Această tehnică poate face ca reprezentarea grafica a suprafeei s ă fie mai clară. Luminarea poate fi folosită deasemenea pentru a face mai realist ă o reprezentare tri-dimensională. În exemplul ce urmează, Fig. 5.5, se foloseşte aceeaşi funcie sinc ca mai sus dar culoarea suprafeei este de această dată roşie. Tastai comenzile de mai jos: surf(X, Y, Z, 'FaceColor', 'red', 'EdgeColor', 'none'); camlight left; lighting phong; view(-15, 40);
(5.6)
Fig. 5.5. Reprezentarea grafică a funciilor de două variabile folosind opiunile camlight şi view.
Comanda view modifică poziia din care este privit graficul. Încerca i să modificai parametrii funciei view. De pildă tastai view(-25,80).
5.2.3. Alte funcii MATLAB de reprezentare grafică 3D a seturilor de date sunt prezentate în Tabelul 5.3. Tabel 5.3 Funcia bar3 bar3h fill3 plot3 stem3
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
Destinaia Grafică 3D, reprezentare cu bare Grafică 3D, reprezentare cu bare orizontale Grafică 3D, de reprezentare a poligoanelor Grafică 3D cu scară liniară pe ambele axe X şi Y Grafică 3D pentru seturi de date discrete
105/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
106
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
5.3. Configurarea şi salvarea graficelor 5.3.1. Ferestre de tip figure. Funciile de reprezentare grafică deschid în mod automat o nouă fereastră de tip figure dacă nu există nici o fereastră figure deja afişată pe ecran. Dacă o fereastră figure există, MATLAB foloseşte acea fereastră pentru reprezentări grafice. Dacă există mai multe ferestre figure deschise, MATLAB se fixează la una dintre ele ce reprezintă fereastra figure curentă (ultima fereastră de acest tip folosită sau fereastra pe care s-a executat ultima dată un clic). Pentru a face ca o fereastră figure existentă să devină curentă, clicai pe acea fereastră sau tasta i la linia de comandă figure(n), unde n reprezintă numărul din bara de titlu a figurii respective. Rezultatele comenzilor grafice ulterioare vor fi afi şate în această fereastră devenită curentă. Pentru a deschide o nouă fereastră figure şi pentru a o face fereastră figure curentă, tasta i cuvântul cheie figure la linia de comandă. 5.3.2. Reprezentări multiple în acelaşi sistem de coordonate. Perechi multiple (x, y) de argumente crează reprezentări grafice multiple printr-un singur apel al funciei plot. MATLAB accesează automat un set predefinit de diverse culori (setul poate fi modificat) ce permit diferenierea vizuală între seturile de date. De pildă, instruciunile ce urmează afişează trei curbe de variaie funcie de x, fiecare curbă cu o culoare diferită: x = 0:pi/100:2*pi; y1 = sin(x); y2 = sin(x-.25); y3 = sin(x-.5); plot(x, y1, x, y2, x, y3) legend('sin(x)', 'sin(x-.25)', 'sin(x-.5)')
(5.7)
ă deieiidentificare o cale al uşoar a curbelor(5.7). individuale. În Fig. 5.6, esteComanda prezentatlegend permite rezultatul MATLAB execu setului de comenzi
Fig. 5.6. Reprezentări multiple în acelaşi sistem de coordonate.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
106/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
107
5.3.3. Adăugarea unor curbe la grafice existente. Comanda hold permite adăugarea unor curbe la un grafic existent. Prin utilizarea comenzii hold on MATLAB nu va elimina graficul existent la apelul unei noi comenzi plot ci va adaugă noile curbe la graficul existent, rescalând axele dacă este necesar. De pildă, setul de instruciuni (5.8) de mai jos crează mai întâi un grafic tip contour al funciei peaks, apoi suprapune o reprezentare grafică în degrade a aceleiaşi funciei, Fig. 5.7. [x, y, z] = peaks; contour(x, y, z, 20, 'k'); hold on; pcolor(x, y, z); shading interp; hold off;
(5.8)
Fig. 5.7. Exemplu de adăugare a unor curbe la grafice existente utilizând funcia hold .
Comanda hold on permite ca reprezentarea grafică pcolor să se combine cu reprezentarea contour într-o singură figură, Fig. 5.7.
5.3.4. Reprezentări grafice multiple pe o figură. Comanda subplot permite afişarea în ă a mai ărireaionat aceeaşi fereastr grafice saueste tipparti acestora pematrice m aceeaşi coal de grafice hârtie. Tastând subplot(m, n, p)multor fereastra figure ă într-o x nă de mai mici şi selectează graficul cu index p ca grafic curent. Graficele sunt numerotate întâi pe primul rând de sus al ferestrei figură, apoi pe cel de-al doilea rând etc. De pild ă, setul de comenzi (5.9) de mai jos trasează curbele în patru grafice diferite pe fereastra figure, Fig. 5.8.
[X,Y,Z] = peaks; subplot(2, 2, 1); mesh(X);
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(5.9)
107/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
108
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
subplot(2, 2, 2); mesh(Y); subplot(2, 2, 3); mesh(Z); subplot(2, 2, 4); mesh(X, Y, Z);
Fig. 5.8. Exemplu de reprezentări grafice multiple pe aceeaşi figură utilizând funcia subplot .
5.3.5. Specificarea tipului de linie şi culoarea. Este posibilă setarea culorii, a tipului de linie, a markerului (de exemplu simbolul ”+” sau ”o”) când plota i datele folosind funcia plot. plot(x, y, 'culoare_stil_marker')
(5.10)
Stringul culoare_stil_marker conine de la 1 la 4 caractere ce desemnează o culoare, un stil de linie, şi un tip de marker: • Caracterele ce desemnează culori sunt 'c', 'm', 'y', 'r', 'g', 'b', 'w', şi 'k'. Acestea
corespund culorilor cyan, magenta, yellow, red, green, blue, white, şi black. • Stilul de linie este indicat de string-urile: '-' pentru solid , '- -' pentru linie lung ă întreruptă , ':' pentru linie scurtă întreruptă , '-.' pentru linie punct. Nu precizai nici unul din stilurile de linie pentru linie solid ă. • Tipurile de marker sunt '+', 'o', '*', 'x' şi 's' pentru pă trat, 'd' pentru romb, '^' pentru triunghi cu vârful în sus, 'v' pentru triunghi cu vârful în jos, '>' pentru triunghi cu vârful la dreapta, '<' pentru triunghi cu vârful la stânga, 'p' pentru pentagon, 'h' pentru triunghi hexagon, şi nimic dacă nu se doreşte marker.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
108/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
109
De pildă prin lansarea setului de comenzi: x = 0:pi/100:2*pi; y = sin(x); plot(x, y, 'ks')
(5.11)
MATLAB va trasa graficul funciei y funcie de x cu markere de tip pătrate negre în fiecare punct de grafic, dar f ără să conecteze marker-ele cu linie, Fig. 5.9.
Fig. 5.9. Reprezentarea funciei sinus cu marker pătrat negru
În urma lansării setului de comenzi: x = 0:pi/100:2*pi; y = sin(x); plot(x, y, 'r:+')
(5.12)
MATLAB va trasa graficul funciei y funcie de x cu marker de tip ”+” de culoare ro şie, f ără să unească punctele de grafic, Fig. 5.10.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
109/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
110
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 5.10. Reprezentarea funciei sinus cu marker + ro şu
5.3.6. Controlul axelor. Comanda axis admite un număr de opiuni pentru setarea scalării, orientării, şi aspectului graficelor. Putei deasemenea seta aceste opiuni interactiv. 5.3.6.1. Setarea limitelor axelor. MATLAB caută implicit maximele şi minimelor seturilor de date pentru a alege limitele axelor. Comanda axis permite specificarea propriilor dvs. limite pentru axe şi prezintă sintaxa următoare: axis([xmin xmax ymin ymax]) pentru grafice bi-dimensionale şi axis([xmin xmax ymin ymax zmin zmax]) pentru grafice tridimensionale. Folosii comanda axis auto pentru a permite selecia automată a limitelor, opiune MATLAB implicită. 5.3.6.2. Setarea aspectului axelor. Comanda axis permite deasemenea specificarea unui număr de stiluri predefinite. De pild ă, axis square determină limitele axelor x şi y de aceeaşi lungime. Comanda axis equal determină incrementul pe axele x şi y de aceeaşi lungime. De pildă următoarea comandă: plot(exp(i*[0:pi/10:2*pi]))
(5.13)
urmată fie de axis square fie de axis equal face ca ovalul să devină cerc, Fig. 5.11. Comanda axis auto normal face ca modul de scalare să revină la cel iniial, automatic.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
110/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
111
Fig. 5.11. Aplicaii ale funciilor axis square sau axis equal
5.3.6.3. Setarea vizibilităii axelor. Putei folosi comanda axis pentru a face axele vizibile sau invizibile. Comanda axis on face axele vizibile, aceasta comandă fiind cea implicită. Comanda axis off face axele invizibile. ă face ă liniile . Comanda face să aparoff sau scaă liniile disparde grid.ă 5.3.7. Setarea gridului Comanda grid on face ca liniile de grid grid s ă apar ă iar grid grid s ădedispar din nou.
5.3.8. Etichetarea axelor şi a titlului. Comenzile xlabel, ylabel, şi zlabel adaugă etichete pe axele x, y, şi z. Comanda title adaugă un titlu în partea superioara a figurii şi funcia text inserează text oriunde pe figură. Un set specific de notaii generează litere greceşti. În urma tastării setului de comenzi (5.14) MATLAB va afişa Fig. 5.12. t = -pi:pi/100:pi; y = sin(t);
(5.14)
plot(t, y) pi -1 1]) axis([-pi xlabel('-\pi \leq {\itt} \leq \pi') ylabel('sin(t)') title('Graficul Func iei sinus') text(1,-1/3,'{\itFunc ia sinus}')
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
111/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
112
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 5.12. Etichetarea axelor şi a titlului unui grafic.
5.3.9. Editarea graficelor. MATLAB permite modificarea graficelor, setarea scalării axelor, inclusiv marcajul axelor, culorile stilul liniilor pentru distingerea curbelor într-un grafic. Uneori se doreşte personalizarea graficelor prin adăugarea etichetelor, titlurilor, legendelor şi a altor notaii. MATLAB permite două căi de editarea a graficelor: • Folosind mouse-ul pentru a selecta şi edita obiectele în mod interactiv, respectiv • Folosind funciile MATLAB la linia de comand ă sau scrise într-un fişier M. 5.3.9.1. Editarea interactivă a graficelor. Putei edita interactiv graficele în fereastra figure MATLAB prin selectarea butonului . Astfel putei selecta obiectul sau obiectele grafice pe care dorii să le modificai prin dublu-clic. Această comandă lansează Property Editor, care permite acces la proprietăile grafice ale obiectului, respectiv modificarea lor. De pildă, folosind Property Editor, Fig. 5.13, putei modifica grosimea unei linii, putei adăuga titluri şi etichete axelor, adăuga lumini, etc. Putei lansa Property Editor prin dublu-clic pe un obiect grafic, cum ar fi o linie, sau prin clic-dreapta pe un obiect şi selectând Properties din meniul contextual. Putei deasemenea lansa Property Editor selectând fie Figure Properties, Axes Properties, sau Current Object Properties din meniul Edit al ferestrei figură. Aceste opiuni permit automat accesarea editorului grafic. O dată lansat Property Editor, păstrai-l deschis pe toată durata sesiunii de editare întrucât acesta permite acces la toate obiectele grafice. Dac ă clicai pe un alt obiect grafic, Property Editor afişeaza setul de proprietăi asociate cu acel tip de obiect, Fig. 5.14.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
112/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
113
Folosii aceste butoane pentru a adăuga text, săgei şi linii la un grafic Folosii acest buton pentru a edita un grafic Folosii meniurile Edit, Insert Tools pentru a adăugaşisau edita obiecte la un grafic Prin dublu-clic pe un obiect acesta e selectat
Poziionarea legendei, notaiilor şi a altor obiecte se face prin clicare şi mutare Accesarea anumitor funcii de editare a graficelor este posibilă folosind meniurile contextuale
Fig. 5.13. Editarea unui grafic. Folosii aceste butoane pentru a vă deplasa printre obiectele grafice pe care le-ai editat Folosiaiselecta bara deobiectul navigare depentru editat Clicai pe tab pentru a vizualiza un grup de proprietăi
Clicai pentru a vizualiza o listă de valori ale acestui câmp
Selectai pentru a vedea instantaneu efectul schimbărilor
Clicai pentru a aplica schimbările şi pentru a părăsi fereastra Clicai pentru a părăsi fereastra f ără a aplica schimbările
Clicai pentru a aplica schimbările f ără a părăsi fereastra
Clicai pentru a obine informaii despre anumite proprietăi particulare
Fig. 5.14. Modificarea proprietăilor obiectelor grafice.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
113/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
114
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
5.3.9.2. Editarea graficelor folosind funciile MATLAB. Dacă preferai să editai grafice direct de la linia de comandă sau din fişiere M, putei folosi comenzile MATLAB dedicate. Folosind sistemul MATLAB Handle Graphics, putei folosi comenzile de schimbare a proprietăilor obiectelor într-un grafic. 5.3.10. Salvarea figurilor. Pentru a salva o figură, selectai Save din meniul File. Pentru a o salva folosind un format grafic, cum ar fi TIFF, pentru utilizare în cadrul altor aplica ii, selectai Export din meniul File. Putei deasemenea salva figuri de la linia de comandă utilizând comanda saveas. De pildă tastai: saveas(figure(1), 'figure.tiff')
(5.15)
În urma lansării comenzii (5.15) MATLAB va salva figura figure(1) în fişierul figure.tiff. Pentru verificarea existenei acestui fişier tastai dir. Figura astfel salvată poate fi inserată de pildă într-un document sau utilizată în altă aplicaie.
5.3.11. Tipărirea graficelor. Putei tipări un grafic MATLAB la o imprimantă conectată la calculator sau putei exporta figura într-unul din formatele grafice standard suportate de MATLAB. Există două căi de tipărire a figurilor: • Folosind opiunea Print din meniul File • Folosind comanda print Comanda print permite mai multă flexibilitate. De pildă, instruciunea de mai jos salvează coninutul ferestrei figura curenta ca fişier TIFF cu numele figura.tiff cu rezoluie de 200 dpi. (5.16) print -dtiff -r200 figura.tiff Dacă tastai print la linia de comandă, MATLAB imprimă figura curentă la imprimanta activă.
5.4. Aplicaii numerice APLICA IA 20: Folosind func ia MATLAB plot reprezenta i pe acela şi grafic func iile: • f(x) = sin(x)/x şi • g(x) = cos(x)/(x+1) pe intervalul [0.001...20.π ]. Se face apel la următoarea secvenă de comenzi MATLAB: x = 0.001:pi/100:20*pi; f = sin(x)./x; g = cos(x)./(x+1);
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
114/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
115
plot(x, f, x, g); grid on; title('Graficul functiilor sin(x)/x si cos(x)/x'); MATLAB va afişa graficul de mai jos:
Fig. 5.15. Graficul funciilor sin(x)/x şi cos(x)/x.
21: APLICA i grafic func ia f(x)=sin(x) în grade de la 0 la 360. Reprezenta IA
Se foloseşte următoarea secvenă de comenzi MATLAB: x = 0:pi/100:2*pi; y = x*180/pi; f = sin(x); plot (y, f); grid on; xlabel('x [grade]'); ylabel('sin(x)'); title('Graficul functiei sin(x)'); MATLAB va afişa graficul următor, Fig. 5.16:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
115/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
116
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 5.16. Graficul funciei sin(x).
APLICA IA 22: Reprezenta i grafic func ia f(x) = sin(1/x) unde 0.01 < x < 0.1. Dac ă reprezentarea nu este precisă efectua i corec iile de rigoare. Ad ăuga i titlul « Graficul func iei f(x)=sin(1/x) » , pe axa x ad ăuga i « x [rad] » iar pe axa y ad ăuga i « f(x) ». Se foloseşte următoarea secvenă de comenzi MATLAB: x = 0.01:0.000001:0.1; f = sin(1./x); plot (x, f); title(’Graficul functiei f(x)=sin(1/x)’); xlabel(’x [rad]’); ylabel(’f (x)’); grid on; MATLAB va afişa graficul următor, Fig. 5.17:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
116/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
117
Fig. 5.17. Graficul funciilor sin(1/x).
După cum se poate observa, la definirea vectorului x s-a ales un pas foarte mic şi anume 0.000001. Paşii mai mari nu permit o reprezentare grafică fidelă a funciei. APLICA IA 23: Reprezenta i grafic func ia Rosenbrock sau ”banana”: f(x, y) = 100(y-x2)2+ (1-x)2 + 2. Intervalul de reprezentare este definit de: -3
Se foloseşte următoarea secvenă de comenzi MATLAB: [x, y] = meshgrid(-3:0.1:3, -5:0.1:10); f = 100*(y - x.^2).^2 + (1 - x).^2 + 2; mesh (x, y, f); contour (x, y, f); meshc (x, y, f); xlabel('x'); ylabel('y'); zlabel('f(x, y)'); MATLAB va afişa graficul din Fig. 5.18:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
117/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
118
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 5.18. Graficul funciei Rosenbrock.
APLICA IA 24: Reprezenta i pe acela şi grafic func iile: • f(x)=e x.sin(x) cu marker tip romb, culoare albastra, cu linie punct şi • g(x)= e x.cos(x) cu marker tip hexagon, culoare verde linie întrerupt ă. Argumentul func iei x respect ă condi ia 0 < x < 4π . Se foloseşte următoarea secvenă de comenzi MATLAB: x = 0:pi/100:4*pi; f = exp(x).*sin(x); g = exp(x).*cos(x); plot (x, f, 'b-.d', x, g, 'g--h'); title('Graficul functiilor e^x.sin(x) si e^x.cos(x)'); xlabel('x [rad]'); grid on; Rezultatul MATLAB este reprezentat de graficul următor, Fig. 5.19:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
118/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
119
Fig. 5.19. Graficul funciilor ex . sin(x) şi ex . cos(x).
APLICA IA 25: Să se reprezinte grafic următoarele func ii în intervalul [1, 2] pe acela şi grafic: a) ln(2 + t + t 2) b) et(1 + cos(3t)) c) cos-1(t) + sin2(t) d) tg-1(t) (inversa func iei tangent) e) cotg(t) Se foloseşte setul de instruciuni MATLAB: t = 1: 0.01: 2; y1 = log(2 + t + t.^2); y2 = exp(t.*(1 + cos(t))); y3 = acos(t) + sin(t).^2; y4 = atan(t); y5 = cot(t); plot(t, y1, t, y2, t, y3, t, y4, t, y5); MATLAB va trasa următorul grafic, Fig. 5.20.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
119/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
120
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 5.20. Graficul funciilor ln(2 + t + t 2), et(1 + cos(3t)), cos-1(t) + sin2(t), tg-1(t), cotg(t).
APLICA IA 26: Se d ă un transformator monofazat caracterizat de urm ătoarele date nominale: Sn = 1000 VA, Pjn = 50 W şi Pfe = 15 W. S ă se traseze caracteristica randamentului transformatorului η = f( β ) pentru sarcină pur rezistivă cu β ∈ [0, 1], ştiind că: η = β . Sn / ( β . Sn + β 2 .Pjn + Pfe ) Se foloseşte ansamblul de comenzi MATLAB: Sn = 1000; Pjn = 50; Pfe = 15; beta = 0:0.01:1; rand = beta*Sn./(beta*Sn + beta.^2*Pjn + Pfe); plot(beta, rand); xlabel('\beta [u.r.]'); ylabel('\eta [u.r.]'); grid on; MATLAB va afişa graficul din Fig. 5.21.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
120/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
121
Fig. 5.21. Graficul funciei η = f(β).
APLICA IA 27: Folosind pe rând toate func iile din Tabelul 5.2, reprezenta i grafic func ia Z ob inut ă prin comanda MATLAB, [X, Y, Z] = peaks. Se foloseşte următoarea secvenă de comenzi MATLAB: [X, Y, Z] = peaks; figure(1); mesh (X, Y, Z); figure(2); surf (X, Y, Z); figure(3); meshc (X, Y, Z); figure(4); surfc (X, Y, Z); figure(5); meshz (X, Y, Z); figure(6); pcolor (X, Y, Z); figure(7); surfl (X, Y, Z); figure(8); surface (X, Y, Z); MATLAB va afişa graficele următoare, Fig. 5.22.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
121/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
122
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
122/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
123
Fig. 5.22. Graficul funciei peaks folosind facilităile grafice MATLAB.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
123/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
124
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
6. ELEMENTE DE PROGRAMARE MATLAB MATLAB lucrează fie în modul linie de comand ă, caz în care fiecare linie este prelucrată utilizând programe scrise în fi şiere şi rezultatele şierele afişse ate,numesc fie . FiUn con iuni imediat MATLAB fişiere M, întrucât au extensia .m. fişiercare M in instrucsunt poate fi de două tipuri, script sau function. Ambele tipuri de fi şiere sunt scrise în format ASCII , iar algoritmul implementat poate fi urmărit şi modificat cu usurină dacă se cunosc conveniile şi sintaxa limbajului de programare MATLAB. Aceste tipuri de fi şiere M permit crearea unor noi funcii care pot completa setul funciilor existente. Astfel MATLAB poate fi extins, permiând abordarea anumitor aplicaii specifice din ştiină şi inginerie.
6.1. Fişiere de tip M şierele sunt fişiere externesedeexecut tip text care con in script. FiPrin script numelui 6.1.1. de tip secven de comenzi MATLAB. apelarea fişierului, ele de e Fişiere ă secven comenzi MATLAB coninute în fişier. După execuia completă a unui fişier script variabilele cu care acesta a operat rămân în Workspace. Aceste fişiere nu permit integrarea în programe mari, realizate pe principiul modularizării. Fişierele script pot fi folosite la rezolvarea unor probleme care necesită un număr relativ mare de instruciuni a căror lansare la linia de comandă ar deveni greoaie.
6.1.2. Fişiere de tip function. În cazul în care prima linie a unui fi şier M conine cuvântul cheie function fişierul respectiv intră în categoria fişierelor de tip function. Un fişier de tip function diferă de un fişier de tip script prin faptul că acceptă argumente de ii, în general intrare. Astfel, ladeterminarea execu unei funcForma memoria nu răfimân decât variabilele ieşire ale func primei linii a unui ieiieirespective. ă a calculatorului şier funcie este:
function [par_iesire1, par_iesire2 ...] = nume_func ie(par_intrare1, par_intrare2 ...) (6.1) unde : • function reprezintă un cuvânt cheie obligatoriu prin care se declară că fişierul este de tip function • nume_func ie reprezintă numele funciei, adică numele sub care este salvat fi şierul, însă f ără extensie. Numele funciei nu poate fi identic cu cel al unui fi şier M pre-existent. • par_iesire1, i prin reprezint parametri ieşire trebuiescdesepara virgulă par_iesire2 paranteze drepte.ă Dac ia nu areceparametri ieşire, parantezele şi cuprinşi între ă funcde
drepte şi semnul egal nu mai au sens. • par_intrare1, par_intrare2 reprezintă parametri de intrare ce trebuiesc separai prin virgulă şi cuprinşi între paranteze rotunde. Dacă funcia nu are parametri de intrare, parantezele rotunde nu mai au sens. Fişierele funcie pot fi adăugate ca funcii noi în structura MATLAB. Instruciunile şi comenzile utilizate de noua funcie sunt înregistrate într-un fişier cu extensia .m. De pildă
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
124/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
125
fişierul de tip funcie având numele medie.m calculează media aritmetică a elementelor unui vector şi are sintaxa de mai jos: function m = medie (x) n = length (x) m = sum (x)/n y = [’Media aritmetica a numerelor este:’, num2str(m)]; disp(y)
(6.2)
Aceste instruciuni trebuiesc salvate în fişierul cu numele medie.m Din punctul de vedere al programatorului, MATLAB transmite prin valoare doar argumentele funciilor pe care acestea le modific ă. Dacă o funcie nu alterează un argument ci îl utilizează doar într-un calcul, MATLAB transmite argumentul prin referin ă pentru a optimiza folosirea memoriei. Fiecare funcie MATLAB are alocată o anumită cantitate de memorie diferită de Workspace-ul de bază MATLAB. Această memorie reprezintă Workspace-ul funciei respective. În cursul rulării MATLAB-ului, singurele variabile pe care le putei accesa sunt cele din Workspace-ul curent, fie că acesta este Workspace-ul de bază sau Workspace-ul unei funcii. Variabilele pe care le transmitei unei funcii trebuie să aparină Workspace-ului curent şi funcia întoarce argumente de ieşire spre Workspace-ul curent. Putei totuşi să definii variabile ca variabile globale, acestea putând fi accesate din mai multe Workspace-uri.
6.1.3. Includerea de comentarii şi informaii de tip help într-un fişier M. Introducerea unui comentariu într-un program se realizează prin adăugarea caracterului procent (%) plasat la începutul liniei. Dacă semnul procent (%) apare pe prima poziie într-o linie, aceasta va fi omisă de compilator, iar dacă apare în oricare altă poziie într-o linie de program, partea de program care urmează după acest caracter va fi omisă. Un comentariu poate apărea în oricare poziie într-un program însă este recomandată poziionarea comentariilor la începutul fişierului script sau după prima linie care declară o funcie în cazul fişierelor de tip function. În acest caz, comentariul respectiv care apare la începutul unui fişier script sau imediat după linia de declarare a unei funcii, constituie help-ul fişierului respectiv. Dacă se apelează: help nume_script sau help nume_func ie se afişează liniile care încep cu semnul procent şi sunt situate între prima linie de comentariu şi prima linie liberă în cazul fişierelor script , respectiv între prima linie de comentariu dup ă declararea funciei şi prima linie liberă sau prima instruciune ce urmează acestui grup compact de linii. Prin urmare pen tru a ataşa un help unui program MATLAB se scriu liniile de program începând cu semnul procent (%) şi sunt plasate între prima linie dup ă declararea funciei şi prima linie liberă sau prima instruciune ce urmează acestui grup compact de linii. După ultima linie a help-ului se las ă o linie liberă sau se trece direct la o instruc iune MATLAB, ca în exemplul de mai jos: Function nume_functie % Aceasta linie lipseste la fisierele script % Prima linie de help
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(6.3)
125/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
126
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
% 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 Dacă un program MATLAB salvat într-un fişier M care are structura de mai sus este apelat ca mai jos: help nume_functie
(6.4)
MATLAB va afişa mesajul: % Prima linie de help
(6.5)
A doua linie de help % ... % Ultima linie de help
6.1.4. Crearea, editarea şi depanarea fişierelor M. Există mai multe metode de creare, editare şi depanare a fişierelor M, după cum este prezentat în Tabelul 6.1. Tabel 6.1 Funcie Crearea şi fişierelor M
Metoda editarea Folosind MATLAB Editor Folosind MATLAB Editor de sine stătător f ără a lansa MATLAB Folosind oricare editor de text, cum ar fi Notepad, WordPad, etc. ş Depanarea fi ierelor M Folosind instruciunile generale de depanare Folosind MATLAB Debugger Folosind MATLAB Debugging Functions
6.1.4.1. Crearea şi editarea fişierelor M folosind MATLAB Editor. Crearea şi editarea fişierelor M poate fi efectuată eficient folosind MATLAB Editor. MATLAB Editor pune la dispoziia utilizatorului o interfaă grafică performantă de editare clasică de text (vezi paragraful 1.4.2.8). Această aplicaie poate fi folosită atât în cadrul MATLAB-ului, cât şi ca o aplicaie de sine stătătoare f ără a necesita neapărat lansarea pachetului de programe MATLAB. În afara funciilor de editare obişnuite, MATLAB Editor prezintă şi funcii specifice cum ar fi, Tabel 6.2: Tabel 6.2 Funcie Transformarea unor linii de cod în comentarii sau a unor comentarii în linii de cod prin adăugarea sau eliminarea simbolului % Alinierea inteligentă a instruciunilor
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
Mod de lucru Se selectează liniile respective în MATLAB Editor şi apoi fie se selectează meniul Text -> Comment/Uncomment fie se apasă Ctrl+R/Ctrl+T fie se selectează Comment/Uncomment din meniul contextual Se selectează liniile respective în MATLAB Editor şi apoi fie se selectează meniul Text -> Smart Indent fie se
126/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Identificarea acoladelor
parantezelor
Indentare
127
apasă Ctrl+I, fie se selectează Smart Indent din meniul contextual şi Se pozi ionează cursorul între două paranteze sau acolade ( ), [ ], { }, şi apoi fie se selectează meniul Text -> Balance Delimiters, fie se apasă Ctrl+B. Dacă nu există nici o pereche de paranteze delimitatoare MATLAB lansează un beep sonor. Se selectează liniile respective în MATLAB Editor şi apoi fie se selectează meniul Text -> Decrease Indent/ Increase Indent fie se apasă Ctrl+[/Ctrl+]
Fişierele M pot fi create şi editate şi utilizând editoare exterioare MATLAB-ului, cum ar fi Notepad, Wordpad etc. Pentru a fi considerate de către MATLAB drept fişiere M, fişierele create cu aceste editoare trebuiesc salvate cu extensia .m.
6.1.4.2. Depanarea fişierelor M folosind MATLAB Debugger. Depanarea sau procesul prin careexist suntă dou identificate rezolvate problemele din cadrul Debugging codului dvs. este MATLAB. În principiu ă tipuri deşi erori: • Erori de sintaxă – de pildă, introducerea greşită a unui nume de func ie sau omiterea unei paranteze. Când lansai un fişier M cu o eroare de sintaxă, în mod normal MATLAB o va detecta şi va afişa un mesaj de eroare în Command Window descriind eroarea şi numărul liniei în fişierul M. Clicai pe poriunea subliniată a mesajului de eroare, sau poziionai cursorul pe mesajul de eroare şi apăsai Ctrl+Enter. Fişierul M ce conine eroarea se deschide în Editor, cu linia eronată afişată în prim plan. • Erori run-time – aceste erori sunt în general de algoritm. Erorile run-time sunt vizibile când fişierul M produce rezultate neaşteptate. Identificarea erorilor de sintaxă nu este de regulă dificilă dacă se ine cont de mesajele de eroare MATLAB. Erorile run-time sunt însă mai dificil de identificat deoarece acestea pot apare în interiorul anumitor funcii. Iată câteva sfaturi pentru identificarea şi înlăturarea erorilor run-time: • Ştergei simbolurile ”;” din instruc iunile fişierelor M cu pricina. În urma acestei operaiuni MATLAB va afişa rezultatele pe ecran pe durata execu iei fişierului M; • Adăugai instruciunea keyboard la fişierul M. Instruciunile keyboard opresc execuia fişierului M la un anumit punct unde acestea apar şi vă permit examinarea şi modificarea Workspace-ul local al funciei. Acest mod este indicat de un prompt special: K>> Continuarea execuiei funciei se realizează tastând return şi apăsând tasta Return; • Folosii MATLAB Debugger sau funciile debugging. Acestea sunt folositoare pentru corectarea erorilor run-time deoarece putei accesa Workspace-ul funciilor şi apoi putei examina sau schimba valorile pe care le con in. Putei defini sau şterge puncte de întrerupere sau breakpoints, pentru oprirea execuiei programului la o anumită locaie (la o anumită linie de program) în interiorul fişierelor M.
A) Definirea punctelor de întrerupere sau breakpoints. Definirea unor breakpoints permit oprirea execuiei unei funcii facând astfel posibilă examinarea valorilor unor variabile la anumite locaii unde există o posibilă eroare. Putei defini breakpoints doar în
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
127/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
128
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
dreptul liniilor executabile din cadrul fişierelor M salvate, care se află în directorul curent sau în directoare aflate în calea de căutare. La crearea unui nou fişier M, acesta trebuie salvat înainte de a defini breakpoints. Nu putei defini breakpoints cât timp MATLAB este deja lansat în execuia unui program. Pentru a defini un breakpoint în dreptul unei linii de program clicai pe zona breakpoint în dreptul liniei de program respectivă. Zona breakpoint este coloana situată imediat în dreapta coloanei ce conine numerele liniilor. Definii breakpoints în dreptul liniilor precedate de o liniua ”-”. Celelalte linii, de pildă comentariile sau liniile goale, nu sunt executabile; dacă încercai să definii un breakpoint acolo, acesta este definit în dreptul următoarei linii executabile. Alte metode de a defini un breakpoint constau în poziionarea cursorului pe linie şi apoi clicai pe butonul de definire/ ştergere de breakpoints din toolbar, sau selectai Set/Clear Breakpoint din meniul Breakpoints sau din meniul contextual. Un punct roşu va apare în zona breakpoints, în dreptul liniei selectate, ca în figura de mai jos, Fig. 6.1. Eliminarea punctelor de întrerupere din dreptul anumitor linii poate fi realizată plasând cursorul pe linia respectivă şi fie f ăcând apel la butonul din toolbar-ul ferestrei MATLAB Debugger fie clicând pe punctul roşu existent în zona breakpoint fie clicând pe Set/Clear breakpoint în meniul Breakpoints sau în meniul contextual. Punctele de întrerupere pot fi eliminate toate odată f ăcând apel la opiunea Set/Clear Breakpoint din meniul Breakpoints.
Fig. 6.1. Exemplu de definire a punctelor de întrerupere (breakpoints).
B) Lansarea fişierelor M ce conin breakpoints. După definirea breakpoints, lansai în execuie fişierul M din Command Window sau din Editor/Debugger. Lansarea fişierului M conduce la următoarele: • Promptul în Command Window se transformă în K>> indicând că MATLAB este în mod debugger. • Execuia programului este oprit ă la primul breakpoint. • La continuarea execuiei programului linia curentă va intra în execuie. C) Execuia pas cu pas a instruciunilor fişierului M. În mod debugger, putei executa pas cu pas instruciunile unui fişier M, oprindu-vă în punctele în care dorii să evaluai
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
128/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
129
anumite valori. În acest sens folosi i butoanele de tip step din meniul Debug al ferestrei Editor/Debugger după cum este prezentat în Tabelul 6.3. Tabel 6.3 Butonul toolbar -
Opiune a meniului Debug Continue sau Run sau Save and Run Go Until Cursor Step Step In Step Out Exit Debug Mode
Descriere Continuă execuia fişierului M până la sfârşit sau până întâlneşte un alt breakpoint. Continuă execuia fişierului M până la linia unde este poziionat cursorul. Opiune care poate fi apelată şi din meniul contextual. Execută linia curentă a fişierului M. Execută linia curentă a fişierului M şi dacă linia face apel la o altă funcie, intră în funcia respectivă. Dupa ce intră în funcia respectivă execută restul funciei sau subfunciei, părăseşte funcia respectivă şi se opreşte. Părăseşte modul Debug.
6.2. Tipuri de variabile şi de operatori 6.2.1. Tipuri de variabile. MATLAB conine trei tipuri de variabile: locale, globale şi persistente. Regulile şi recomandările privind folosirea variabilelor în programarea MATLAB de tip linie de comand ă rămân valabile şi în cazul programarii utilizând fi şiere de tip M . Astfel trebuiesc avute în vedere următoarele aspecte: • Nu este necesară declararea variabilelor folosite în fi şiere M, în afară de cazul când acestea trebuiesc declarate ca variabile de tip global sau persistent; • Înainte de a asigna o variabilă alteia, trebuie să vă asigurai că variabila din dreapta
asignării există şi are o anumită valoare; • Orice operaie de alocare a unei valori unei variabile conduce la crearea variabilei dac ă aceasta nu există, sau în cazul în care aceasta deja exist ă, alocarea conduce la rescrierea unei noi valori în respectiva variabilă; • Verificarea numelui unei variabile poate fi efectuat ă folosind funcia isvarname pentru asigurare că numele este valid înainte de a fi folosit. Func ia isvarname întoarce 1 dacă numele este valid şi 0 în caz contrar; • La definirea unei variabile asigurai-vă că numele respectivei variabile nu este deja afectat unei funcii.
6.2.1.1. Variabile locale. Funciile MATLAB au propriile lor variabile locale. Acestea sunt separate de variabilele altor funcii şi de acelea ale Workspace-ului de bază al MATLAB-ului. Variabilele definite într-o funcie nu rămân în memorie de la un apel la altul al unei funcii, decât dacă sunt definite ca variabile globale sau persistente. Fişierele script, pe de o parte, nu au Workspace separat. Acestea stochează variabilele într-un Workspace care este partajat cu apelatorul scriptului. Când sunt apelate de la linia de comandă, acestea partajează Workspace-ul de bază. Când sunt apelate dintr-o func ie, acestea partajează Workspace-ul acelei funcii.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
129/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
130
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
6.2.1.2. Variabile globale. Dacă o variabilă de tip global este declarată în acelaşi timp în mai multe funcii şi chiar în Workspace-ul de bază al MATLAB-ului, atunci toate acestea partajează o singură copie a acelei variabile. Orice alocare a acelei variabile în oricare dintre funcii este vizibilă pentru celelalte funcii care au declarat acea variabil ă drept global ă. Fiecare funcie MATLAB care foloseşte variabile globale poate avea propriile sale variabile locale. Înainte ca o funcie să poată folosi o variabilă globală trebuie mai întâi să declare această variabilă global ă. Declaraiile de variabile globale trebuiesc plasate la începutul funciei. De pildă pentru a declara variabila VAL ca variabilă global ă se foloseşte instruciunea: global VAL
(6.6)
Dacă fişierul M conine deasemenea subfuncii, atunci fiecare subfuncie care necesită acces la variabila globală trebuie să declare mai întâi variabila drept global ă. Pentru a accesa variabila de la linia de comandă MATLAB, aceasta trebuie mai întâi declarată ca variabilă globală la linia de comandă. Se recomandă ca numele de variabile globale MATLAB să fie în general mai lungi şi mai sugestive decât numele variabilelor locale, şi s ă conină litere mari. Aceste remarci nu sunt obligatorii, ci sunt recomandări pentru a creşte claritatea codului MATLAB şi pentru a reduce şansa de redefinire accidentală a unei variabile globale. Pentru a vizualiza doar variabilele declarate globale, folosii funciile who sau whos cu specificaia, global . Pentru exemplificare tasta i comenzile de mai jos: global MAXLUNG MAXLAT MAXLUNG = 36; MAXLAT= 78;
(6.7)
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 Există câteva sugestii în ceea ce priveşte folosirea variabilelor globale. În primul rând trebuie ştiut faptul că există un anumit risc asociat folosirii nejustificate a variabilelor globale şi din această cauză se recomandă să le utilizai f ără abuz şi anume atunci când este necesar. Ai putea de exemplu, f ără să ştii, să dai în interiorul unei funcii, un nume unei variabile globale care este deja folosit pentru o variabilă globală în altă funcie. Când lansai aplicaia, o funcie poate suprascrie neintenionat variabila folosită de cealaltă funcie. Acest tip de eroare este uneori dificil de depistat. O altă problemă apare când dorii să schimbai numele variabilei. Pentru a face o schimbare f ără a introduce o eroare în aplicaie, trebuie să găsii fiecare apariie a acelui nume în codul dvs. (şi/sau în codul altora dacă partajai funcii create de o echipă de programatori).
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
130/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
131
6.2.1.3. Variabile persistente. Caracteristicile variabilelor persistente sunt următoarele: • Pot fi utilizate doar în funcii; • Alte funcii nu le pot accesa; • MATLAB nu le şterge din memorie când func ia se încheie, aşa încât valoarea acestora iei; inutăide la un la altul funcM • este Dacăre şterge func sau edita al acelei funcii, atunci MATLAB şterge toate ia apel i fial şierul
variabilele persistente folosite în acea funcie.
Variabilele persistente trebuiesc declarate ca persistent înainte să le putei folosi într-o funcie. Este în general foarte bine s ă plasai declaraiile de variabile persistente la începutul funciilor. De pildă pentru a declara variabila SUMA_X ca persistentă tasta i: persistent SUM_X
(6.8)
Putei folosi funcia mlock pentru a păstra un fişier M neşters din memorie, astfel păstrând neşterse variabilele persistente din fişierul M corespunzător.
6.2.2. Tipuri de operatori. Există trei tipuri de operatori MATLAB: operatori aritmetici, operatori relaionali şi operatori logici. 6.2.2.1. Operatori aritmetici. Operatorii aritmetici sunt folosii în calculul numeric şi sunt prezentai anterior în paragrafele 2.3 şi 4.1. 6.2.2.2. Operatori relaionali. Operatorii relaionali permit compararea cantitativă a două mărimi şi sunt prezentai în Tabelul 6.4. Tabel 6.4
Operator < <= > >= == ~=
Descriere Mai mic decât Mai mic sau egal cu Mai mare decât Mai mare sau egal cu Egal cu Diferit de
6.2.2.3. Operatori logici. Operatorii logici sunt folosii la diverse operaii logice MATLAB după cum este prezentat în Tabelul 6.5. Pentru exemplificare se consider ă A = [0 1 1 0 1], B = [1 1 0 0 1]. Tabel 6.5 Operator & | ~
Descriere Întoarce 1 pentru fiecare locaie de element care adevarată în ambii vectori Întoarce 1 pentru fiecare locaie de element care adevarată în unul sau în celălalt vector Întoarce 0 pentru fiecare locaie de element care adevarată şi 1 pentru fiecare locaie de element care falsă
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
Exemplu este A & B = [0 1 0 0 1] este A | B = [1 1 1 0 1] este ~A = [1 0 0 1 0] este
131/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
132
xor
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Întoarce 1 pentru fiecare locaie de element care este xor(A, B) = [1 0 1 0 0] adevărată doar într-un vector şi 0 pentru toate celelalte elemente
6.3. Instruciuni de control logic
Există mai multe instruciuni de control logic care se folosesc în mod curent în aplica iile MATLAB.
6.3.1. Instruciunea if. Instruciunea if împreună cu else şi elseif , execută un grup de instruciuni în cazul în care este îndeplinit ă o anumită condiie logică: if expresie_logica instructiuni end
(6.9)
Dacă expresie_logica este adevarată (1), MATLAB execută toate instruciunile cuprinse între if şi end . Ulterior programul continuă execuia cu instruciunea situată pe linia imediat următoare după instruciunea end . Dacă expresia logică este falsă (0), MATLAB sare peste toate instruciunile cuprinse între if şi end şi continuă execuia începând cu linia plasat ă imediat după instruciunea end . De exemplu tasta i următoarea secvenă de instruciuni: a=3; b=2; if a>b disp('a este mai mare decât b') elseif b>=a disp('b este mai mare sau egal cu a') end
(6.10)
6.3.2. Instruciunea switch. Instruciunea switch, împreună cu case şi otherwise, execută diferite grupuri de instruciuni în funcie de valoarea anumitor condiii logice: switch expresie case valoare1 instructiuni % Executate daca expresie egal valoare1 case valoare2 instructiuni % Executate daca expresie egal valoare2 ... otherwise instructiuni % Executate daca expresie nu ia nici o valoare amintit ă mai sus end
(6.11)
Acest bloc constă în: • Cuvântul switch urmat de o expresie de evaluat; • Un anumit număr de grupuri case. Aceste grupuri constau din cuvântul cheie case urmat de o valoare posibilă, toate pe o singură linie. Liniile următoare conin instruciunile ce
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
132/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
133
urmează a fi executate pentru o valoare dată a expresiei. Acestea pot fi reprezentate de orice instruciune validă MATLAB incluzând eventual un alt bloc switch. Execuia unui grup case se sfârşeşte când MATLAB întâlneşte următoarea instruciune case sau otherwise. Doar instruciunile corespunzând primului case sunt executate; • Un grup opional otherwise. Acesta constă din cuvântul otherwise, urmat de instruciunile de executat dacă valoarea expresiei nu se încadrează în nici unul din grupurile case anterioare. Execuia grupului otherwise se sfârşeşte cu instruciunea end ; • Instruciune end . Tasta i de pildă următoarea secvenă de instruciuni: 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
(6.12)
6.3.3. Instruciunea while. Instruciunea while execută un grup de instruciuni de un număr indefinit de ori, având la bază anumite condiii logice. Sintaxa instruciunii while este: while expresie_logica instructiuni end
(6.13)
Dacă expresie_logica este adevarată sunt executate instruciunile cuprinse între while şi end . Tasta i spre exemplificare comenzile de mai jos: n = 1; while prod(1:n) < 1e100 n = n + 1 end
(6.14)
6.3.4. Instruciunea for. Instruciunea for execută un grup de instruciuni de un anumit număr impus de ori. Sintaxa instruc iunii este: for index = start:increment:end instruc iuni end
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(6.15)
133/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
134
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Incrementul implicit este 1. Putei specifica orice increment, inclusiv unul negativ. Pentru indici pozitivi, execuia se termină când valoarea indexului depăşeşte valoarea end ; pentru increment negativ, bucla se încheie când indexul devine mai mic decât valoarea end . Tasta i secvena de instruciuni de mai jos: m=3; n=5; for i = 1:m for j = 1:n A(i, j) = 1/(i + j - 1) end end
(6.16)
6.3.5. Instruciunea continue. Instruciunea continue cedează controlul iteraiei următoare în cazul unei bucle for sau while, neglijând orice altă instruciune existentă în corpul buclei, ca în 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
(6.17)
6.3.6. Instruciunea break. Instruciunea break termină execuia unei bucle for sau while ca în exemplul de mai jos. clc; clear all; m=30; for i = 1:m A(i) =floor(10*rand(1)) if (A(i) ==0) break end end
(6.18)
6.3.7. Instruciunile try...catch şi return. Instruciunea try...catch este folosită în general la detectarea erorilor în cursul execuiei, iar instruciunea return permite întoarcerea la programul sau funcia invocatoare.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
134/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
135
6.4. Interaciunea program-utilizator Există trei modalităi de interaciune a unui program cu utilizatorul pe durata execuiei unui program MATLAB: •• Ob inerea unei ă; unuipauze răspuns tastatur Definirea pândeă la când utilizatorul apasă o tastă; • Construcia unei interfee grafice cu utilizatorul.
6.4.1. Obinerea unui răspuns de la tastatură. Funcia input afişează un prompt şi aşteaptă un răspuns al utilizatorului. Sintaxa funciei este n = input('prompt_string')
(6.19)
Funcia afişează şirul de caractere prompt_string, aşteaptă răspunsul de la tastatură şi apoi întoarce valoarea introdusă de la tastatură. Dacă utilizatorul introduce o expresie, ia o evalueaz ă şiilor ă funcie func i întoarce valoarea Aceastîntoarce este folositoare pentru implementarea aplica cu meniu. Funcacesteia. ia input poate deasemenea un răspuns al utilizatorului de tip string. Pentru un răspuns de tip string, adăugai 's' ca argument al funciei:
Adresa = input('Introduceti adresa: ','s');
(6.20)
6.4.2. Definirea unei pauze. Anumite fişiere M necesită definirea unor pauze între execuiile anumitor paşi. Comanda pause, f ără nici un argument, opreşte execuia până când utilizatorul apasă o tastă. Pentru a face o pauz ă de n secunde, folosii funcia sub forma pause(n). 6.4.3. Construcia unei interfee grafice folosind GUI (Graphical User Interfaces). Pentru a construi o interfaă grafică se poate face apel la facilităile MATLAB dezvoltate în acest sens. În cele ce urmeaz ă vom exemplifica construcia unei interfee grafice simple de tip GUI folosind MATLAB GUIDE (Graphical User Interfaces Development Environment). Se menionează că instruciunile prezentate mai jos sunt valabile în MATLAB versiunea 6.5. Dacă se foloseşte altă versiune de MATLAB pot apare anumite diferene în ceea ce priveşte comenzile de dezvoltare a aplicaiei. Interfaa grafică primeşte ca parametrii de intrare dou ă frecvene f1 şi f2 şi trasează graficul funciei sin(2*pi*f1*timp)+f1/f2*sin(2*pi*f2*timp) analizând spectrul frecvenelor coninute în acest semnal. Pentru crearea interfeei grafice se face apel la MATLAB GUIDE tastând la promptul ferestrei Command Window comanda guide. În cutia de dialog care tocmai a ap ărut, Fig. 6.2, selectai Blank GUI (Default) în câmpul GUIDE Template.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
135/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
136
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 6.2. Lansarea GUIDE în vederea construciei unei interfee grafice
i peăbutonul ai efectuat selec ia clica căsuei de dialog. ÎnGUIDE urma acestei acDup iuni ăvaceapare o fereastr reprezint mediul OK al de dezvoltare MATLAB având ă ce înf ăişarea ca în figura de mai jos, Fig. 6.3.
Fig. 6.3. Fereastra de lucru a unei interfe e grafice
În zona din stânga ecranului sunt dispuse obiectele predefinite disponibile în MATLAB. Adăugai pe foaia de lucru două obiecte de tip Axes, prin dragging. În continuare adăugai două obiecte de tip Edit Text şi cinci obiecte de tip Static Text. Apoi adăugai şi un obiect de tip Push Button. După ce ai plasat pe foaie aceste obiecte acestea trebuie s ă arate cam ca în figura de mai jos, Fig. 6.4.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
136/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
137
Fig. 6.4. Adăugarea unor obiecte la o interfa ă grafică
Acum putei salva interfaa grafică cu numele Proc_sem printr-un clic pe meniul File + Save As. În urma operaiunii de salvare, MATLAB crează două fişiere Proc_sem.fig şi Proc_sem.m cel de-al doilea fiind în mod automat deschis, ca în Fig. 6.5.
Fig. 6.5. Coninutul fişierului Proc_sem.m asociat interfeei grafice
Acest ultim fişier conine codul specific interfeei grafice unde trebuiesc adăugate instruciunile de execuie a anumitor comenzi de interaciune a utilizatorului cu programul.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
137/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
138
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Ne vom întoarce în MATLAB GUIDE în care se vor redimensiona şi rearanja obiectele adăugate pe foaie, folosind uneltele MATLAB, aşa încât acestea să arate ca în Fig. 6.6.
Fig. 6.6. Aranjarea şi dimensionarea obiectelor interfeei grafice
În continuare se vor schimba proprietăile obiectelor plasate pe foaia MATLAB GUIDE. Pentru aceasta executai un dublu clic pe obiectul axes1 deschizând astfel fereastra Property Inspector specifică acestui obiect grafic, ca în figura de mai jos, Fig. 6.7.
Fig. 6.7. Definirea proprietăilor obiectelor interfeei grafice
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
138/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
139
Modificai proprietatea Tag a obiectului schimbând-o din axes1 în frec şi apoi închidei fereastra Property Inspector. În mod similar se modifică proprietatea Tag a obiectului axes2 schimbând-o în timp. În mod identic se modifică proprietatea String a obiectului Static Text aflat sub obiectul frec aceasta fiind schimbată în Frecventa [Hz] . Apoi se modifică proprietatea String a obiectului Static Text aflat sub obiectul timp aceasta fiind schimbată în Timp [s] . Apoi se modifică proprietăile obiectului Static Text aflat în zonă superioară a ferestrei. Astfel proprietatea String este schimbată în sin(2*pi*f1*timp)+f1/f2*sin(2*pi*f2*timp), iar proprietatea Font Size este schimbată în 11. În continuare se modifică proprietatea String a obiectului Static Text aflat deasupra primei căsue de tip Edit Text aceasta fiind schimbată în Frecventa f1 [Hz]:. În mod similar se modifică proprietatea String a obiectului Static Text aflat deasupra celei de-a doua căsue de tip Edit Text aceasta fiind schimbată în Frecventa f2 [Hz]:. Acum urmează modificarea proprietăilor căsuelor tip Edit Text. Mai întâi se vor schimba proprietăile căsuei Edit Text superioare: proprietatea String devine 50 iar proprietatea Tag devine in_frec1. În continuare se vor schimba propriet ăile căsuei Edit Text inferioare: proprietatea String devine 150 iar proprietatea Tag devine in_frec2. În continuare se modifică proprietatea String a obiectului Push Button aceasta devenind Plot. În final prin dublu clic pe zona dintre obiectele grafice se modifică proprietatea Name a ferestrei globale aceasta devenind Procesare de semnal . După ce redimensionai corespunzător obiectele interfeei grafice aceasta trebuie să arate ca în figura de mai jos, Fig. 6.8.
Fig. 6.8. Noua formă a interfeei grafice
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
139/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
140
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
În cele ce urmează trebuie adăugat codul necesar efectuării operaiei propriu-zise de analiză de semnal şi de trasare a graficului funciei superpoziie. În acest sens selectai butonul Plot şi apoi meniul View + Component Callbacks + Callback. Această comandă va deschide fişierul cod de tip M în dreptul funciei pushbutton1_Callback. 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)
(6.21)
Instruciunile de mai jos trebuiesc introduse de către utilizator în continuare la corpul funciei: f1=str2double(get(handles.in_frec1, 'String')); f2=str2double(get(handles.in_frec2, 'String'));
(6.22)
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; În continuare se salvează modificările efectuate în fişierul M şi de la linia de comand ă a ferestrei Command Window se tastează Proc_sem. Această comandă va lansa interfaa grafică creată şi aceasta va apărea sub forma din Fig. 6.9.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
140/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
141
Fig. 6.9. Interfaa grafică după lansarea în execuie
În această interfaă grafică presupunând ca se aleg valorile frecvenelor f1=50 Hz şi f2=150 Hz se poate trasa grafic semnalul de tip superpozi ie, respectiv spectrul de frecvene ce intră în componena semnalului rezultant, apăsând pe butonul Plot. Rezultatul este prezentat în figura de mai jos, Fig. 6.10.
Fig. 6.10. Trasarea graficelor în urma apelului butonului Plot al interfeei grafice
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
141/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
142
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
6.5. Operaii cu şiruri de caractere 6.5.1. Evaluarea şirurilor de caractere. Evaluarea şirurilor de caractere reprezintă o facilitate a limbajului de programare MATLAB care-i conferă acestuia putere şi flexibilitate, permiând executarea operaiilor de concatenare a şirurilor de caractere. 6.5.1.1. Funcia eval. Funcia eval evaluează un şir de caractere ce conine expresii, instruciuni sau apeluri de funcii MATLAB. Sintaxa funciei eval în forma sa cea mai simplă este următoarea: eval('string')
(6.23)
De pildă, în codul de mai jos este utilizată funcia eval pentru evaluarea unei expresii în vederea generării unei matrice de ordin n. t for = '1/(i*j-1)'; i = 1:n for j = 1:n a(i, j) = eval(t); end end
(6.24)
Iată şi un exemplu în care funcia eval este folosită pentru evaluarea unei instruciuni: eval('t = clock');
(6.25)
şiruri Putei concatena pentru a crea expresii complete pentrufunc a fiiei evaluate utilizând funcia eval . De de pildcaractere ă codul de mai jos permite crearea cu ajutorul eval a 10 variabile numite P1, P2, ...P10, şi setarea la fiecare dintre variabile o valoare diferită.
for i=1:10 eval(['P',int2str(i),'= i.^2']) end
(6.26)
6.5.1.2. Funcia feval. Funcia feval diferă de eval prin faptul că aceasta se aplică unei funcii şi nu unei expresii MATLAB. Funcia executată este specificată în primul argument. Spre exemplificare tastai comenzile de mai jos: fun = [@sin; @cos; @log]; k = input('Alegeti indexul func iei [1 pentru sin, 2 pentru cos, 3 pentru log]: '); x = input('Introduceti valoarea: '); feval(fun(k), x)
(6.27)
6.5.2. Funcii MATLAB cu şiruri de caractere. MATLAB pune la dispoziia utilizatorului o bibliotecă de funcii cu şiruri de caractere. Câteva dintre acestea sunt prezentate în Tabelul 6.6.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
142/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Tabel 6.6 Categorie General ă
Funcie blanks char deblank Opera ii cu şiruri findstr de caractere lower (stringuri) strcat strcmp strcmpi strjust strmatch strncmp strncmpi
Teste pe şiruri de caractere Conversie şiruri caractere numere
între de şi
strrep strvcat upper ischar isletter isspace double int2str mat2str num2str sprintf str2double str2num
143
Descriere Crează şiruri de blancuri Crează vectori de caractere Şterge blancurile de la sfârşitul şirurilor de caractere Caută un şir de caractere în altul Converteşte un şir de caractere în litere mici Concatenează şiruri de caractere Compară şiruri de caractere Compară şiruri de caractere neglijând faptul că literele sunt mici sau mari Aliniază şirurile de caractere Caută un şir de caractere în altele Compară primele n caractere ale unor şiruri de caractere Compară primele n caractere ale unor şiruri de caractere neglijând faptul ca literele sunt mici sau mari şte un Înlocuie ir de de caractere cu vertical altul Concateneaz ă şşiruri caractere Converteşte şiruri de caractere în litere mari Întoarce adevărat în cazul şirurilor de caractere Întoarce adevărat în cazul literelor alfabetului Întoarce adevărat în cazul blancurilor Converteşte şirurile de caractere în format numeric Converteşte întregi în şiruri de caractere Converteşte matrice în şiruri de caractere Converteşte numere în şiruri de caractere Scrie date formatate în şiruri de caractere Converteşte şirurile de caractere în numere dublă precizie Converteşte şirurile de caractere în numere
6.6. Aplicaii numerice APLICA IA 28: Să se scrie intruc iunile de mai jos în fi şierul script sistem.m. Să se salveze fi şierul în directorul curent şi să se lanseze în execu ie programul tastând la linia de comand ă sistem.
% Program de rezolvare a unui sistem de ecuaii 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
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
143/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
144
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
tic, x2 = A\b; toc % Rezolva sistemul şi cronometreaza timpul de calcul Evalua i diferen ele între solu iile x1 şi x2 calculate pe cele două căi, folosind comanda sum(abs(x1-x2)). Func ia abs calculează modulul elementelor unei matrice. Sunt diferen e între cele două solu ii ? Care solu ie este calculat ă mai rapid ?
Folosind MATLAB Editor se crează în directorul curent fişierul script sistem.m care conine comenzile MATLAB de mai sus şi se lansează în execuie prin tastarea în Command Window: sistem MATLAB va răspunde cu: elapsed_time = 2.4690 elapsed_time = 0.9850 Deci soluia x1 este calculată mai lent decât soluia x2. Diferena dintre cele două soluii se calculează cu formula: sum(abs(x1-x2)) MATLAB va răspunde cu: ans = 5.3549e-011 După cum era de aşteptat diferena dintre cele două soluii este foarte redusă. APLICA IA 29: Crea i fi şierul func ie medie_a.m con inând instruc iunile de mai jos şi salva i-l în directorul curent. Lansa i func ia pentru calculul mediei aritmetice a elementelor vectorului V=1:2.54:50.
function m = medie_a (x) n = length (x); m = sum (x)/n; y = [’Media aritmetica a elementelor vectorului este:’ num2str(m)]; disp(y) Folosind MATLAB Editor se crează în directorul curent fişierul function medie_a.m care conine următoarele comenzile MATLAB de mai sus. Funcia de mai sus se lanseaz ă în execuie pentru calculul mediei aritmetice a elementelor vectorului V = 1: 2.54: 50 prin tastarea în Command Window a comenzilor: V = 1: 2.54: 50 medie_a (V)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
144/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
145
MATLAB va răspunde cu: Media aritmetica a elementelor vectorului este: 25.13 ans = 25.1300 APLICA IA 30: Crea i fi şierul func ie fact.m care are ca parametru de intrare un număr n şi calculează [n]! unde [n] reprezint ă partea întreagă a lui n. În cadrul fi şierului func ie folosi i comenzile MATLAB factorial şi floor. Lansa i func ia pentru calculul lui [10.1]! şi [20.6]!. Compara i rezultatul cu cel ob inut cu func ia MATLAB prod(1:10) şi prod(1:20). Folosind MATLAB Editor se crează în directorul curent fişierul function fact.m care conine următoarele comenzile MATLAB: function f = fact (n) n = floor(n); f = factorial(n); Funcia de mai sus se lanseaz ă în execuie prin tastarea în Command Window a comenzilor: fact (10.1) fact (20.6) MATLAB va răspunde respectiv cu: ans = 3628800 ans = 2.4329e+018 Apoi se execută comenzile MATLAB: prod(1:10) prod(1:20) MATLAB va afişa răspunsul de mai jos, care este identic cu cel furnizat de funcia fact. ans = 3628800 ans = 2.4329e+018 APLICA IA 31: Ad ăuga i două linii de help la fi şierul de tip func ie fact.m definit în cadrul Aplica iei 30, care să explice destina ia func iei respective, după structura de mai sus şi executa i comanda help fact pentru a vizualiza rezultatul MATLAB.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
145/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
146
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Folosind MATLAB Editor se adaugă la fişierul fact.m 3 linii de comentarii explicative structura fişierului fact.m devenind: function f = fact (n) % Functia fact are ca parametru de intrare numarul n si permite calculul lui [n]! % unde [n] reprezinta partea intreaga a numarului n. n = floor(n); f = factorial(n); Se tastează în Command Window comanda: help fact MATLAB va răspunde cu: Functia fact are ca parametru de intrare numarul n si permite calculul lui [n]! unde [n] reprezinta partea intreaga a numarului n. APLICA IA 32: Folosind instruc iunile de control logic, crea i în directorul curent fi şierul func ie ec2.m care are ca parametrii de intrare trei numere (a, b, c) şi care calculează r ăd ăcinile ecua iei de ordinul ax2+ bx + c =0. În plus func ia trebuie să traseze graficul func iei f= ax2+ bx + c func ie de x, punând în eviden ă r ăd ăcinile şi maximul sau minimul func iei. Lansa i func ia pentru diferite valori ale parametrilor de intrare a, b, c şi verifica i corectitudinea opera iilor. Folosind MATLAB Editor se crează în directorul curent fişierul function ec2.m care conine următoarele comenzi MATLAB: function f = ec2 (a, b, c) if a == 0 disp('Parametrul a trebuie sa fie nenul'); elseif b^2-4*a*c < 0 disp('Ecuatia are radacini complexe'); else x1 = (-b -+sqrt(b^2-4*a*c))/2/a; sqrt(b^2-4*a*c))/2/a; x2 disp(['Radacinile ecuatiei sunt: ' num2str(x1) ' si ' num2str(x2)]); x = [x2-(x1-x2):(x1-x2)/100:x1+(x1-x2)]; y = a*x.^2 + b*x + c; xm = -b/2/a; ym = -(b^2-4*a*c)/4/a; plot(x, y, xm, ym, 'r+', x1, 0, 'mo', x2, 0, 'mo'); end
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
146/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
147
Lansând comanda MATLAB: ec2(1, 1, 1) MATLAB va răspunde cu: Ecuatia are radacini complexe Lansând comanda MATLAB: ec2(0, 1, 1) MATLAB va răspunde cu: Parametrul a trebuie sa fie nenul Lansând comanda MATLAB: ec2(1, -5, 6) MATLAB va răspunde cu următorul mesaj şi cu graficul din Fig. 6.11: Radacinile ecuatiei sunt: 3 si 2
Fig. 6.11. Trasarea graficului funciei de gradul 2.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
147/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
148
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
APLICA IA 33: Folosind instruc iunile de control logic, crea i în directorul curent fi şierul func ie fx.m care are ca parametru de intrare un num ăr x şi care calculează valoarea func iei: f(x) = 0.45*x+900, x-10, dacă -100
Folosind MATLAB Editor se crează în directorul curent fişierul function fx.m care conine următoarele comenzile MATLAB: function f = fx (x) if (x > -100) & (x < 100) f = x - 10; elseif >= 100) & (x <= 200) f = (x 0.45*x + 900; end x1 = -100:100; x2 = 100:200; f1 = x1 - 10; f2 = 0.45*x + 900; plot (x1, f1, 'b', x2, f2, 'r') Se lansează comanda MATLAB: fx(150) MATLAB va răspunde cu următorul mesaj, respectiv grafic: ans = 967.5000
Fig. 6.12. Trasarea graficului funciei f(x).
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
148/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
149
APLICA IA 34: Folosind instruc iunile de control logic, crea i în directorul curent fi şierul script fib.m care să calculeze primii n termeni (n să poat ă fi modificat de utilizator) ai şirului Fibonacci:Fn = Fn-1 + Fn-2, unde F0 = F1 = 1. Pentru acela şi n programul să calculeze Fn/ Fn-1. Este acesta egal cu num ărul de aur (1 + sqrt(5))/2 ? raportul Trasa i pe un grafic varia ia func ie de n a termenilor Fn şi pe alt grafic varia ia func ie de n a raportului Fn/Fn-1 pentru 1<=n<=50.
Folosind MATLAB Editor se crează în directorul curent fişierul function fib.m care conine următoarele comenzile MATLAB: n = 100; F0 = 1; F(1) = 1; F(2) = F(1) + F0; Rap(1) = F(1) / F0; Rap(2) = F(2) / F(1); for k = 3:n F(k) = F(k-1) + F(k-2) ; Rap(k) = F(k) / F(k-1) end vn = 0:50; figure(1); plot (vn, F(1:50), 'b') figure(2); plot (vn, Rap(1:50),'r') Se lansează în execuie comanda MATLAB: fib MATLAB va afişa cele două grafice de mai jos, Fig. 6.13.
Fig. 6.13. Trasarea graficelor specifice şirului Fibonacci.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
149/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
150
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
APLICA IA 35: Crea i în directorul curent un fi şier script p_ec2.m care cere interactiv utilizatorului să introducă de la tastatur ă valorile a trei parametri de intrare (a, b, c) şi care în continuare apelează func ia ec2.m definit ă în cadrul Aplica iei 32. Calcula i timpul scurs pentru calculul r ăd ăcinilor şi pentru trasarea graficului folosind ansamblul de func ii tic, toc.
Folosind MATLAB Editor se crează în directorul curent fişierul script p_ec2.m care conine următoarele comenzile MATLAB: a = input('Introduceti parametrul a: '); b = input('Introduceti parametrul b: '); c = input('Introduceti parametrul c: '); tic ec2(a, b, c); toc Se scrie în Command Window instruciunea MATLAB: p_ec2 MATLAB va răspunde invitând utilizatorul să introducă pe rând cei trei parametrii, a, b, c ca mai jos, apoi este afişat timpul de calcul, respectiv graficul funciei x2 - 1 cu evidenierea rădăcinilor şi a punctului de minim: Introduceti parametrul a: 1 Introduceti parametrul b: 0 Introduceti parametrul c: -1 Radacinile ecuatiei sunt: 1 si -1 elapsed_time = 0.0310
Fig. 6.14. Trasarea graficului funciei de gradul 2.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
150/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
151
APLICA IA 36: Crea i o interfa ă grafică folosind MATLAB GUIDE care să con ină: • un obiect de tip Axes , pentru reprezent ări grafice • un obiect de tip Static Text ce define şte titlul graficului • un buton de tip Push Button pentru execu ia graficelor Apăsând pe butonul tip Push Button să se reprezinte grafic func ia peaks folosind în mod aleator unul din seturile de instruc iuni 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);
Pentru crearea interfeei grafice se face apel la MATLAB GUIDE tastând la promptul ferestrei Command Window comanda guide. În cutia de dialog care tocmai a apărut selectai Blank GUI (Default) în câmpul GUIDE Template.
Fig. 6.15. Fereastra GUIDE Quick Start.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
151/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
152
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
După ce ai efectuat selecia clicai pe butonul OK al casuei de dialog. În urma acestei aciuni va apare o fereastră ce reprezintă mediul de dezvoltare MATLAB GUIDE având înf ăişarea ca în Fig. 6.16.
Fig. 6.16. Mediul de dezvoltare MATLAB GUIDE.
În zona din stânga ecranului sunt dispuse obiectele predefinite disponibile în MATLAB. Adăugai pe foaia de lucru un obiect de tip Axes, prin dragging. În continuare adăugai un obiect de tip Static Text şi un obiect de tip Push Button. După ce ai plasat pe foaie aceste obiecte acestea trebuiesc dimensionate ca s ă arate ca în Fig. 6.17.
Fig. 6.17. Noua înf ăişare a mediului de dezvoltare MATLAB GUIDE.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
152/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
153
Acum putei salva interfaa grafică cu numele graf_peaks printr-un clic pe meniul File + Save As. În urma operaiunii de salvare, MATLAB creaz ă două fişiere graf_peaks.fig şi graf_peaks.m cel de-al doilea fiind în mod automat deschis, ca în Fig. 6.18.
Fig. 6.18. Coninutul fişierului graf_peaks.m.
Acest ultim fişier conine codul specific interfeei grafice unde trebuiesc adăugate instruciunile de execuie a comenzilor de interaciune a utilizatorului cu programul. În continuare se vor schimba proprietăile obiectelor plasate pe foaia MATLAB GUIDE. Pentru aceasta executai un dublu clic pe obiectul axes1 deschizând astfel fereastra Property Inspector specifică acestui obiect grafic, ca în Fig. 6.19.
Fig. 6.19. Fereastra Property Inspector .
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
153/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
154
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Modificai proprietatea Tag a obiectului schimbând-o din axes1 în graf şi apoi închidei fereastra Property Inspector. Apoi se modifică proprietăile obiectului Static Text aflat în zonă superioară a ferestrei. Astfel proprietatea String este schimbată în Graficul functiei peaks, iar proprietatea Font Size este schimbată în 11. În continuare se modifică proprietatea String a obiectului Push Button aceasta devenind Plot. În final prin dublu clic pe zona dintre obiectele grafice se modifică proprietatea Name a ferestrei globale aceasta devenind Grafic - peaks. După efectuarea acestor modificări interfaa grafică trebuie să arate ca în Fig. 6.20.
Fig. 6.20. Noua înf ăişare a mediului de dezvoltare MATLAB GUIDE.
În cele ce urmează trebuie adăugat codul necesar plotării aleatoare a graficului functiei peaks. În acest sens selectai butonul Plot şi apoi meniul View + Component Callbacks + Callback. Această comandă va deschide fişierul cod de tip M în dreptul funciei pushbutton1_Callback. 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)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
154/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
155
Instruciunile de mai jos trebuiesc introduse de către utilizator în continuare la corpul funciei: n = round(4*rand); [X, Y, Z] = peaks; axes(handles.graf); if n == 0 mesh(X, Y, Z); elseif n == 1 surf(X, Y, Z); elseif n == 2 surfc(X, Y, Z); elseif n == 3 surfl(X, Y, Z); else pcolor(X, Y, Z); end În continuare se salvează modificările efectuate în fişierul M şi de la linia de comandă a ferestrei Command Window se tastează graf_peaks. Această comandă va lansa interfaa grafică creată şi aceasta va apărea ca în Fig. 6.21.
Fig. 6.21. Înf ăişarea interfeei grafice după comanda de lansare.
Apăsând pe butonul Plot se trasează graficul funcie peaks în mod aleator într-unul din formatele propuse, ca în Fig. 6.22.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
155/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
156
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 6.22. Graficul funciei MATLAB peaks ca rezultat la apelul butonului Plot .
APLICA IA 37: Să se creeze în directorul curent un fi şier script princ.m care apeleaz ă un alt fi şier de tip func ie functie.m care are la rândul său ca parametri de intrare 5 numele reale, şi anume 2
(a, b, x0), şi care trasează graficul func iei f = a ⋅ e -b(x-x 0 ) în intervalul [xmin, xmax] cu pasul (xmax-xmin)/1000. Parametrii xmin=-5, xmax=5 necesari trasării graficului vor fi defini i în programul principal ca variabile globale.
Folosind MATLAB Editor se crează în directorul curent fişierul script princ.m care conine următoarele comenzile MATLAB: global xmin global xmax xmin=-5; xmax=5; functie(1, 2, 3); Apoi se crează în directorul curent fişierul function functie.m care conine următoarele comenzile MATLAB: function f= functie(a, b, x0) global xmin global xmax x = xmin:(xmax-xmin)/1000:xmax;
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
156/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
157
f = a*exp(-b*(x-x0).^2); plot(x, f); În urma lansării în execuie a programului principal MATLAB va trasa urm ătorul grafic.
2
Fig. 6.23. Graficul funciei f = a ⋅ e -b(x -x 0 ) .
APLICA IA 38: Să se creeze în directorul curent un fi şier script cauta.m care să cear ă interactiv introducerea a două şiruri de caractere sirsursa şi şir. Acest fi şier trebuie să apeleze un fi şier de tip func ie cautastring.m care trebuie creat şi care are ca parametri de intrare sirsursa şi şir. Func ia trebuie să caute şir în sirsursa şi să înlocuiască apari iile acestuia cu un şir de blancuri şi să afi şeze noul şir de caractere modificat. Folosind MATLAB Editor se crează în directorul curent fişierul script cauta.m care conine următoarele comenzile MATLAB: sirsursa = input('Introduceti sirul sursa: '); sir = input('Introduceti sirul ce trebuie inlocuit: '); cautastring(sirsursa, sir); Apoi se crează în directorul curent fişierul function cautastring.m care conine următoarele comenzile MATLAB: function f= cautastring(sirsursa, sir) sirrez = strrep(sirsursa, sir, ' '); disp(sirrez);
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
157/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
158
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
În urma lansării în execuie a programului cauta.m MATLAB va cere utilizatorului introducerea şirurilor de caractere sursă, respectiv de înlocuit şi va afişa şirul rezultant. Introduceti sirul sursa: 'Intre;cuvinte;trebuie;spatiu'; Introduceti sirul ce trebuie inlocuit: ';' sirul rezultant este: Intre cuvinte trebuie spatiu APLICA IA 39: Să se creeze în directorul curent un fi şier script mare.m care să cear ă interactiv introducerea unui şir de caractere. Acest fi şier trebuie să înlocuiască toate caracterele şirului cu litere mari şi să afi şeze noul şir de caractere modificat. Folosind MATLAB Editor se crează în directorul curent fişierul script mare.m care conine următoarele comenzile MATLAB: sirsursa = input('Introduceti sirul sursa: '); sirrez = upper(sirsursa); disp(sirrez); În urma lansării în execuie a programului mare.m MATLAB va cere utilizatorului introducerea şirului de caractere sursă, şi-l va afişa pe cel rezultant: Introduceti sirul sursa: 'literele mici se fac mari' LITERELE MICI SE FAC MARI APLICA IA 40: Să se creeze în directorul curent fi şierul de tip func ie sumasin.m care are ca parametru de intrare vectorul x=0:0.0001:5 de numere reale, calculează func ia sumasin = sin + sinh + asin + asinh şi care traseaza graficul lui abs(sumasin) func ie de x. Folosind MATLAB Editor se crează în directorul curent fişierul script sumasin.m care conine următoarele comenzi MATLAB: function f=sumasin(x) f = sin(x)+sinh(x)+asin(x)+asinh(x); plot(x, abs(f)); Întâi se defineşte vectorul x şi apoi se apelează funcia sumasin: x=0:0.0001:5; sumasin(x);
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
158/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
159
În urma apelului funciei sumasin MATLAB va afişa graficul următor.
Fig. 6.24. Graficul funciei sumasin.
APLICA IA 41: Să se creeze în directorul curent un fi şier de tip script lista.m care cere ca date de intrare, în mod repetat, numele şi prenumele, grupa şi media unor studen i şi apoi afi şeaza lista de studen i, grupa şi mediile corespunzătoare în ordinea descrescătoare a mediilor. Programul se încheie când în loc de nume utilizatorul introduce un blanc. Se vor folosi structurile de tip cells , respectiv func ia sort. Structurile de tip cells sunt matricele clasice însă elementele fi de diverse reale, şidentice cells(numerele iruri de cu caractere etc.). Accesarea elementelorpot structurilor de tiptipuri se face folosind acolade {} în loc de paranteze () cum se folose şte în cazul matricelor.
Folosind MATLAB Editor se crează în directorul curent fişierul script lista.m care conine setul de comenzi MATLAB de mai jos. clc; clear all; i = 1; gata = 0; while gata=== 0 numes input('Introduceti nume student: '); if numes == ' ' gata = 1; break; end nume{i} = numes; prenume{i} = input('Introduceti prenume student: '); grupa{i} = input('Introduceti grupa student: ');
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
159/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
160
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
medie(i) = input('Introduceti medie student: '); i = i + 1; end if i~=1 [medieord I] = sort(medie); numeord = nume(I); prenumeord = prenume(I); grupaord = grupa(I); for k=1:length(medie) situatie{k, 1} = numeord{length(medie)-k+1}; situatie{k, 2} = prenumeord{length(medie)-k+1}; situatie{k, 3} = grupaord{length(medie)-k+1}; situatie{k, 4} = medieord(length(medie)-k+1); end situatie end Lansarea în execuie a fişierului de tip script lista.m conduce la rezultate similare cu cele prezentate mai jos. În urma introducerii interactive a datelor programul afi şează lista studenilor în ordinea descrescătoare a mediilor. Introduceti nume student: 'Popescu' Introduceti prenume student: 'Ion' Introduceti grupa student: '111IE' Introduceti student: 'Ionescu' 9.2 Introduceti medie nume student: Introduceti prenume student: 'George' Introduceti grupa student: '111IE' Introduceti medie student: 8.9 Introduceti nume student: 'Stanescu' Introduceti prenume student: 'Cristian' Introduceti grupa student: '111IE' Introduceti medie student: 9.7 Introduceti nume student: ' ' situatie = 'Stanescu' 'Cristian' '111IE' '111IE' [9.2000] [9.7000] 'Popescu' 'Ion' 'Ionescu' 'George' '111IE' [8.9000]
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
160/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
161
APLICA IA 42: Calcula i valorile curen ilor I 1 , I 2 , I 3 , I 4 , I 5 folosind teoremele lui Kirchoff şi opera iile cu matrice din MATLAB. Pentru rezolvare să se creeze fi şierul script kirc5.m care să cear ă interactiv utilizatorului valorile rezisten elor R1, R2, R3 şi R4 şi ale tensiunilor E1, E2 şi E3. pune i-le sub forma [R]*[I]=[E], unde [R] reprezint ă o matrice cunoscut ă de Cele 5 ecua i deiidimensiune coeficien 5x5, [I] reprezint ă un vector coloană necunoscut care con ine cei 5 curen i, iar [E] reprezint ă un vector coloană cunoscut. Rezolva i sistemul de ecua ii prin două metode distincte şi afi şa i rezultatele.
E1 I1
I 5 I2
I3 E3
R1
R2
R3 E2
I5
R4
I4
Se scriu ecuaiile lui Kirchoff corespunzătoare circuitului studiat: I1 - I2 + I5 = 0 - I3 + I4 + I5 = 0 R1·I1 + R2·I2 = E1 R2·I2 + R3·I3 = E2 R3·I3 + R4·I4 = E3 Sistemul de ecuaii trebuie pus sub forma matriceală [R]·[I] = [U] ca mai jos: 1·I1 - 1·I2 + 0·I3 + 0·I4 + 1·I5 = 0 0·I1 + 0·I2 - 1·I3 + 1·I4 + 1·I5 = 0 R1·I1 + R2·I2 + 0·I3 + 0·I4 + 0·I5 = E1 0·I1 + R2·I2 + R3·I3 + 0·I4 + 0·I5 = E2 0·I1 +0·I2 + R3·I3 + R4·I4 + 0·I5 = E3
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
161/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
162
0 1 − 1 0 0 −1 1 0 adică sub forma: R1 R 2 0 0 0 R 2 R3 0 0 0 R3 R 4
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
1 I 1 0 1 I 2 0 0 ⋅ I 3 = E 1 0 I 4 E 2 0 I 5 E 3
Folosind MATLAB Editor se crează în directorul curent fişierul script kirc5.m ce conine următoarele comenzile MATLAB: R1 = input('Rezistenta 1: '); R2 = input('Rezistenta 2: '); R3 = input('Rezistenta 3: '); R4 = input('Rezistenta 4: '); E1 = input('Tensiunea 1: '); E2 E3 = = input('Tensiunea input('Tensiunea 2: 3: '); '); R = [1 -1 0 0 1; 0 0 -1 1 1; R1 R2 0 0 0; 0 R2 R3 0 0; 0 0 R3 R4 0]; U = [0; 0; E1; E2; E3]; I = R\U I = inv(R)*U Apelând programul kirc5.m cu parametrii de mai jos, MATLAB va calcula curen ii prin cele 5 laturi ale circuitului electric. kirc5 Rezistenta 1: 1 Rezistenta 2: 2 Rezistenta 3: 3 Rezistenta 4: 4 Tensiunea 1: 10 Tensiunea 2: 20 Tensiunea 3: 30 I = 3.2000 3.4000 4.4000 4.2000 0.2000 I = 3.2000 3.4000 4.4000 4.2000 0.2000
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
162/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
163
Prin ambele metode se obin aceleaşi rezultate. Prin urmare valorile celor cinci curen i sunt: I1 = 3.2 A I2 = 3.4 A I3 = 4.4 A I4 = 4.2 A I5 = 0.2 A
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
163/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
164
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
7. CALCULE NUMERICE CU POLINOAME În acest capitol se prezintă funciile MATLAB de calcul polinomial pentru evaluarea şi generarea polinoamelor seiicunosc descompunerea acestora când în frac simple.rădăcinile, pentru calculul derivatei polinoamelor şi Polinomul este o funcie cu o singură variabilă, care poate fi exprimat sub următoarea formă generală: F(x) = a1 x n + a 2 x n-1 + a 3 x n-2 + ... + a n x1 + a n+1
(7.1)
unde x este variabila, iar a1, a2, ... , an sunt coeficienii polinomului. Gradul polinomului este egal cu cea mai mare valoare a exponentului. Reprezentarea MATLAB a unui polinom constă într-un vector linie care conine coeficienii în ordinea descrescătoare a puterii variabilei. Coeficienii polinomului au indicii de la 1 la n+1. Spre exemplu reprezentarea MATLAB a polinomului: F(x) = x 4 + x 2 + 2x + 3,
(7.2)
este dată de vectorul rând: F = [1 0 1 2 3]
(7.3)
7.1. Evaluarea polinoamelor ia utilizatorului MATLAB Cea punemai la simpl dispozi maio singur multe ă modalit de evaluare polinoamelor. evaluarea pentru valoareăai variabilei, ca îna ă este exemplul de mai jos. Presupunem că polinomul ce urmează a fi evaluat este f(x) = x 4 + x2 + 2x + 3.
x = 1; f = x^4 + x^2 + 2*x + 3
(7.4)
Rezultatul MATLAB al operaiilor de mai sus este 7 . A doua metodă constă în evaluarea polinomului în mai multe puncte. În acest caz avem de a face cu operaii cu tablouri. Operaiile în acest caz sunt de tip element cu element şi presupun adăugarea unui punct înaintea operatorilor înmulire, împărire sau ridicare la putere. De pildă evaluarea polinomului f în punctele -1, 0, 1, 2 presupune utilizarea următoarei secvene MATLAB. x = [-1 0 1 2] ; f = x.^4 + x.^2 + 2*x + 3
(7.5)
A treia metodă de evaluare a polinoamelor constă în utilizarea funciei polyval cu următoarea sintaxă MATLAB:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
164/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
f = polyval(pf, x),
165
(7.6)
unde pf = [1 0 1 2 3] este polinomul f(x) = x 4 + x 2 + 2x + 3 declarat în sintaxa MATLAB, iar x conine punctele în care se evaluează polinomul, acesta putând fi exprimat sub forma unui scalar, vector sau matrice. De pildă pentru a evalua polinomul f în punctele -1, 0, 1, 2 se utilizează secvena de comenzi MATLAB de mai jos: pf = [1 0 1 2 3]; x = [-1 0 1 2] ; f = polyval(pf, x)
(7.7)
Rezultatul MATLAB este următorul: f = [3 3 7 27]
(7.8)
7.2. Operaii aritmetice cu polinoame 7.2.1. Adunarea şi scăderea. Să presupunem două polinoame f(x) şi g(x) având coeficienii înregistrai în vectorii rând f şi g conform cu sintaxa MATLAB. Opera iile de adunare şi scădere în MATLAB presupun că lungimile vectorilor f şi g să fie identice şi egale cu lungimea vectorului corespunzător polinomului de ordin mai mare. Coeficienii nuli ai celor două polinoame sunt adăugai explicit în vectorii corespunzători. De pildă să presupunem că: 4
2
2+
f(x) g(x)==xx –x2 + 2x + 3 s(x) = f(x) + g(x) d(x) = f(x) – g(x)
(7.9)
Dimensiunea vectorilor f şi g va fi de 5 şi anume: f = [1 0 1 2 3] g = [0 0 1 0 -2]
(7.10)
Polinoamele corespunzătoare vectorilor de mai sus sunt echivalente cu: f(x) = x 4 + 0x 3 + x 2 + 2x + 3 g(x) = 0x 4 + 0x 3 + x 2 + 0x – 2
(7.11)
Pentru a calcula polinoamele s(x) şi d(x) tastai secvena de comenzi MATLAB: f = [1 0 1 2 3] g = [0 0 1 0 -2]
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(7.12)
165/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
166
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
s = f + g d = f - g Răspunsul MATLAB este: s = [1 d = [1
0 2 2 1] 0 0 2 5]
(7.13)
ceea ce corespunde următoarelor polinoame: s(x) = x 4 +2x 2 + 2x + 1 d(x) = x 4 + 2x + 5
(7.14)
7.2.2. Înmulirea şi împărirea. Înmulirea unui polinom cu un scalar este echivalentă cu înmulirea coeficienilor acelui polinom cu acel scalar. Înmulirea a două polinoame este echivalent operaiei de convoluie, realizată cu ajutorul funciei MATLAB conv care se apelează cuă sintaxa: p = conv(f, g)
(7.15)
unde f şi g sunt doi vectori rând ce conin coeficienii celor două polinoame exprimate în sintaxa MATLAB, iar c reprezintă vectorul coeficienilor polinomului rezultat prin operaia de înmulire p(x) = f(x)g(x). Operaia de împărire a două polinoame este echivalentă unei operaii de deconvoluie realizată apelând funcia MATLAB deconv cu sintaxa: [c r] = deconv(f, g)
(7.16)
unde f şi g sunt doi vectori rând ce conin coeficienii celor două polinoame exprimate în sintaxa MATLAB, iar c şi r reprezintă vectorii coeficienilor polinoamelor cât şi rest rezultate prin operaia de împărire f(x) = c(x)g(x) + r(x). Pentru exemplificarea operaiilor de înmulire şi împărire să considerăm polinoamele: f(x) = x 2 - 2x - 3 g(x) = x +1
(7.17)
Se vor calcula polinoamele obinute prin înmulirea şi împărirea celor două polinoame f şi g, şi nume p(x) = f(x)g(x) şi d(x) = f(x)/g(x), folosind următoarea secvenă MATLAB: f = [1 -2 -3] g = [1 1] p = conv(f, g) [c r] = deconv(f, g)
(7.18)
Rezultatele MATLAB sunt:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
166/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
p = [1 -1 -5 -3] c = [1 -3] r = [0 0 0],
167
(7.19)
ceea ce corespunde polinoamelor: • produs p(x) = x3 – x2 – 5x – 3 • cât c(x) = x – 3 • rest r(x) = 0
(7.20)
7.3. Descompunerea în fracii simple Descompunerea în fracii simple presupune scrierea raportului a dou ă polinoame ca sumă de fracii cu polinoame de ordinul I: F(x)/G(x) = r(1)/(x- p(1)) + r(2)/(x- p(2)) + ... + r(n)/(x- p(n)) + k(x)
(7.21)
Dacă polul p(i) este de ordinul m, descompunerea conine termeni de forma: r(i)/(x- p(i)) + r(i+1)/(x- p(i))2 + ... + r(i+m-1)/(x- p(i))m
(7.22)
Funcia MATLAB care efectuează operaii de descompunere în fracii simple este residue care se apelează cu sintaxa: (7.23) [r, p, k] = residue(F, G) unde F şi G reprezintă vectorii rând ai polinoamelor numitor şi numărător, iar r, p şi k vectorii coloană ai reziduurilor, polilor şi termenilor liberi. Dacă funcia residue se apelează cu sintaxa: [F, G] = residue(r, p, k)
(7.24)
aceasta returnează coeficienii polinoamelor F şi G, numărător şi numitor, al căror raport are reziduurile r, polii p şi termenii liberi k. Pentru exemplificare se va descompune în frac ii simple expresia: F(x)/G(x) = (x 3 + 2x 2 + 2)/(x 2+1)
(7.25)
Folosind secvena de comenzi MATLAB: F = [1 2 0 2]; G = [1 0 1]; [r, p, k] = residue(F, G)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(7.26)
167/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
168
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Se obin următoarele rezultate MATLAB: r = [-0.5 -0.5] p = [ i -i] k = [1 2]
(7.27)
care corespund următoarei descompuneri: F(x)/G(x) = -0.5/(x - i) - 0.5/(x + i) + x +2
(7.28)
7.4. Calculul derivatei Derivata unui polinom în MATLAB se calculeaz ă folosind funcia polyder care se apelează cu sintaxa: D = polyder(F)
(7.29)
F reprezintă vectorul rând al coeficienilor polinomului, în ordinea descrescătoare a puterilor variabilei, iar D este vectorul rând al coeficienilor polinomului derivat. Apelată cu sintaxa: D = polyder(F, G)
(7.30)
Funcia polyder returnează în vectorul D coeficienii derivatei polinomului produs F .G: D(x) = [F(x)G(x)]’ = F(x)’G(x) + F(x)G(x)’
(7.31)
Apelată cu sintaxa: [D, E] = polyder(F, G)
(7.32)
Funcia polyder returnează în vectorii D şi E coeficienii număratorului şi numitorului derivatei raportului polinoamelor D/E: D(x)/E(x) = [F(x)/G(x)]’ = [F(x)’G(x) - F(x)G(x)’]/G(x) 2
(7.33)
Pentru exemplificare să considerăm polinoamele: F(x) = x 3 + 2x 2 + 2 G(x) = x 2+1
(7.34)
Pentru a calcula derivatele următoare: Fd(x) = F(x)’ Gd(x) = G(x)’
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(7.35)
168/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
169
FGd(x) = [F(x)G(x)]’ AB(x) = A(x)/B(x) = [F(x)/G(x)]’, se va face apel la următoarea secvenă de comenzi MATLAB: F = [1 2 0 2]; G = [1 0 1]; Fd = polyder(F); Gd = polyder(G); FGd = polyder(F, G); [A, B] = polyder(F, G);
(7.36)
Se vor obine următoarele rezultate MATLAB: Fd = [3 4 0]
(7.37)
= [2 Gd FGd = [50] 8 3 8 0] A = [1 0 3 0 0] B = [1 0 2 0 1]
7.5. Calculul rădăcinilor MATLAB permite prin intermediul unor funcii speciale calculul rădăcinilor unui polinom, respectiv calculul coeficienilor unui polinom când se cunosc r ădăcinile acestuia. Dacă funcia f(x) este o funcie polinomială de gradul n, atunci f(x) = 0 are n r ădăcini, care pot fi reale sau complexe. În cazul în care coeficien ii funciei polinomiale sunt numere reale, rădăcinile complexe sunt grupate în perechi complex conjugate. Funcia MATLAB roots determină rădăcinile polinoamelor şi se apelează cu sintaxa: r = roots(f)
(7.38)
Funcia MATLAB poly determină coeficienii unui polinom ale cărui rădăcini sunt cunoscute şi se apelează cu sintaxa: f = poly(r)
(7.39)
În ambele situaii f este un vector rând care conine coeficienii polinomului, în ordine descrescătoare a puterilor variabilei, iar r este un vector coloană care conine rădăcinile polinomului. Funciile MATLAB roots şi poly sunt funcii reciproce efectuând trecerea de la coeficieni la rădăcini sau de la rădăcini la coeficieni. Pentru exemplificare se consideră polinomul F(x) = x 3 + 2x 2 + 2 şi se vor calcula rădăcinile acestuia folosind următoarea secvenă de instruciuni MATLAB: F = [1 2 0 2] R = roots(F)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(7.40)
169/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
170
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Rezultatul MATLAB este: R = [-2.3593
0.1797 + 0.9030i
0.1797 - 0.9030i]’
(7.41)
În mod similar pentru a determina polinomul caracterizat de rădăcinile 1, -2, 0 se face apel la următoarea secvenă de instruciuni MATLAB: R = [1; - 2; 0] F = poly(R)
(7.42)
Rezultatul MATLAB este: F = [1
1
-2
0]
(7.43)
Ceea ce corespunde polinomului f(x) = x 3 + x 2 - 2x.
7.6. Aplicaii numerice APLICA IA 43: Să se efectueze opera iile de adunare, scădere, înmul ire şi împăr ire ale polinoamelor: f(x) = 3x4 + 2x + 3 g(x) = x3 – 1 Se folosesc comenzile MATLAB: f = [3 0 0 2 3]; g = [0 1 0 0 -1]; g1 = [1 0 0 -1]; s = f + g d = f - g p = conv(f, g) [c r] = deconv(f, g1) În urma lansării comenzilor de mai sus se obin rezultatele: s= 3 1 0 2 2 d = 3 -1 0 2 4 p = 0 3 0 0 -1 3 0 -2 -3 c= 3 0 r= 0 0 0 5 3 Prin urmare polinomul sumă este: s = 3X4 + X3 + 2X + 2
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
170/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
171
Polinomul diferenă este: d = 3X4 - X3 + 2X + 4 Polinomul produs este: p = 3X7 - X4 + 3X3 - 2X - 3 Adică polinomul cât şi rest sunt: c = 3X, respectiv r = 5X + 3 IA 44: APLICA ă în frac ii simple expresia: Să se descompun 4 f(x)/g(x) = (3x + 2x + 3)/( x3 – 1)
Se folosesc comenzile MATLAB: F = [3 0 0 2 3]; G = [1 0 0 -1]; [r, p, k] = residue(F, G) În urma lansării comenzilor de mai sus se obin rezultatele: r = 2.6667 -1.3333 - 0.5774i -1.3333 + 0.5774i p = 1.0000 -0.5000 + 0.8660i -0.5000 - 0.8660i k= 3
0
Acest rezultat înseamnă că raportul F(x)/G(x) se descompune sub forma: F(x)/G(x) = r(1)/(x - p(1)) + r(2)/(x - p(2)) + r(3)/(x - p(3)) + k(x) APLICA IA 45: Să se calculeze derivata polinoamelor: f(x) = 3x4 + 2x + 3 g(x) = x3 – 1 f(x)g(x) f(x)/g(x) Se folosesc comenzile MATLAB: f = [3 0 0 2 3]; g = [1 0 0 -1]; fd = polyder(f) gd = polyder(g) fgd = polyder(f, g) [a, b] = polyder(f, g)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
171/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
172
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
În urma lansării comenzilor de mai sus se obin rezultatele:
fd = 12 0 0 2 gd = 3 0 0 fgd = 21 0 0 -4 9 0 -2 a = 3 0 0 -16 -9 0 -2 b = 1 0 0 -2 0 0 1 Acest rezultat înseamnă că: derivata polinomului f este: fd (x) = 12x 3 + 2 derivata polinomului g este: gd (x) = 3x 2 derivata polinomului f .g este: fgd (x) = 21x 6 - 4x3 + 9x2 - 2 derivata polinomului f/g este: fpg (x) = (3x 6 - 16x3 - 9x2 - 2)/(x6 -2x3 +1) APLICA IA 46: iascript ăd ă cinilor Folosind MATLAB calcul al r solu polinoamelor în directorul iei: 1/x2 +x s+ă 3se=creeze curent unfunc fi şier care de să calculeze iile ecua 0.
Se folosesc comenzile MATLAB: f = [1 3 0 1]; r = roots(f) Rezultatul MATLAB este: r = [-3.1038
0.0519 + 0.5652i
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
0.0519 - 0.5652i]'
172/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
173
8. FUNCII MATLAB DE INTERPOLARE ŞI APROXIMARE A DATELOR Interpolarea unui set discret de date [xi, yi] presupune determinarea unei funcii f(x) astfel încât f(xi) = yi, în vederea completării setului de date în orice alt punct x0 ≠ xi. Spre exemplu, fie date punctele de coordonate (x1, y1) şi (x2, y2). Se cere estimarea valorii y(x), în cazul în care x1
8.1. Căutarea datelor în tabele Prin căutarea datelor în tabele se în elege operaia prin care o anumită valoare este citită dintr-un tabel predefinit. Aceste operaii de căutare sunt utile în multe situa ii practice, de pildă în proiectare când trebuie efectuată o căutare automată a anumitor date de catalog etc.
8.1.1. Căutarea în tabele unidimensionale. Căutarea datelor în tabele unidimensionale poate fi efectuată utilizând funcia table1, apelată cu sintaxa: (8.1) z = table1(tab, x) Tabelul tab din care se citesc datele trebuie organizat sub forma unei matrice care are în prima coloană valorile lui x (abscisa ordonată crescător), iar în coloanele 2:n+1 cele n variabile căutate. Dacă valoarea x se găseşte între două valori din prima coloană a tabelului tab, funcia returnează o valoare interpolată liniar. În vederea exemplificării se vor folosi funciile de interpolare MATLAB pentru citirea valorii y corespunzătoare lui x = 1 din tabelul unidimensional de mai jos, Tabel 8.1. Tabel 8.1 x
y
-5
-4
1
7
25
16
1
49
În acest scop se va crea matricea Tabel având prima coloană formată din elementele lui x ordonate crescător, iar a doua coloană formată din elementele lui y asociate cu x. Citirea valorii lui y corespunzătoare elementului x = 1 presupune secvena de comenzi MATLAB: Tabel = [-5 -4 1 Tabel = Tabel’ y = table1(Tabel, -1)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
7; 25
16
1
49]
(8.2)
173/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
174
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Rezultatul MATLAB este: y = 7 Pentru a utiliza funcia table1, prima coloană a tabelului unidimensional din care se citesc datele trebuie să fie monotonă, iar valoarea lui x trebuie să fie cuprinsă între x min şi x max. Totuşi funcia table1 este pe cale de a fi scoasă din limbajul MATLAB, în versiunile viitoare aceasta urmând a fi înlocuită de alte funcii mai performante.
8.1.2. Căutarea în tabele bidimensionale. Căutarea datelor în tabele bidimensionale poate fi efectuată utilizând funcia table2, apelată cu sintaxa: z = table2(tab, x, y)
(8.3)
Tabelul bidimensional tab din care se citesc datele trebuie s ă fie organizat ca o matrice care are în prima coloană valorile lui x ordonate crescător, iar în prima linie valorile lui y ordonate crescător. Celelalte elemente din tabel sunt valorile lui z asociate perechilor (x, y). Elementul z(1, 1) = 0. Dacă valorile x, respectiv y se găsesc între două valori din prima coloană sau linie a tabelului tab, funcia returnează o valoare interpolată liniar. Spre exemplificare să considerăm cazul în care se doreşte evaluarea valorii z corespunzătoare perechii (x, y) = (2.3, 3.1) din tabelul bidimensional de mai jos, Tabel 8.2. Tabel 8.2 x\y 1 2 3
1 2 4 8
2 4 16 64
3 6 36 216
4 8 64 512
Secvena ăMATLAB îndeplineasc condiiile: de căutare constă în primul rând în crearea matricei tab care să • Elementul din prima linie şi prima coloană să fie zero, tab(1, 1) = 0, • Prima linie, mai puin primul element s ă conină elementele lui y ordonate cresc ător, tab(1, 2:n+1) = y(1:n), • Prima coloană, mai puin primul element să conină elementele lui x ordonate cresc ător, tab(2:n+1, 1) = x(1:n), • Celelalte elemente ale matricei s ă reprezinte elementele asociate perechilor (x, y). Prin urmare matricea tab se defineşte astfel: 0 1 tab = 2 3
1 2 3 4 2 4 6 8 4 16 36 64 8 64 216 512
(8.4)
Secvena MATLAB este următoarea: tab = [0, 1, 2, 3, 4; 1, 2, 4, 6, 8; 2, 4, 16, 36, 64; 3, 8, 64, 216, 512] z = table2(tab, 2.3, 3.1)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(8.5)
174/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
175
Se obine rezultatul: z = 100.84
(8.6)
Pentru a utiliza funcia table2, prima linie şi prima coloană a tabelului bidimensional din care se citesc datele trebuie să fie monotone. Valorile utilizate pentru x trebuie să fie cuprinse între prima şi ultima valoare din prima coloana (între x min şi x max) iar cele pentru y să fie cuprinse între prima şi ultima valoare din prima linie (între y min şi y max).
8.2. Interpolarea funciilor de o singură variabilă MATLAB pune la dispoziia utilizatorului trei tipuri de interpolari: liniar ă, spline cubică şi polinomială. În toate aceste cazuri se presupune c ă există un set de date care reprezint ă coordonatele (xi, yi). Obiectivul îl constituie estimarea valorilor funciei f(x), pentru orice 1, x2]. Curba de interpolare trece prin toate punctele care o definesc, legea de punct x ∈ [x interpolare între puncte putând fi liniar ă, cubică sau polinomială. Valorile estimate prin interpolare între punctele date depind de tipul de interpolare ales.
8.2.1. Interpolarea liniară. Dacă se presupune că valoarea funciei între două puncte x1 şi x 2 poate fi estimată printr-o linie dreaptă, ca în Fig. 8.1, atunci valoarea funciei în orice punct x situat între cele dou ă valori se deduce prin expresia: y = f(x) = y1 + (x – x1)(y2 – y1)/(x2 – x1)
(8.7)
f(x) y2 y y1 x x1
x
x 2
Fig. 8.1. Principiul interpolării liniare.
Interpolarea liniară a funciilor de o singură variabilă presupune utilizarea funciei table1 care se apelează cu sintaxa: y = table1(tab, x)
(8.8)
Primul argument al funciei este numele tabelului (de pildă tab) ce conine datele care se referă la coordonatele (xi, y i). Dacă acesta este un fişier pe disc, atunci fişierul trebuie întâi încărcat folosind funcia load .
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
175/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
176
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Al doilea argument se referă la valoarea (sau valorile) lui x pentru care se doreşte determinarea valorii (sau valorilor) interpolate. Datele din prima coloan ă a tabelului (valorile lui x) trebuiesc aranjate în ordine crescătoare, iar valorile lui x trebuie să se găsească între prima şi ultima valoare a primei coloane, în caz contrar MATLAB afi şează un mesaj de eroare. Dacă tabelul din care se citesc datele con ine mai mult de două coloane, funcia table1 returnează un vector linie cu N-1 elemente unde N reprezint ă numărul de coloane ale tabelului. Fiecare valoare returnată este interpolată din coloana corespunzătoare a datelor.
8.2.2. Interpolarea spline cubică. Curba obinută prin interpolare spline cubică este o curbă netedă, definită de un set de polinoame de gradul trei. Curba pe por iuni, între fiecare pereche de puncte este un polinom de gradul trei calculat astfel încât s ă conducă la tranziii netede de la un polinom de gradul trei la altul. De pild ă şase puncte sunt conectate prin intermediul a cinci curbe diferite de gradul trei, ce constituie o funcie netedă între toate cele şase puncte. Curba de interpolare spline cubică se calculează cu funcia spline care se apelează cu sintaxa: yi = spline(x, y, xi) (8.9) unde : • x şi y sunt vectorii care conin abscisele şi ordonatele datelor iniiale, • xi este un vector care conine noile abscise, de regulă cu pas mai fin, • yi este vectorul returnat, asociat lui xi. Spre exemplificare să considerăm un reostat care se încălzeşte prin efect Joule, evoluia în timp a temperaturii sale medii fiind prezentat ă în Tabelul 8.3. Tabel 8.3 Teta [˚C] Timp [sec.]
20 0
60 30
120 60
200 90
300 120
430 150
Pentru a calcula temperatura medie din 10 în 10 secunde, interpolat ă folosind funcia MATLAB spline, se va urma setul de instruciuni de mai jos. Timp = [0 30 60 90 120 150]; Teta = [20 60 120 200 300 430]; Timpn = 0:10:150;
(8.10)
Tetan = spline(Timp, Teta, Timpn) Rezultatul MATLAB este următorul: Tetan = [20.0000 31.1523 44.4774 60.0000 77.7449 97.7366 120.0000 144.5350 171.2428 200.0000 230.7819 263.9588 300.0000 339.3745 382.5514 430.0000] (8.11) Reprezentarea grafică a celor două tipuri de interpolări este prezentată în Fig. 8.2 şi se realizează folosind următoarea comandă MATLAB: plot(Timp, Teta,’r-o’, Timpn, Tetan)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(8.12)
176/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
177
Fig. 8.2. Rezultatele numerice obinute prin interpolare liniar ă şi spline.
8.2.3. Interpolarea prin metoda transformatei Fourier. Funcia MATLAB interpft permite interpolarea datelor utilizând metoda FFT (Fast Fourier Transform). Sintaxa funciei este următoarea: y = interpft(x, n)
(8.13)
Funcia returnează un vector y de lungime n obinut din vectorul x ce conine valorile unei funcii periodice. Numărul n trebuie să fie mai mare decât numărul de elemente ale vectorului x, iar rezultatul are o periodicitate circular ă dată de utilizarea Transformatei Fourier. De pildă pentru a interpola cu pas dublu un set de date corespunz ător funciei periodice y = sin(2π π k/8) se foloseşte următoarea secvenă de comenzi MATLAB. În final se evaluează diferena între valorile interpolate şi valorile reale corespunzătoare funciei y şi se plotează valorile în cele două cazuri, Fig. 8.3. Diferenele între cele două seturi de valori este foarte mică. k = 0:7; y = sin(2*pi*k/8); yi = interpft(y, 16); k1 = 0:15; yr = sin(2*pi*k1/16); err = max(abs(yr - yi)); plot(k1, yi, k1, yr, 'or');
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(8.14)
177/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
178
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 8.3. Interpolare prin metoda transformatei Fourier.
8.2.4. Interpolarea Hermite. Funcia MATLAB pchip poate realiza interpolarea datelor folosind funcii polinomiale cubice de tip Hermite, pe por iuni. Sintaxa de apel este: yi = pchip(x, y, xi)
(8.15)
unde : • x şi y sunt vectorii care conin abscisele şi ordonatele datelor iniiale, • xi este un vector care conine noile abscise, de regulă cu pas mai fin, • yi este vectorul returnat, asociat lui xi.
8.2.5. Interpolarea multiplă. Funcia MATLAB interp1 poate realiza interpolarea datelor după o lege liniar ă, cubică sau spline cubică şi se apelează cu sintaxa: yi = interp1(x, y, xi, ’metoda’);
(8.16)
unde prin ’metoda’ se înelege unul din cuvintele cheie: • ’linear’ – pentru interpolare liniară; • ’spline’ – pentru interpolare spline cubică; • ’cubic’ – pentru interpolare cubică; • ’nearest’ – pentru interpolare de tipul cel mai apropiat vecin; • ’pchip' – pentru interpolare Hermite cubică pe poriuni etc. Funcia interp1 permite totodată şi extrapolarea rezultatelor în cazul în care xi se extinde dincolo de limitele inferioară sau superioară a vectorului x. În acest caz funcia se apelează cu sintaxa: yi = interp1(x, y, xi, 'metoda', 'extrap');
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(8.17)
178/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
179
Toate regulile de interpolare presupun o ordonare monotonă a vectorului x. În plus, metoda ’cubic’ cere ca punctele pe axa x să fie egal distanate. Dacă y este o matrice cu numărul de linii egal cu cel al vectorului x şi cu N coloane, interp1 returnează o matrice cu un număr de linii egal cu cel al vectorului xi şi cu N coloane. Fiind dat setul de valori de mai jos, Tabel 8.4, se vor interpola valorile temperaturii Teta din 10 în 10 secunde, folosind interpolare liniară, cubică şi spline cubică. Tabel 8.4 Teta [˚C] Timp [sec.]
20 0
60 30
120 60
200 90
300 120
430 150
În acest sens se foloseşte secvena de comenzi MATLAB de mai jos. Timp = [0 30 60 90 120 150]; Timpn = 0:10:150; Teta = [20 60 120 200 300 430]; Tetal = interp1(Timp, Teta, Timpn, ’linear’) Tetas = interp1(Timp, Teta, Timpn, ’spline’) Tetac = interp1(Timp, Teta, Timpn, ’cubic’)
(8.18)
Rezultatele grafice sunt prezentate în Fig. 8.4, în care se remarc ă similitudinea evidentă între seturile de valori obinute prin interpolare liniar ă, cubică şi spline cubică.
Fig. 8.4. Rezultatele interpolării multiple.
8.3. Interpolarea funciilor de două variabile Interpolarea funciilor de două variabile presupune utilizarea unor funcii MATLAB special destinate unor astfel de calcule, cum ar fi interp2 şi griddata.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
179/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
180
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
8.3.1. Interpolarea multiplă. Funcia interp2 permite interpolarea funciior de două variabile după diferite legi şi se apelează cu sintaxa: zi = interp2(x, y, z, xi, yi,’metoda’)
(8.19)
unde ’metoda’ poate fi unul din cuvintele cheie: • ’nearest’ – pentru interpolare de tipul cel mai apropiat vecin; • ’linear’ – pentru interpolare biliniară; • ’cubic’ – pentru interpolare bicubică; • ’spline’ – pentru interpolare spline cubică; ’Metoda’ implicită de interpolare este cea liniară. De pildă pentru o interpolare spline a funciilor de două variabile, funcia interp2 se apelează cu sintaxa: zi = interp2(x, y, z, xi, yi,’spline’)
(8.20)
ia returneaz ă în matricea zi ătoare Func valorile i yi. Matricele x în care sunt dateinterpolate valorile luicorespunz z. Dacă x sunt şvectori, valorile şi y specific ă punctele şi ylui xi acestora trebuie să fie monotone şi egal distanate ca cele obinute cu funcia meshgrid în exemplul de mai jos:
[X, Y] = meshgrid(1:3, 10:14)
(8.21)
X = 1 1 1 1 1
(8.22)
Y= 10 11 12 13 14
2 2 2 2 2
3 3 3 3 3 (8.23)
10 11 12 13 14
10 11 12 13 14
În cazul valorilor în afara intervalelor de definiie ale lui x şi y se returnează NaN în matricea zi. Apelată cu sintaxa : zi = interp2(z, xi, yi),
(8.24)
funcia interp2 subînelege că x=1:n şi y=1:m unde [m, n] = size(z) şi returnează o matrice zi cu dimensiunea m x n, ce reprezintă interpolarea datelor din matricea z Apelată cu sintaxa:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
180/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
zi = interp2(z, k),
181
(8.25)
funcia returnează o matrice zi care expandează matricea z prin întreeserea unei coloane şi a unei linii interpolate biliniar între cele existente, operând recursiv de k ori. Prin urmare pentru o matrice z cu dimensiunea 3 x 4 şi pentru k = 2 rezultă la prima interpolare matricea zi cu dimensiunea 5 x 7 , iar după a kdoua interpolare o matrice de dimensiune 9 x 13. Prin acest procedeu pasul devine de p = 2 ori mai fin. Spre deosebire de funciile care citesc din tabele prin interpolare valorile precizate, această funcie returnează o matrice a tuturor valorilor interpolate. Considerând de exemplu matricea: 2 6 6 5 A = 3 4 8 6 4 6 9 5
(8.26)
Interpolarea biliniară a matricei A presupune folosirea secvenei de comenzi MATLAB: A = [2 6 6 5; 3 4 8 6; 4 6 9 5]; (8.27) Ai = interp2(A, 2, ’linear’) A1 = interp2(A, 1, ’linear’) V = A1(4, 6) Răspunsul MATLAB este V = 7 .
8.3.2. Comparaie între metodele de interpolare. Pentru a compara rezultatele obinute cu diverse metode de interpolare bidimensională să considerăm o matrice de date de dimensiune 7 x 7 . Vom genera funcia peaks cu o rezoluie slabă: [x,y] = meshgrid(-3: 1: 3); z = peaks(x, y); figure(1) surf(x, y, z)
(8.28)
Fig. 8.5. Reprezentarea grafică a funciei peaks cu rezoluie slabă.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
181/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
182
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Vom genera un mesh mai fin pentru interpolare. [xi, yi] = meshgrid(-3: 0.25: 3); Vom interpola datele folosind metodele”nearest”, ”bilinear”, ”bicubic” : zi1 = interp2(x, y, z, xi, yi, 'nearest'); zi2 = interp2(x, y, z, xi, yi, 'bilinear'); zi3 = interp2(x, y, z, xi, yi, 'bicubic');
(8.29) (8.30)
Pentru comparaie vom trasa graficele, Fig. 8.6, obinute cu funciile surf şi contour. figure(2); subplot(2, 3, 1); surf(xi, yi, zi1); subplot(2, 3, 2); surf(xi, yi, zi2); subplot(2, 3, 3); surf(xi, yi, zi3);
(8.31)
subplot(2, subplot(2, 3, 3, 4); 5); contour(xi, contour(xi, yi, yi, zi1); zi2); subplot(2, 3, 6); contour(xi, yi, zi3);
Fig. 8.6. Rezultatele interpolării bidimensionale multiple ale funciei peaks.
8.3.3. Interpolarea datelor pe un grid 2D. Această facilitate a MATLAB-ului presupune interpolarea unui set de date func ie de două variabile în nodurile unui grid uniform 2D. Interpolarea datelor se efectuează cu ajutorul funciei griddata care se apelează cu sintaxa: zi = griddata(x, y, z, xi, yi)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(8.32)
182/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
183
Astfel valorile matricei zi corespund elementelor matricelor xi şi yi. Matricea z asociază fiecărei perechi (x, y) câte o valoare z. Matricele xi şi yi sunt de tipul celor obinute cu funcia meshgrid şi formează un grid uniform. Apelată cu sintaxa: (8.33) [Xi, Yi, Zi] = griddata(x, y, z, xi, yi), funcia griddata întoarce matricea interpolată Zi, ca mai sus, îns ă întoarce şi matricele Xi, Yi formate din vectorul rând xi şi din vectorul coloană yi. 2
2
Să considerăm de pildă funcia z = xe − x − y calculată în 100 de puncte aleatoare între [-2; 2]. x = rand(100, 1)*4-2; y = rand(100, 1)*4-2; z = x.*exp(-x.^2-y.^2);
(8.34)
Vectorii x, coningrid: date neuniform distribuite. Vom defini un grid uniform şi vom y, şipe z acest interpola datele gr = -2:.25:2; [XI,YI] = meshgrid(gr, gr); ZI = griddata(x, y, z, XI, YI);
(8.35)
Vom plota datele interpolate împreună cu datele iniiale folosite la interpolare: mesh(XI, YI, ZI), hold plot3(x, y, z, 'o'), hold off
(8.36)
Fig. 8.7. Interpolarea datelor pe un grid folosind funcia griddata.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
183/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
184
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
8.4. Aproximarea polinomială prin metoda celor mai mici pătrate Pentru ca aproximarea unui set de date de tip perechi (xi, yi), i = 1...n, printr-o curbă, s ă fie considerată cea mai bună, trebuie ca suma pătratelor distanelor de la fiecare punct la curba aproximată (de tip polinomial) să fie minimă. Luând în cosiderare această condiie este posibil ca nici un punct al setului de date s ă nu se găsească pe curba aproximată. Acest aspect separă în mod evident noiunea de aproximare de cea de interpolare, în ultimul caz toate punctele fiind obligatoriu situate pe curba respectivă. În acest context aproximarea setului de date presupune identificarea coeficien ilor ai ai unui polinom de tipul: p(x) = a0 x n + a1 x n-1 + a 2 x n-2 + ... + a n-1 x1 + a n
(8.37)
Dacă setul de date are n elemente toate datele se află pe curba de aproximare. Pentru un grad al polinomului mai mic decât lungimea setului de date, aproximarea este cu atât mai bună cu cât gradul polinomului este mai apropiat de lungimea setului de date. Utilizarea unui polinom cu grad mai mare decât lungimea setului de date poate conduce la erori de aproximare importante. Determinarea celei mai bune aproximări a unui set de date (x, y), cu un polinom de ordin n, presupune folosirea funciei MATLAB polyfit care se apelează cu sintaxa: p = polyfit(x, y, n)
(8.38)
Funcia polyfit găseşte coeficienii polinomului p care aproximează cel mai bine setul de date, în sensul celor mai mici pătrate. În apelul funciei x şi y sunt vectori coninând datele ce trebuiesc aproximate şi n este ordinul polinomului rezultant. Să considerăm de pildă setul de date (x, y): x = [1 2 3 4 5]; y = [5.5 43.1 128 290.7 498.4];
(8.39)
Un polinom de ordinul 3 care aproximează setul anterior de date este: p = polyfit(x, y, 3)
(8.40)
Rezultatul MATLAB este: (8.41) p = -0.1917 31.5821 -60.3262 35.3400 Pentru a calcula valorile polinomului rezultant obinut cu polyfit pe un set de date mai fin şi pentru a plota comparativ rezultatele urmai secvena MATLAB de mai jos. x2 = 1:.1:5; y2 = polyval(p, x2); plot(x, y, 'o', x2, y2) grid on
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(8.42)
184/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
185
Fig. 8.8. Aproximarea polinomială a setului de date folosind funcia polyval.
8.5. Interpolarea funciilor de trei variabile MATLAB permite interpolarea funciilor de trei variabile prin utilizarea unor funcii specifice cum ar fi interp3 şi griddata3.
8.5.1. Interpolarea multiplă. Funcia interp3 permite interpolarea funciior de trei variabile după diferite legi şi se apelează cu sintaxa: vi = interp3(x, y, z, v, xi, yi, zi, ’metoda’)
(8.43)
unde ’metoda’ poate fi unul din cuvintele cheie: • ’nearest’ – pentru interpolare de tipul cel mai apropiat vecin; • ’linear’ – pentru interpolare biliniară; • ’cubic’ – pentru interpolare bicubică; • ’spline’ – pentru interpolare spline cubică; ’Metoda’ implicită de interpolare este cea liniară. De pildă pentru o interpolare spline a funciilor de trei variabile, funcia interp3 se apelează cu sintaxa: vi = interp3(x, y, z, v, xi, yi, zi, ’spline’)
(8.44)
Funcia returnează în matricea vi valorile interpolate corespunzătoare lui xi, yi şi zi. Matricele x, y şi z specifică punctele în care sunt date valorile lui v. Dacă x, y şi z sunt vectori, valorile acestora trebuie să fie monotone şi egal distanate ca cele obinute cu funcia meshgrid . În cazul valorilor în afara intervalelor de defini ie ale lui x, y şi z se returnează NaN în matricea zi. Apelată cu sintaxa :
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
185/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
186
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
vi = interp3(v, xi, yi, zi),
(8.45)
funcia interp3 subînelege că x = 1:n, y = 1:m şi z = 1:p unde [m, n, p] = size(v) şi returnează o matrice vi cu dimensiunea m x n x p, ce reprezintă interpolarea datelor din matricea v. Apelată cu sintaxa: vi = interp3(v, k),
(8.46)
funcia returnează o matrice vi care expandează matricea v prin întreeserea unor coloane şi linii interpolate liniar între cele existente, operând recursiv de k ori. Considerând de pildă funcia MATLAB flow, prin interpolare se obin următoarele rezultate. [x, v] == meshgrid(.1:.25:10,-3:.25:3,-3:.25:3); flow(10); [xi,y,yi,z,zi] vi = interp3(x, y, z, v, xi, yi, zi); slice(xi, yi, zi, vi, [6 9.5], 2, [-2 .2])
(8.47)
Fig. 8.9. Interpolarea multiplă funciilor de 3 variabile.
8.5.2. Interpolarea datelor pe un grid 3D. Funcia griddata3 permite interpolarea datelor funcie de trei variabile, pe un grid uniform 3D, dup ă diferite legi şi se apelează cu sintaxa: vi = griddata3(x, y, z, v, xi, yi, zi, ’metoda’)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(8.48)
186/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
187
8.6. Aplicaii numerice APLICA IA 47: Se d ă o bobină cu miez feromagnetic având caracteristicile prezentate în figura de mai jos. Curba de magnetizare a miezului feromagnetic se d ă în tabelul de mai jos şi va trebui introdusă într-un fi şier text care să fie citit de programul MATLAB. H [A/m] 0 500 1400 5000 8200 11500 15000
B [T] 0 0,2 0,49 1,08 1,34 1,53 1,67
20000 26800 36700 57200
1,84 1,96 2,03 2,1
Γ
L=100 mm
NI=10000 A
S = 900 mm2
Aplicând legea circuitului magnetic ∫ H ⋅ dl = NI pe conturul închis Γ să se determine Γ
valorile induc iei magnetice Bo şi a fluxului fascicular φ o în miezul magnetic (aceste valori se consider ă constante pe toat ă regiunea miez magnetic). Pentru rezolvarea problemei va trebui creat un fi şier M care să cear ă interactiv utilizatorului valorile celor trei parametri NI, L, şi S. Pe baza acestora programul ă table1 ă ă ă MATLAB trebuie s apeleze func ia care s fac interpolarea liniar a valorilor B-H. În final se va trasa grafic curba de magnetizare B-H cu eviden ierea punctului H o-Bo.
Folosind editorul Notepad se crează fişierul b-h.txt care conine dependena B-H a miezului magnetic al bobinei, ca mai jos. 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
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
187/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
188
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
În cazul în care fişierul deja este creat se trece peste această etapă. Se crează în directorul curent fişierul bobina1.m ce conine instruciunile MATLAB: bh = load('b-h.txt'); NI = input('Solenatie [A]: '); L input('Lungime [m]:');'); S == input('Arie miez miez [m**2]: Hm = NI/4/L; [Bm] = table1(bh, Hm); disp('Bm = '); disp(Bm); Fi0 = Bm*S; disp('Fi0 = '); disp(Fi0); plot(bh(:,1), bh(:,2), Hm, Bm, 'ro') xlabel ('H [A/m]'); ylabel ('B [T]'); În urma apelului fişierului bobina1.m MATLAB va cere introducerea parametrilor NI, L, şi S şi va răspunde cu următoarele mesaje, respectiv cu graficul din Fig. 8.10: bobina1 Solenatie [A]: 10000 Lungime miez [m]: 0.1 Arie miez [m**2]: 900*1e-6 Bm = 1.9282 Fi0 = 0.0017
Fig. 8.10. Interpolarea liniară a curbei de magnetizare B-H.
Deci inducia în miez este Bm = 1.9282 T iar fluxul fascicular este Fi0 = 0.0017 Wb.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
188/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
189
APLICA IA 48: Să se reia aplica ia anterioar ă dar folosind pentru interpolare func ia MATLAB spline. Considerându-se fişierul b-h.txt care conine dependena B-H a miezului magnetic al bobinei deja creat se crează în directorul curent fişierul bobina2.m ce conine instruciunile MATLAB: bh = load('b-h.txt'); NI = input('Solenatie [A]: '); L = input('Lungime miez [m]: '); S = input('Arie miez [m**2]: '); Hm = NI/4/L; [Bm] = spline(bh(:, 1), bh(:, 2), Hm); disp('Bm = '); disp(Bm); Fi0 = Bm*S; disp('Fi0 = '); disp(Fi0); În urma apelului fişierului bobina2.m MATLAB va cere introducerea parametrilor NI, L, şi S şi va răspunde cu: bobina2 Solenatie [A]: 10000 Lungime miez [m]: 0.1 Arie miez [m**2]: 900*1e-6 Bm = 1.9382 Fi0 = 0.0017 Deci inducia în miez este Bm = 1.9382 T iar fluxul fascicular este Fi0 = 0.0017 Wb. Valorile sunt foarte apropiate de cele ob inute cu funcia de interpolare table1. APLICA IA 49: Să se interpoleze cu pas de 500 A/m curba de magnetizare B-H dat ă în tabelul alăturat, folosind interpolarea liniar ă , cubică şi spline cubică. Să se traseze pe acela şi grafic curba ini ială şi curbele ob inute prin interpolare. H [A/m] 0 500 1400 5000 8200 11500 15000
B [T] 0 0,2 0,49 1,08 1,34 1,53 1,67
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
189/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
190
20000 26800 36700 57200
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
1,84 1,96 2,03 2,1
Considerându-se fişierul b-h.txt care conine dependena B-H a miezului magnetic al bobinei deja creat se crează în directorul curent fişierul interpolare_m.m ce conine instruciunile MATLAB: bh = load('b-h.txt'); h1 = 0:500:57200; bl = interp1(bh(:, 1), bh(:, 2), h1, 'linear') b2 = interp1(bh(:, 1), bh(:, 2), h1, 'spline') b3 = interp1(bh(:, 1), bh(:, 2), h1, 'cubic') plot(bh(:, 1), bh(:, 2), 'o', h1, b1, h1, b2, h1, b3) xlabel ('H [A/m]'); ylabel ('B [T]'); În urma lansării în execuie a fişierului interpolare_m.m se obine graficul:
Fig. 8.11. Interpolarea multiplă a curbei de magnetizare B-H.
APLICA IA 50: Să se interpoleze func ia z = e − x − y în intervalul [-2; 2] calculat ă în 50 de puncte aleatoare şi s ă se reprezinte grafic datele interpolate împreună cu datele ini iale folosite la interpolare. 2
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
2
190/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
191
Se folosesc comenzile MATLAB: gr = -2:.25:2; [XI,YI] = meshgrid(gr, gr); x = rand(100,1)*4-2; y = rand(100, 1)*4-2; z = exp(-x.^2-y.^2); ZI = griddata(x, y, z, XI, YI); mesh(XI, YI, ZI), hold on; plot3(x, y, z, 'o'), hold off; MATLAB va afişa graficul următor:
Fig. 8.12. Interpolarea funciei z = e − x
2
− y 2
calculată în 50 de puncte aleatoare .
APLICA IA 51: Aproxima i cu polinoame de gradele {0, 1, 2, 3, 4, 5, 6} setul de date din tabelul de mai jos. Să se traseze pe acela şi grafic, cu pas de dx=0.1 rezultatele ob inute, eviden iind setul de date ini iale. X 1 2 3 4 5
Y 5.5 43.1 128 290.7 200
Se foloseşte setul de comenzi MATLAB de mai jos:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
191/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
192
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
x = [1 2 3 4 5]; y = [5.5 43.1 128 290.7 290]; p0 = polyfit(x, y, 0); p1 = polyfit(x, y, 1); p2 = polyfit(x, y, 2); p3 = polyfit(x, y, 3); p4 = polyfit(x, y, 4); p5 = polyfit(x, y, 5); p6 = polyfit(x, y, 6); xn = 1: 0.1: 5; y0 = polyval(p0, xn); y1 = polyval(p1, xn); y2 = polyval(p2, xn); y3 = polyval(p3, xn); y4 = polyval(p4, xn); y5 = polyval(p5, xn); y6 = polyval(p6, xn); plot(x, y, 'o', xn, y0, xn, y1, xn, y2, xn, y3, xn, y4, xn, y5, xn, y6); grid on; În urma lansării comenzilor MATLAB va trasa graficul din Fig. 8.13.
Fig. 8.13. Aproximarea polinomial ă a setului de date specifice Aplica iei 51.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
192/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
193
9. DERIVAREA ŞI INTEGRAREA NUMERICĂ A FUNCIILOR Derivarea şi integrarea sunt operaii matematice fundamentale utilizate la rezolvarea unui mare număr de probleme din inginerie şi ştiină. În anumite situaii soluiile analitice sunt dificil sau chiar cu neputină de obinut, în asemenea cazuri fiind necesară aplicarea metodelor de derivare şi integrare numerică.
9.1. Derivarea numerică Derivata unei funcii f(x) reprezintă viteza de variaie a funciei în raport cu variabila x. Derivata este definită prin raportul dintre variaia funciei f(x), notată cu df(x) şi variaia lui x, notată cu dx: (9.1) f’(x) = df(x)/dx Interpretarea geometrică a derivatei într-un punct este dată de panta tangentei la graficul funciei în punctul considerat, Fig. 9.1. f(x)
f(x)
f’(a)
Maxim global
Maxim local
Minim local
0
a
b
x
Fig. 9.1. Interpretarea geometrică a derivatei.
0
b
x
Fig. 9.2. Minime locale şi globale.
Punctele cu derivată nulă (puncte critice) pot reprezenta fie o regiune orizontală a funciei, fie un punct de maxim sau minim local sau global al func iei, Fig. 9.2. Dacă derivata a doua într-un punct critic este pozitiv ă, atunci valoarea funciei în punctul respectiv este un minim local, iar dac ă derivata a doua în punctul critic este negativă, atunci ă unmicile valoarea funcnumeric iei în acel maximerori local.conducând astfel la o dep ărtare Derivarea poate reprezint amplifica ă punct semnificativă de soluia analitică.
9.1.1. Aproximarea derivatelor prin diferene finite. Aproximarea derivatei de ordinul I în punctul x k poate fi efectuată folosind aproximarea prin diferen e finite regresive, progresive sau centrate, Fig 9.3:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
193/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
194
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
(a) diferen e finite regresive f ' ( x) ≅
(b) diferen e progresive f ' ( x) ≅
f ( xk ) − f ( xk −1 ) xk − xk −1
f ( xk +1 ) − f ( xk ) x
(c) diferen e centrate f ' ( x) ≅
k +1
− x
(9.2) (9.3)
k
f ( xk +1 ) − f ( xk −1 ) xk +1 − xk −1
(9.4) f(x)
f(x)
f(xk-1)
f(xk-1) f(xk)
0
xk-1
xk
f(xk)
f(xk+1)
xbk+1
0
x
a)
xk-1
xk
f(xk+1)
xbk+1
x
b)
f(x) Fig. 9.3. Aproximarea numerică a derivatelor prin diferene finite. f(xk-1)
0
f(xk)
xk-1
xk
a) b) diferen diferenee regresive; progresive; c) diferene centrate;
f(xk+1)
xbk+1
x
c)
Precizia acestor estimări depinde de distana dintre punctele utilizate pentru calcul, o distană mai mică conducând în general la o estimare mai precis ă a derivatei. 9.1.2. Aproximarea numerică a derivatelor. Aproximarea derivatelor poate fi efectuată folosind funcia MATLAB diff . Această funcie evaluează diferenele dintre elementele succesive ale unui vector sau dintre elementele unei coloane ale unei matrice şi se apelează cu una din sintaxele: Y = diff(X) Y = diff(X, n)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(9.5)
194/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
195
Dacă X este vectorul X=[X(1), X(2), ..., X(n)] , rezultatul apelului funciei: Y= diff(X)
(9.6)
este un vector ce conine diferenele dintre elementele succesive ale vectorului X , şi anume: Y=[X(2)-X(1), ..., X(n)-X(n-1)]
(9.7)
Lungimea vectorului Y este mai mică cu un element decât lungimea vectorului X . Dacă X este o matrice, diferenele se calculează pe fiecare coloană prin scăderea elementului curent din linia imediat superioară, conform relaiei : Y = diff(X)
(9.8)
Rezultatul apelului funciei este matricea: Y= X(2:m,:)- X(1:m-1,:)
(9.9)
Unde m reprezintă numărul de linii ale matricei X . Apelată cu argumentul n, funcia diff returnează diferena de ordinul n a vectorului X . De pildă diferenele de ordinul I şi II ale vectorului x = [1 2 3 4 5] se calculează cu sintaxa MATLAB: x = [1 2 3 4 5]; do1 = diff(x) do1 = 1 1
1
(9.10)
1
do2 = diff(x,2) do2 = 0 0
(9.11)
0
Funcia diff permite calculul derivatei numerice a unei funcii y(x) cu relaia: (9.12) dy = diff(y)./diff(x) De pildă pentru calculul derivatei lui y = [0 3 4 4 2 3 5] funcie de x = [0 1 2 3 4 5 6] şi plotarea acestor două funcii, Fig. 9.4, se face apel la următoarea sintaxa MATLAB: x = [0 1 2 3 4 5 6] y = [0 3 4 4 2 3 5] dy = diff(y)./diff(x) plot(x, y, x(1:end-1), dy)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(9.13)
195/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
196
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Fig. 9.4. Aproximarea numerică şi plotarea derivatei.
9.1.3. Aproximarea numerică a Laplaceanului. Aproximarea Laplaceanului prin formula în cinci puncte poate fi efectuată cu ajutorul funciei MATLAB del2. Această funcie se apelează cu sintaxa : V = del2(U)
(9.14)
în care elementele matricei V , de aceeaşi dimensiune cu matricea U sunt calculate cu relaia: V i , j =
U i+1, j + U i −1, j + U i , j +1 + U i , j −1 − U i , j 4
(9.15)
În cazul nodurilor situate la marginea domeniului de calcul, media este calculat ă doar cu nodurile ce aparin domeniului de calcul. Dacă matricea U este asociată funciei u(x, y) evaluată în nodurile unei reele cu pas constant, atunci : D = 4*del2(U)
(9.16)
este aproximarea cu diferene finite a operatorului diferenial Laplace, aplicat lui u, adică: ∆2 u =
∂ 2u ∂ 2u + ∂ x 2 ∂ y 2
(9.17)
Pentru a calcula şi plota, Fig. 9.5, aproximarea numerică a Laplaceanului funciei u(x, y) = 2x 4 + 3y 5 în intervalul x∈ [-4, 4] şi y∈ [-4, 4] , se face apel la secvena de comenzi MATLAB:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
196/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
[x, y] = meshgrid(-4:4, -4:4); U = 2*x.^4 + 3*y.^5 V = 4*del2(U) mesh(x, y, V)
197
(9.18)
Fig. 9.5. Aproximarea numerică şi plotarea derivatei.
9.1.4. Aproximarea numerică a gradientului. Aproximarea şi reprezentarea grafică a gradientului unei funcii u(x, y) este posibilă în MATLAB prin intermediul funciilor gradient şi quiver. Funcia gradient se apelează cu sintaxa: [dux, duy] = gradient(u, dx, dy)
(9.19)
şi returnează derivatele pariale numerice ale matricei funciei u în matricele dux=du/dx şi duy=du/dy. În apelul de mai sus dx şi dy pot reprezenta nişte scalari ce conin pasul de discretizare pe direciile X şi Y sau pot fi vectori ce con in toate coordonatele după aceste direcii. Dacă dx şi dy sunt omişi se consideră că dx = dy = 1. Dacă funcia gradient este apelată cu una din sintaxele:
dyx = gradient(Y) dyx = gradient(Y, dy)
(9.20)
aceasta returnează un vector care conine derivata numerică dy/dx. Funcia quiver permite reprezentarea grafică sub forma unor mici s ăgei (vectori orientai) a unui câmp de vectori. Vectorii astfel reprezenta i corespund fiecărei perechi (X, Y) a matricelor X şi Y . Funcia quiver se apelează cu una din sintaxele:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
197/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
198
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
quiver (X, Y, dx, dy) quiver (X, Y, dx, dy, S) quiver (dx, dy)
(9.21)
Perechile (dx, dy) formate din matricele dx şi dy determină direcia şi modulul câmpului de vectori orientai. Dacă X şi Y sunt vectori, X corespunde coloanelor lui dx şi dy, iar Y corespunde liniilor acestora ( X trebuie să aibă lungimea egală cu numărul de coloane, iar Y cu numărul de linii). Dacă X şi Y sunt omişi, se consideră că X = 1:n şi Y=1:m, unde m este numărul de linii al matricelor dx şi dy, iar n numărul de coloane al acestora. Argumentul S, care este un scalar, permite aplicarea unui factor de scalare lungimii vectorilor orientai şi reprezentai grafic. Se pot folosi toate tipurile de linii şi culori specificate în instruciunea plot. Spre exemplificare să calculăm şi să reprezentăm grafic, Fig. 9.6, gradientul funciei 2 2 z (x, y) = x e − x − y în intervalul x∈ [-2, 2] şi y∈ [-2, 2] . Vom face apel la sintaxa MATLAB: [X,Y] = meshgrid(-2: .2: 2); Z = X.*exp(-X.^2 - Y.^2); [dx,dy] = gradient(Z, .2, .2); contour(X, Y, Z) hold on quiver(X, Y, dx, dy) grid off hold off
(9.22)
Fig. 9.6. Aproximarea numerică a gradientului.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
198/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
199
9.2. Integrarea numerică Integrala unei funcii f(x) pe intervalul [a, b] : b
S = ∫ f ( x)dx ,
(9.23)
a
are semnificaia ariei delimitată de axa Ox, curba f(x) şi dreptele x = a şi x = b, Fig. 9.7. y
f(x)
S a
b
x
Fig. 9.7. Semnificaia grafică a integralei.
Calculul numeric al unei integrale poate fi efectuat prin: • Aproximarea funciei de integrat f(x) printr-o altă funcie g(x), unde g(x) este determinată astfel încât integrala să fie uşor de calculat. • Aproximarea funciei de integrat f(x) printr-un set de funcii liniare sau parabolice, pe poriuni. Dacă aproximarea se face cu func ii liniare pe poriuni, aria se poate calcula ca sumă a trapezelor care o compun, această metodă fiind cunoscută sub numele de Metoda Trapezelor . Dacă aproximarea se face cu funcii pătratice pe poriuni, metoda este cunoscută ca Metoda lui Simpson.
9.2.1. Metoda trapezelor şi metoda lui Simpson Dacă integrala se aproximează prin trapeze, iar intervalul [a, b] este împărit în n seciuni egale, adică pasul şi abscisa curentă sunt: h = (b-a)/n > 0, xi = a + i . h pentru 1 ≤ i ≤ n
(9.24)
atunci integrala poate fi estimată prin: n −1
ST = h/2(y a + y b + 2 ∑ y i ), unde yi = f(x ). i
(9.25)
i =1
Dacă integrala este aproximată prin suma ariilor unor curbe pătratice, iar intervalul [a, b] divizat în 2n seciuni egale:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
199/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
200
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
h = (b - a)/(2n) = xi+1 - xi > 0, unde xi = a + i . h, cu 1 ≤ i ≤ 2n
(9.26)
atunci integrala poate fi estimată prin expresia: SS = h/3[y a + y b + 4(y1 + y 3 + ... + y 2n-1 ) + 2(y 2 + y 4 + ... + y 2n-2 )] , unde yi = f(x )i (9.27) Această ultima expresie este cunoscută sub numele de formula generalizată a lui Simpson. În general, obinerea unei evaluări mai precise a integralei presupune utilizarea unui pas mai fin de discretizare a intervalului [a, b] , Fig. 9.8. y
f(x)
S x0 = a x1
…
xn-1 xn=b
x
Fig. 9.8. Calculul numeric al integralei.
9.2.2. Calculul numeric al integralelor pe intervale infinite. Pentru calculul integralelor convergente de forma: ∞
S = ∫ f ( x)dx
(9.28)
a
Se folosesc două metode: • Schimbarea variabilei, care uneori presupune transformarea intervalului [a, +∞ ) într-un interval finit; • Separarea integralei în două integrale: ∞
b
∞
∫ f ( x)dx = ∫ f ( x)dx + ∫ f ( x)dx a
a
(9.29)
b
În ultimul caz, prima integrală se evaluează printr-una dintre metodele expuse anterior, iar pentru a doua se procedează astfel: • Fie se neglijează acest termen, dacă b este suficient de mare şi dacă: b
2b
∫a f ( x)dx >> ∫b f ( x)dx
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(9.30)
200/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
201
• Fie se aproximează forma asimptotică a lui f(x) printr-o funcie g(x) ≈ f(x), care
pentru x suficient de mare permite calculul analitic al integralei funciei g(x).
9.2.3. Funcii MATLAB de integrare numerică. MATLAB pune la dispoziia utilizatorului mai multe funcii de calcul numeric al integralelor şi anume quad, quad8, quadl, trapz, dblquad, triplequad. Funciile MATLAB quad, quad8 şi quadl permit calculul numeric al integralelor funciilor de o variabilă, acestea putând fi apelate de pildă cu una din sintaxele: s = quad8(fun, a, b) s = quad8(fun, a, b, tol) s = quad(fun, a, b) s = quad(fun, a, b, tol) s = quadl(fun, a, b) s = quadl(fun, a, b, tol)
(9.31)
În apelurile de mai sus s desemnează valoarea integralei, adică suprafaa cuprinsă între curba determinată de funcia fun şi abscisa, a şi b reprezintă limitele domeniului de integrare [a, b] , iar tol reprezintă eroarea relativă admisă între doi paşi consecutivi. Dacă apelul de integrare numerică include şi tol atunci integrarea funciei continuă să se rafineze până când eroarea relativă a estimării este mai mică decât tolerana. Dacă tolerana tol este omisă, valoarea implicită este 10-3 . (Estimare anterioara – Estimare curentă )/Estimare curentă ≤ tol
(9.32)
Să considerăm ca exemplu calculul numeric al integralei funciei y = f(x) = 1/(x 2+1) în intervalul [0, 2]. În general funcia fun poate fi: • Un obiect inline ca de pildă: fun = inline('1./(x.^2+1)');
(9.33)
În acest caz calculul numeric al integralei func iei y = 1/(x 2+1) în intervalul [0, 2] presupune sintaxa MATLAB: S1 = quad(fun, 0, 2) S2 = quad8(fun, 0, 2) S3 = quadl(fun, 0, 2)
(9.34)
Rezultatul MATLAB obinut prin utilizarea celor trei func ii MATLAB este identic şi anume: 1.1071 • Un fişier MATLAB de tip funcie, ca de pildă fişierul fun.m:
function y = fun(x) y = 1./(x.^2+1);
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(9.35)
201/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
202
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Astfel, calculul numeric al integralei funciei y = 1/(x 2+1) în intervalul [0, 2] presupune sintaxa MATLAB: S1 = quad(@fun, 0, 2) S2 = quad8(@fun, 0, 2) S3 = quadl(@fun, 0, 2)
(9.36)
Rezultatul MATLAB obinut prin utilizarea celor trei func ii MATLAB este identic şi anume: 1.1071. Funciile quad, quad8, quadl , se utilizează dacă integrandul se poate exprima sub forma unei funcii analitice. Dacă funcia de integrat este descrisă prin valori numerice, se aproximează mai întâi acestea printr-o funcie corespunzătoare şi apoi funcia se scrie în sintaxa MATLAB de mai sus. Funcia trapz realizează calculul numeric al integralei prin metoda trapezelor şi se apelează cu una din sintaxele: Z = trapz(X, Y) Z = trapz(Y)
(9.37)
Apelată cu două argumente, funcia trapz calculează integrala funciei y(x). X este un vector coloană care conine abscisele, iar Y este un vector coloană sau o matrice, cu acelaşi număr de linii ca X , care conine valorile funciei corespunzătoare acelor abscise. Z este un scalar dacă Y este un vector. Dacă Y este o matrice, Z este un vector linie în care sunt returnate ariile calculate pentru fiecare coloană a lui Y . Dacă funcia trapz este apelată numai cu argumentul Y , distana dintre două abscise succesive este considerată egală cu unitatea. În acest caz limitele de integrare sunt a = 1 şi b = N ( N numarul de elemente ale vectorului Y ). Funcia trapz presupune că integrandul este dat prin valori numerice în noduri echidistante ale intervalului de integrare. Dacă funcia de integrat este descrisă sub forma analitică y=f(x), în primul rând se crează cei doi vectori care conin valorile perechilor abscisă-ordonată (x-y). Acest lucru se realizează prin evaluarea funciei f(x) cu un pas adecvat pentru x şi ulterior se aplică funcia trapz. Integrarea funciilor de două variabile presupune un calcul de forma: y max x max
S=
∫ ∫ f ( x, y)dxdy
(9.38)
y min x min
Pentru a calcula o integrală ca cea de mai sus, se poate folosi func ia dblquad , care se poate apela de pildă cu una din sintaxele MATLAB: s = dblquad(fun, xmin, xmax, ymin, ymax) s = dblquad(fun, xmin, xmax, ymin, ymax, tol),
(9.39)
unde primul argument fun este un şir de caractere coninând numele funciei integrand, iar al doilea până la al cincilea argument reprezintă:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
202/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
203
xmin limita inferioară a domeniului de integrare corespunzător integralei interioare, xmax limita superioară a domeniului de integrare corespunzător integralei interioare, ymin limita inferioară a domeniului de integrare corespunzător integralei exterioare, ymax limita superioară a domeniului de integrare corespunzător integralei exterioare. tol tolerana cu care este evaluată numeric integrala. Să considerăm că f(x, y) = y sin(x) + x cos (y). Primul pas constă în construcia funciei a cărei integrală trebuie evaluată. Funcia trebuie să fie capabilă să întoarcă un vector atunci când se introduce un vector. Trebuie deasemenea stabilită care variabilă este în integrala interioară şi care este în integrala exterioară. În acest exemplu, variabila interioară este x şi variabila exterioară este y (ordinea în integrala este dxdy). În acest caz, funcia integrand este definită în fişierul MATLAB de tip funcie fun2. function f = fun2(x, y) f = y*sin(x) + x*cos(y); Pentru a evalua integrala dublă, se foloseşte sintaxa: s = dblquad(@fun2, xmin, xmax, ymin, ymax);
(9.40)
(9.41)
Considerând integrala funciei fun2 în domeniul mărginit de [ π apelul π , 2 π π ] şi [0, π π ] prin sintaxei MATLAB: xmin = pi; xmax = 2*pi; ymin = 0; ymax = pi; s = dblquad(@fun2, xmin, xmax, ymin, ymax)
(9.42)
se obine rezultatul -9.8696 . Integrarea funciilor de trei variabile presupune un calcul de forma: z max y max x max
S=
∫ ∫ ∫ f ( x, y, z)dxdydz
(9.43)
z min y min x min
Pentru a evalua integrale ale funciilor cu trei variabile se foloseşte funcia MATLAB triplequad putând fi apelată de pildă cu una din sintaxele: triplequad(fun, xmin, xmax, ymin, ymax, zmin, zmax) triplequad(fun, xmin, xmax, ymin, ymax, zmin, zmax, tol),
(9.44)
unde primul argument fun reprezintă un şir de caractere ce desemnează funcia de integrat, xmin, xmax, ymin, ymax, zmin, zmax reprezintă limitele domeniului de integrare, iar tol tolerana de evaluare numerică a integralei.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
203/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
204
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Considerând de pidă funcia f(x, y, z) = y sin(x)+z cos(x), calculul integralei acestei funcii pe domeniul x∈ [0, π π ], y∈ [0, 1], z∈ [-1, 1] presupune de pildă o sintaxa MATLAB ca cea de mai jos. s = triplequad(inline('y*sin(x) + z*cos(x)'), 0, pi, 0, 1, -1, 1)
(9.45)
Rezultatul MATLAB este s = 2.
9.3. Aplicaii numerice APLICA IA 52: Să se calculeze derivata de ordinul I şi II al lui y = [0 3 4 4 2 3 5 7 11 11 9] func ie de x = [0 1 2 3 4 5 6 7 8 9 10] şi să se ploteze pe acelasi grafic func ia y(x), y’(x) şi y”(x). Se foloseşte setul de comenzi MATLAB de mai jos: x = [0 1 2 3 4 5 6 7 8 9 10]; y = [0 3 4 4 2 3 5 7 11 11 9]; dy = diff(y)./diff(x) d2y = diff(dy)./diff(x(1:end-1)) plot(x, y, x(1:end-1), dy, x(1:end-2), d2y); grid on; MATLAB va răspunde cu următoarele rezultate numerice şi grafice: dy = 3 1 0 -2 1 2 2 4 0 -2 d2y = -2 -1 -2 3 1 0 2 -4 -2
Fig. 9.9. Graficul funciilor y, y' şi y".
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
204/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
205
APLICA IA 53: Să se evalueze numeric Laplaceanul V al func iei U(x, y) = x4 y5 în intervalul x∈[-4, 4] şi y∈[-4, 4] şi să se ploteze pe acela şi grafic func ia U şi V. Se foloseşte următorul set de comenzi MATLAB: [x, y] = meshgrid(-4:4, -4:4); U = x.^4.*y.^5; V = 4*del2(U); mesh(x, y, U); hold on; mesh(x, y, V); hold off; MATLAB va afişa graficul următor.
Fig. 9.10. Graficul funciilor U şi V.
APLICA IA 54: 2
2
Presupunând că poten ialul magnetic scalar φ are expresia φ (x, y) = x ⋅ y ⋅ e , să se calculeze numeric şi să se ploteze mărimea intensitate a câmpului magnetic irota ional H, în intervalul x∈[-2, 2] şi y∈[-2, 2], pentru dx = dy = 0.2. − x − y
Se foloseşte următorul set de comenzi MATLAB: [X,Y] = meshgrid(-2: .2: 2); FI = X.*Y.*exp(-X.^2 - Y.^2);
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
205/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
206
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
[dx,dy] = gradient(FI, .2, .2); contour(X, Y, FI); hold on; quiver(X, Y, dx, dy); grid off; hold off; MATLAB va afişa graficul din Fig. 9.11.
Fig. 9.11. Graficul funciei H.
APLICA IA 55: Să se calculeze integrala numerică a func iei f(x) = e x în intervalul [-2; 2] calculat ă cu cele trei func ii MATLAB şi cu toleran e de {100 , 10-2 , 10-4 }. Compara i rezultatele. 2
Se foloseşte setul de comenzi MATLAB de mai jos: fun = inline('exp((x).^2)'); S10 = quad(fun, -2, 2, 1) S12 = quad(fun, -2, 2, 1e-2) S14 = quad(fun, -2, 2, 1e-4) S20 = quad8(fun, -2, 2, 1) S22 = quad8(fun, -2, 2, 1e-2) S24 = quad8(fun, -2, 2, 1e-4) S30 = quadl(fun, -2, 2, 1) S32 = quadl(fun, -2, 2, 1e-2) S34 = quadl(fun, -2, 2, 1e-4)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
206/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
207
MATLAB va răspunde cu: S10 = 33.0045 S12 = 32.9144 S14 = 32.9053 S20 S22 = = 32.9053 32.9053 S24 = 32.9053 S30 = 33.0567 S32 = 32.9053 S34 = 32.9053 APLICA IA 56: 2 Să se calculeze integrala numerică a func iei de două variabile f(x) = (y + 1)e x în intervalul x∈[-2, 2] şi y ∈ [-2, 2] calculat ă cu func ia MATLAB dblquad şi cu toleran e 0
-2
-4
de {10 , 10 , 10 }.
Folosind MATLAB Editor se crează în directorul curent fişierul function fun2.m ce conine următoarele comenzile MATLAB: function f = fun2(x, y) f = (y+1)*exp(x.^2); Pentru calculul integralei se foloseşte setul de comenzi MATLAB de mai jos scris în Command Window: xmin xmax == -2; 2; ymin = -2; ymax = 2; s0 = dblquad(@fun2, xmin, xmax, ymin, ymax,1) s2 = dblquad(@fun2, xmin, xmax, ymin, ymax,1e-2) s4 = dblquad(@fun2, xmin, xmax, ymin, ymax,1e-4) MATLAB va răspunde cu: s0 = 132.0180 s2 = = 131.6210 131.6278 s4 APLICA IA 57: Să se calculeze
integrala numerică a func iei de trei variabile 2 f(x) = (x + y + z + 1)(ye + xe y ) în intervalul x∈[-2, 2,], y∈ [-2, 2] şi z ∈ [-2, 2] calculat ă cu func ia MATLAB triplequad şi cu toleran e de {100 , 10-2 , 10-4 }. x2
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
207/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
208
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Folosind MATLAB Editor se crează în directorul curent fişierul function fun3.m ce conine următoarele comenzile MATLAB: function f = fun3(x, y, z) f = (x+y+z+1)*(y.*exp(x.^2) + x.*exp(y.^2)); Pentru calculul integralei se foloseşte setul de comenzi MATLAB de mai jos scris în Command Window: xmin = -2; xmax = 2; ymin = -2; ymax = 2; zmin = -2; zmax = 2; s0 = triplequad(@fun3, xmin, xmax, ymin, ymax, zmin, zmax,1e-2) zmax,1) s2 s4 = triplequad(@fun3, xmin, xmax, ymin, ymax, zmin, zmax,1e-4) MATLAB va răspunde cu: s0 = 1.4082e+003 s2 = 1.4040e+003 s4 = 1.4040e+003
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
208/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
209
10. INTEGRAREA NUMERICĂ A ECUAIILOR DIFERENIALE În acest capitol se prezintă funciile MATLAB de rezolvare a ecuaiilor difereniale de ordinul întâi şi metodele de rezolvare a ecuaiilor difereniale de ordin superior, prin convertire în sisteme de ecuaii difereniale de ordinul întâi. Funciile MATLAB din această categorie au la baza metoda de integrare Runge-Kutta.
10.1. Ecuaiile difereniale de ordinul întâi O ecuaie diferenială de ordinul întâi are forma: y’ = dy/dx = g(x, y)
(10.1)
unde x este variabilă independentă, iar y este funcia necunoscută. Deşi soluiile analitice ale ecuaiilor difereniale sunt preferate, acestea nu pot fi întotdeauna obinute. Metodele numerice cele mai cunoscute de rezolvare a ecua iilor difereniale sunt: metoda Euler şi metoda Runge-Kutta. Ambele metode rezolvă ecuaiile aproximând funciile prin descompunere în serii Taylor: (b - a) 2 '' (b - a) n (n) f(b) = f(a) + (b - a)f (a ) + f (a ) + ... + f ( a ) + ... 2! n! '
(10.2)
Aproximarea de ordinul întâi foloseşte funcia şi derivata de ordinul întâi a acesteia: '
f(b) = f(a) + (b - a)f (a)
(10.3)
iar aproximarea de ordinul doi foloseşte funcia şi derivata sa de ordinul doi: f(b) = f(a) + (b - a)f ' (a) +
(b - a) 2 '' f (a) 2!
(10.4)
Creşterea numărului de termeni în dezvoltarea în serie Taylor creşte precizia aproximării.
10.2. Funcii MATLAB pentru integrare numerică a ecuaiilor difereniale MATLAB pune la dispoziie mai multe funcii pentru integrarea numerică a ecuaiilor difereniale de ordinul întâi printre care: ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb care rezolvă ecuaiile folosind metoda Runge-Kutta. Funciile odeX (unde X reprezintă unul dintre indicativele 45, 23, 113, 15s, 23s, 23t, 23tb) se pot apela de pildă cu una din sintaxele de mai jos: [x, y] = odeX(’yprim’, x0, xf, y0) [x, y] = odeX(’yprim’, x0, xf, y0)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(10.5)
209/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
210
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
[x, y] = odeX(’yprim’, x0, xf, y0, tol, trace) [x, y] = odeX(’yprim’, x0, xf, y0, tol, trace), unde: • yprim este o variabilă de tip şir de caractere reprezentând numele unui fi şier M, de tip funcie, ce defineşte derivata funciei necunoscute y, • x0 este valoarea iniială a variabilei x, • xf este valoarea finală a variabilei x, • y0 este un vector coninând condiiile iniiale, • tol este precizia dorită a soluiei (opională). Implicit tol = 10-3 pentru ode23, tol = 10-6 pentru ode45 etc. • trace este un parametru care asigur ă tipărirea rezultatelor intermediare în mod opional. Valoarea implicită este zero, adică f ără tipărire. Numărul de puncte xi aparinând intervalului ( x0, x f ), în care funciile odeX returnează i iile odeX valorile y necunoscutei, un parametru al acestora. apelează metode deale integrare de tip este Runge-Kutta, cu intern stabilirea automatăFunc a pasului. Algoritmul Runge-Kutta cu pas automat î şi alege pasul în funcie de gradientul soluiei, respectiv un pas mai mare când gradientul y’(x) are o valoare mai mică. Funciile MATLAB au două argumente de ieşire: valorile variabilei x şi mărimile corespunzătoare ale necunoscutei y, care reprezintă soluia numerică a ecuaiei difereniale. Pentru exemplificare să rezolvăm ecuaia diferenială y’=x 2 pe intervalul [2, 4] , cu condiia iniiala y(2) = 0.5. Soluia analitică a ecuaiei este ya =1/3*x^3-6.5/3. Astfel, pentru a rezolva numeric ecuaia diferenială vom crea un fişier funcie MATLAB ce conine:
function dy = g1(x, y)
(10.6)
dy = x^2; Fişierul are numele g1.m, şi se apelează cu secvena MATLAB: [x, yn] = ode23(’g1’, [2, 4], 0.5);
(10.7)
Pentru a plota pe acelaşi grafic soluia analitică şi cea numerică vom executa setul de comenzi MATLAB (10.8), rezultatul grafic fiind prezentat în Fig. 10.1: ya =1/3*x^3-6.5/3; plot(x, yn‚ ’o’, x, ya);
(10.8)
grid;
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
210/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
211
Fig. 10.1. Integrarea unei ecuaii difereniale de ordinul I şi plotarea soluiei.
Să continuăm cu rezolvarea ecuaiei difereniale y’ = sin(100*pi*x) + 30*y pe intervalul [0, 0.1] , cu condiia iniială y(0) = 0. Rezolvarea numerică a ecuaiei difereniale presupune crearea unui fişier funcie MATLAB ce conine: function dy = g2(x, y) dy = sin(100*pi*x) + 30*y;
(10.9)
Fişierul are numele g2.m, şi se apelează cu secvena MATLAB: [x, y] = ode23(’g2’, [0:0.001:0.1], 0);
(10.10)
Pentru a plota soluia numerică, Fig. 10.2, vom executa comenzile MATLAB: plot(x, y); grid;
(10.11)
Fig. 10.2. Plotarea soluiei unei ecuaii difereniale de ordinul I.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
211/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
212
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
10.3. Integrarea ecuaiilor difereniale de ordin superior şi a sistemelor de ecuaii difereniale O ecuaie diferenială de ordin superior este echivalentă cu un sistem de ecuaii difereniale cuplate, de ordinul întâi. De pildă ecuaia ecuaia diferenială de ordinul n : y(n) = f(x, y, y’, y”, ..., y (n-1) ) (10.12) la care se asociază notaiile: y1(x) = y(n-1) y 2(x) = y(n-2) ... y n-2(x) = y” y n-1(x) = y’
(10.13)
y n(x)
=y este echivalentă cu un sistem de n ecuaii difereniale de ordinul întâi:
y1’ = y(n) = g(x, u n , u n-1 , ..., u1 ) y 2’ = y1 ... y n-2’ = y n-3 y n-1’ = y n-2
(10.14)
Să rezolvăm de pildă următoarea ecuaie diferenială liniară de ordinul doi : y” + (y 2 - 2) . y’ -1 = 0; condiii iniiale: y(0) = 1, y’(0) = 0
(10.15)
Ecuaia este echivalentă cu sistemul: y1’ = y1(2 - y 2 2 ) +1 y 2’ = y1
(10.16)
Rezolvarea acestui sistem presupune întâi crearea unui fi şier funcie MATLAB care conine: function yprim = ecdif(x, y); yprim =[ y(1).*(2 - y(2).^2) + 1; y(1)];
(10.17)
Pentru integrarea sistemului de ecuaii difereniale de ordinul întâi pe intervalul [0, 20] , şi pentru plotarea funciei şi a derivatei sale, Fig. 10.3, se utilizează instruciunile MATLAB: t0 = 0; tf = 3; y0 = [0, 1]; [t, yy] = ode23(’ecdif’, [t0, tf], y0);
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(10.18)
212/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
213
plot(t, yy(:, 1), ’--b’, t, yy(:, 2), ’-r’); grid; text(2.1, 2.6, 'functia y'); text(2.1, 0.75, 'derivata functiei y');
Fig. 10.3. Integrarea unei ecuaii difereniale de ordin superior şi plotarea soluiei şi a derivatei.
10.4. Aplicaii numerice APLICA IA 58: Se consider ă un transformator monofazat caracterizat de: Rk = 2 Ω , Lk = 13 mH, U 1n= 220V, ω = 100π . Se consider ă că în secundarul transformatorului apare un scurtcircuit brusc la momentul t=0. Transformatorul este alimentat cu o tensiune de forma u1(t)=U 1n√ 2sinω t. Se consider ă i1k (0) = 0. Considerând ecua ia de tensiuni a transformatorului la scurtcircuit: Rk i1k + Lk di1k /dt = U 1n√ 2sinω t, să se traseze varia ia în timp pe zece perioade a curentului de scurtcircuit brusc i1k . Folosind MATLAB Editor se crează în directorul curent fişierul function tr_scc.m care conine următoarele comenzile MATLAB: function dik = tr_scc(t, ik) Rk = 2; Lk = 13*1e-3; U1n = 220; omega = 100*pi; dik = 1/Lk*(U1n*sqrt(2)*sin(omega*t) - Rk*ik);
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
213/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
214
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Apoi se apelează funcia creată cu succesiunea de comenzi MATLAB: [t, ik] = ode23('tr_scc', [0:0.001:0.2], 0); plot(t, ik); grid on; xlabel('t [s]'); ylabel('i_1_k [A]'); MATLAB va afişa variaia în timp a curentului ca în Fig. 10.4.
Fig. 10.4. Graficul funciei i1k.
APLICA IA 59: Se consider ă o placă plană de grosime Dx = 0,1 m. Câmpul termic sta ionar al plăcii verifică ecua ia diferen ială: 2
d T 2
dx
− 15T 2 = 1000 .
Pe suprafa a x = 0 se cunosc temperatura (T(0) = 100 ° ), respectiv
gradientul de temperatur ă (-T’(0) = 10). Să se ploteze pe acela şi grafic temperatura T, respectiv gradientul de temperatur ă -T’, func ie de coordonata x.
Folosind MATLAB Editor se crează în directorul curent fişierul function termic.m care conine următoarele comenzile MATLAB: function th = termic(x, teta) th =[ 15*teta(2)^2 + 1000; teta(1)]; Apoi se apelează funcia creată cu succesiunea de comenzi MATLAB:
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
214/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
215
Dx = 0.1; teta0 = [100, -10]; [x, teta] = ode23('termic', [0:0.001:Dx], teta0); plot(x, teta); grid on; xlabel('x [m]'); ylabel('teta [degC]') MATLAB va afişa variaia funcie de x a temperaturii ca în figura de mai jos.
Fig. 10.5. Graficul funciei i1k.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
215/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
216
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
11. FUNCII DE OPTIMIZARE NUMERICĂ Problema optimizării unor funcii matematice de una sau mai multe variabile apare deseori în inginerie. Funciile ce trebuiesc optimizate (minimizate sau maximizate) modelează de regulă anumite caracteristici specifice unor echipamente sau procese ce trebuiesc, la rândul lor, optimizate. Definirea problemei de minimizare pe un interval a unei func ii obiectiv F(x1, x2, x3, ..., xn) dependentă de un set de n parametri, constă în găsirea setului optim de parametri x1, x2, ..., xn, aparinând intervalului impus, pentru care funcia are valoarea cea mai mică. Funciile de minimizare implementate pe platforma de baz ă a pachetului de programe MATLAB (există un modul special denumit Optimization Toolbox destinat exclusiv problemelor de optimizare numerică), în cazul în care avem de a face cu una sau mai multe variabile sunt: fminbnd pentru minizarea funciilor de o singură variabilă într-un interval impus, fminsearch pentru minizarea funciilor de mai multe variabile, fzero pentru determinarea zeroului funciilor de o singură variabilă într-un interval impus.
11.1. Minimizarea funciilor de o variabilă Funcia fminbnd de minimizare a funciilor de o variabilă poate fi apelată folosind mai multe sintaxe, câteva dintre acestea fiind prezentate mai jos: x = fminbnd(fun, x1, x2) x = fminbnd(fun, x1, x2, optiuni) [x, fval] = fminbnd(fun, x1, x2, optiuni)
(11.1)
Funcia întoarce valoarea parametrului x din intervalul [x1, x2] pentru care funcia fun este minimă şi eventual valoarea corespunzătoare a funciei fval . Apelul funciei cu op iuni permite afişarea valorilor intermediare, permite fixarea numărului maxim de iteraii şi de evaluări, fixarea criteriului de eroare etc. (pentru detalii tastează help options în Command Window). Să calculăm minimul funciei sin(x) în intervalul [0; 2ππ ] . Pentru aceasta vom folosi sintaxa MATLAB: [x, fmin] = fminbnd(’sin’, 0, 2*pi)
(11.2)
Rezultatul MATLAB este: x = 4.7124 fmin = -1.0000
(11.3)
Deci minimul funciei este -1 şi se obine la x = 4.7124 adică 3π π /2.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
216/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
217
11.2. Minimizarea funciilor de mai multe variabile Funcia de minimizare multidimensională fminsearch poate fi apelată în mai multe feluri, câteva dintre sintaxele de apel fiind prezentate mai jos: x = fminsearch(fun,x0) x = fminsearch(fun,x0,optiuni) [x,fval] = fminsearch(...)
(11.4)
Funcia fminsearch întoarce valoarea parametrului multidimensional x cea mai apropiată de valoarea x0, pentru care funcia fun prezintă un punct de minim local. În variabila fval este întoarsă valoarea funciei corespunzătoare punctului de minim local. Apelul funciei cu optiuni permite afişarea valorilor intermediare, permite fixarea numărului maxim de iteraii şi de evaluări, fixarea criteriului de eroare etc. ăm minimul Să calcul funciei Rosenbrock sau ”banana”, fiuncie utilizată deseori pentru testarea algoritmilor de optimizare:
f(x, y) = 100(y-x 2 ) 2+ (1-x) 2 + 2
(11.5)
Pentru aceasta vom crea întâi fişierul funcie care conine: function b = banana(x, y); b = 100*(y – x^2)^2 + (1 – x)^2 + 2
(11.6)
Pentru determinarea punctului de minim putem folosi sintaxa MATLAB: [xy, fmin] = fminsearch(’banana’, [0, 0])
(11.7)
Rezultatul MATLAB este: xy = 1.0000 1.0000 fmin = 2.0000
(11.8)
Deci minimul funciei este 2 şi se obine la xy = [1, 1] adica x = 1 şi y = 1.
11.3. Calculul zerourilor funciilor de o variabilă reală MATLAB permite calculul zeroului unei funcii de o variabilă reală prin intermediul funciei fzero. Sintaxele de apel ale funciei MATLAB sunt multiple ca de exemplu: x = fzero(fun, x0) x = fzero(fun, x0, optiuni) [x, fval] = fzero(fun, x0, optiuni)
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
(11.9)
217/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
218
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
Funcia MATLAB returnează zeroul funciei f(x) situat cel mai aproape de valoarea iniială impusă x0. Valoarea x0 poate fi un scalar sau un interval. Dac ă x0 este un interval atunci valorile funciei la capetele intervalului trebuie să aibă semne diferite, altfel funcia întoarce un mesaj de eroare. În fval funcia întoarce valoarea funciei în punctul x. Apelul funciei cu optiuni permite afişarea valorilor intermediare, fixarea numărului maxim de iteraii şi de evaluări, fixarea criteriului de eroare etc. Diferena între funcia fzero şi roots constă în faptul că funcia roots se aplică funciilor polinomiale şi calculează toate zerourile (rădăcinile) polinomului, reale sau complexe, pe când funcia fzero se aplică oricărei funcii de o variabilă reală şi returnează un singur zero, situat în preajma valorii iniiale x0. Spre exemplificare să calculăm zeroul funciei f(x) = (x-5) 2 – 4, cel mai apropiat de x0 = 2. Pentru aceasta să creem fişierul funcie fct.m care conine instruciunile: function ff = fct(x); ff = (x-5) 2 – 4;
(11.10)
Funcia se apelează cu sintaxa MATLAB: [x, fx] = fzero(’fct’, 2)
(11.11)
şi se obine rezultatul: x = 3 şi fx = 0.
11.4. Aplicaii numerice APLICA IA 60: Să se calculeze minimul func iei f(x) = (x - 10)2 - 1 pe intervalul [0, 20] şi valoarea func iei în acel punct folosind func ia MATLAB fminbnd. Se foloseşte următorul set de comenzi MATLAB: fun = inline('(x - 10)^2 - 1'); [xmin, funval] = fminbnd(fun, 0, 20) MATLAB va afişa următoarele rezultate numerice: xmin = 10 funval = -1 APLICA IA 61: Să se calculeze minimul func iei f(x, y) = sin(x)*(x - 10)2 + (x2 + y)2 + 3 şi valoarea func iei în acel punct folosind func ia MATLAB fminsearch. Plota i grafic func ia eviden iind punctul de minim.
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
218/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
219
Se foloseşte următorul set de comenzi MATLAB: fun = inline('sin(x(1))*(x(1) - 10)^2 + (x(1)^2+x(2))^2 + 3'); [xmin, funval] = fminsearch(fun, [0, 0]) [x, y] = meshgrid(-10: 0.1: 10); z = sin(x).*(x - 10).^2 + (x.^2+y).^2 + 3; mesh(x, y, z); hold on; plot3(xmin(1), xmin(2), funval,'ro'); hold off; MATLAB va afişa următoarele rezultate numerice şi grafice: xmin = -1.7395 -3.0260 funval = -132.8593
Fig. 11.1. Graficul funciei f(x, y).
APLICA IA 62: Să se calculeze zeroul func iei f(x) = sin2(x) + x2 - 3 în intervalul [0, 3] folosind func ia MATLAB fzero . Se foloseşte următorul set de comenzi MATLAB: fun = inline('sin(x)^2 + x^2 - 3'); [xmin, funval] = fzero(fun, [0, 3])
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
219/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
220
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
x = 0: 0.01: 3; y = sin(x).^2 + x.^2 - 3; plot(x, y, xmin, funval,'ro'); grid on; MATLAB va afişa următoarele rezultate numerice şi grafice: xmin = 1.4220 funval = 0
Fig. 11.2. Graficul funciei f(x, y).
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
220/221
5/14/2018
Ma tla b Pe ntr u Ingine r ie - slide pdf.c om
MEDII DE CALCUL ÎN INGINERIE ELECTRICĂ
221
12. BIBLIOGRAFIE ŞI WEBOGRAFIE [1] Mathworks: MATLAB User’s Guide – Version 6.5. [2] Ghinea M., Fireeanu V.: MATLAB – Calcul numeric şi grafică, Ed. Teora, Bucureşti, [3] 2000. Hunt B., Lipsman R., Rosenberg J.: A Guide to MATLAB: for Beginners and Experienced Users, Cambridge University Press, 2001, ISBN: 0521-00859-X. [4] Lapresté JT: Aide-mémoire MATLAB, Elipses , France, 2002, ISBN: 2-7298-0952-X. [5] Kharab A. , Guenther R.: An Introduction to Numerical Methods: A MATLAB Approach, Chapman & Hall/CRC, 2002, ISBN: 1-58488-281-6. [6] Otto SR, Denier JP: An Introduction to Programming and Numerical Methods in MATLAB, Springer, 2005, ISBN: 1-85233-919-5. [7] Sticklen J., Eskil MT: An Introduction to Technical Problem Solving with MATLAB v. 7 , Great Lakes Press, 2005, ISBN: 1-881018-80-6. [8] Mokhtari M., Marie, M.: Applications de MATLAB 5 et Simulink 2, Springer, 1998, 2-287-59651-8. [9] ISBN: Hanselman D. , Littlefield B.: Mastering MATLAB 7 , Prentice Hall, 2005, ISBN: 0-13143018-1 [10] Redfern D. , Campbell C.: The MATLAB 5 Handbook , Springer, 1998, ISBN: 0-38794200-9. [11] Yang W.: Applied Numerical Methods Using MATLAB, Wiley New York, ISBN: 0471698334. [12] Hahn BD: Essential MATLAB for Scientists and Engineers, ISBN: 0750652403. [13] http://www.mathworks.com/academia/student_center/tutorials/index.html?link=body [14] http://texas.math.ttu.edu/~gilliam/ttu/mlhtml_1/m4330_ml_1.html [15] http://www.yorku.ca/jdc/courses/Matlab/ [16] [17] http://www.math.udel.edu/~driscoll/teaching/matlab_adv.pdf http://physics.gac.edu/~huber/matlab/ [18] http://www.math.utah.edu/lab/ms/matlab/matlab.html [19] http://www.glue.umd.edu/~nsw/ench250/matlab.htm [20] http://staff.science.uva.nl/~brandts/SIMPROG/matlab.html
http://slide pdf.c om/re a de r/full/ma tla b-pe ntr u-ingine r ie
221/221