Sunteți pe pagina 1din 216

MODELARE I SIMULARE N MATLAB & Simulink (Algoritmi de simulare in Inginerie Electrica-ASIE)

Conf. dr. ing. Lucian MIHE-POPA

Cuprinsul cursului partea I


Introducere in MATLAB & Simulink Instruciuni, funcii si operaii de baza ale MATLABului Crearea graficelor. Reprezentri si funcii grafice Achiziia, interpolarea si aproximarea datelor
Prelucrarea datelor si calcule statistice Aproximarea datelor prin metoda celor mai mici ptrate Analiza Fourier si FFT Analiza circuitelor electrice de cc si ca Rspunsul in domeniul timp si frecventa Metode de proiectare a RG-PID Tehnici de analiza a circuitelor electronice

Analiza circuitelor electrice si electronice


Cuprinsul cursului partea II


Introducere in Simulink; Modelarea si simularea sistemelor dinamice (in timp continuu si discret), sistemelor si elementelor neliniare; Proiectarea sistemelor de reglare automata (SRA) utilizand RG-P, PI, PID; Modelarea circuitelor electrice si a filtrelor de retea si simularea diferitelor regimuri de funcionare; Modelarea si simularea masinilor electrice
Metode de pornire si franare a MCC cu excitatie separata Actionari cu MCC, reglarea vitezei in cascada.
3

Structura prezentarii: C1 + C2
1.

Introducere in MATLAB & Simulink


Ce este MATLABul ? Lansarea in executie. Interfata MATLAB - utilizator Ce este Simulinkul ? Informatii ajutatoare ale MATLABului (Helpul online)

2.

Instructiuni, functii si operatii de baza ale MATLABului


Structura programelor MATLAB: fisiere script si function Matrice si operatii matriceale Operatii si functii matematice uzuale Programarea MATLAB. Instructiuni si functii de control

3.

Crearea graficelor. Reprezentari si functii grafice


Reprezentri grafice elementare Reprezentri grafice tridimensionale 3D Crearea si controlul ferestrelor grafice
4

1.Introducere in MATLAB &Simulink 1.1. Ce este MATLABul?


MATLAB =MATrix LABoratory

MATLABul este un pachet de programe de nalta performanta dedicat calculului numeric, reprezentrilor grafice si evalurilor tehnice. Integreaza calcule matriceale, analiza numerica, vizualizarea grafica si limbajul de programare intr-un mediu usor de utilizat, in care problemele si soluiile sunt exprimate printr-un model matematic MATLABul este de fapt un sistem interactiv care a fost iniial conceput astfel incat elementul de baza cu care opereaz sa fie matricea.
5

1.1. Facilitati ale MATLABului


Cele mai importante facilitai oferite de MATLAB sunt: Calcularea, evaluarea si analiza sistemelor (circuitelor electrice, acionari electrice, SRA etc) Dezvoltarea algoritmilor de control Achiziia, prelucrarea si analiza datelor Simulare, modelare, programare Vizualizare, reprezentare grafica si animaie Dezvoltarea unor aplicatii, bazate pe interfee grafice interactive (GUI) Analiza si proiectarea sistemelor de reglare si conducere
6

1.1. Biblioteci MATLAB


Din punct de vedere structural MATLABul este realizat sub forma unui nucleu de baza in jurul cruia sunt construite asa numitele toolboxuri. MATLABul include aplicaii specifice sau familii de caracteristici, dedicate unui anumit domeniu . Acestea sunt colecii extinse de funcii MATLAB, sub forma de fiiere (m-files), care dezvolta mediul de programare de la o versiune la alta, si care permit invatarea si aplicarea unor tehnici specializate. Principalele domenii in care aceste toolboxuri pot fi utilizate sunt descrise de (Fig. 1):

7
Fig. 1. Lista principalelor toolboxuri ale versiunii MATLAB 6.5.

1.1. Structura MATLAB


Pachetul de programe MATLAB conine cinci pari principale: Mediul de dezvoltare (Development Environment): set de toolboxuri Biblioteca cu functii matematice (The MATLAB Mathematical Function Library) : sum, sine etc Limbajul MATLAB (The MATLAB Language): algoritmi, functii, structuri de control a datelor si caracteristici de programare; Grafica (Graphics): functii dedicate reprezentarilor grafice in 2D si 3D; Interfata cu un program de aplicatii (The MATLAB8 Application Program Interface-API)

1.2. Lansarea in execuie. Interfaa MATLAB - utilizator


MATLABul lucreaz in principal cu cinci tipuri de ferestre, una principala pentru comenzi (command window) si alte patru ferestre secundare: spatiul de lucru (workspace), directorul curent (current directory), fereastra de afisare a comenzilor anterioare (command history) si fereastra Launch Pad care permite accesarea urmatoarelor librarii-MATLAB, Toolboxes, Simulink si Blocksets (Fig. 2)

1.3. Ce este Simulinkul?


SIMULINKul este un set de programe soft dedicat modelarii, simulrii si analizei sistemelor dinamice.

Permite modelarea sistemelor liniare si neliniare atat in timp discret cat si in timp continuu sau hibride Simulinkul are la baz programul MATLAB fiind o unealta a acestuia; Ca si extensie a MATLABului, Simulinkul conine suplimentar mai multe caracteristici specifice ale sistemelor dinamice. O diagrama bloc in Simulink reprezint un model grafic al unui sistem dinamic, care conine un set de simboluri denumite blocuri, interconectate intre ele prin linii. Fiecare bloc reprezinta un sistem dinamic elementar care genereaza o marime de iesire, sau mai multe, care poate fi o marime continua in timp sau discreta. Liniile de legatura reprezinta conexiunile dintre marimile de intrare si de iesire ale blocurilor. Tipul blocurilor, din sistemul modelat, determina relatia dintre intrarile, starile si iesirile acestuia, in functie de timp.

10

1.3. Lansarea in executie a Simulinkului

Lansarea pachetului de programe Simulink se face din MATLAB in doua moduri: prin accesarea pictogramei Simulink sau din fereastra de comanda (command window) prin scrierea cuvantului simulink. Pe ecranul monitorului se va afia fereastra librriei simulink (simulink library browser); aceasta conine toate instrumentele (toolboxes) i toate blocurile nucleului de baza simulink (ncepnd de la continuous i sfrind prin blocurile definite de utilizator (user-defined functions), asa cum arata si figura
11

1.3. Facilitati Simulink


Cele mai importante facilitai pe care le ofer Simulinkul sunt: Modelarea, simularea si analiza sistemelor dinamice Implementarea sistemelor liniare si neliniare Construirea unor diagrame bloc (continue si discrete), utiliznd biblioteca existent sau crearea propriilor blocuri (librarii) Vizualizarea mai multor ferestre in acelai timp si a mai multor variabile pe acelai grafic Incorporarea unor programe scrise in C, C++, Ada, Fortran intr-un model de simulare dinamica utiliznd librria funciilor S (S-functions) Implementarea hard si testarea diferitelor strategii de control
12

1.4. Informatii ajutatoare ale MATLABului (Helpul online)


MATLABul poseda o documentatie vasta care permite obtinerea informatiilor necesare despre invatarea si utilizarea acestui pachet de programe, atat online cat si tiparit (in format pdf). Comanda help furnizeaza informatii online despre orice functie MATLAB si Simulink sau realizata de un utilizator al pachetului de programe. Cu comanda help se pot obtine informatii ajutatoare despre o anumita functie, se pot lista fisierele dintr-un director sau se poate lista continutul unui anumit fisier. Informatii specifice despre o anumita functie sau despre un director se pot obtine tastand comanda help + subiect. De exemplu, tastand comanda help elfun vom obtine informatii despre toate functiile matematice elementare: functiile trigonometrice (sin, cos), exponentiale (exp, log), complexe (real, imag). Daca subiectul este un director helpul afiseaza fisierele continute in acesta. Se pot scrie helpuri (linii cu informatii ajutatoare) pentru fisierele MATLAB (M-file) sau pentru toolboxurile proprii construite de utilizator.
13

2. Instructiuni, functii si operatii de baza ale MATLABului


MATLABul este un limbaj de expresii. Expresiile tiparite de utilizator sunt interpretate si evaluate. Instructiunile MATLAB sunt de cele mai multe ori de forma : variabila = expresie Daca numele variabilei si semnul = sunt omise, MATLABul creeaza automat o variabila cu numele ans (Fig. 4) in care este returnat rezultatul unui calcul, ca in exemplul urmator: Tastand urmatoarea secventa (operatie matematica) in fereastra de comanda 20 2 * 5 MATLABul va returna urmatorul raspuns: ans = 10 Orice instructiune sau linie de instructiuni este terminata cu enter. Utilizand tasta enter se trece la urmatoarea secventa de linie. Daca ultimul caracter al liniei este punct-virgula ; , instructiunea este executata dar nu se tipareste nimic in fereastra de comenzi (command window). MATLABul utilizeaza pentru reprezentarea numerelor, in notatia zecimala conventionala, punctul zecimal. De exemplu 0.15 = 0,15 sau 1.5021e-6 = 1,5021 * 10-6.

14

Simbolul doua puncte (:) este unul dintre cei mai importani operatori ai MATLABului. Poate fi utilizat pentru a crea vectori si matrice, pentru a specifica submatrice si vectori si pentru a executa iteraii. De exemplu comanda: t1 = 1:6 va genera un vector linie coninnd numerele de la 1 la 6 avand incrementul unitate. MATLABul va genera rezultatul:

t1 = 1 2 3 4 5 6 Incrementul poate fi pozitiv sau negativ si poate fi diferit de unitate, ca in exemplul urmator: t2 = [(0:2:10); (5:-0.2:4)] va genera urmatorii vectori: t2= 0 2.0000 4.0000 6.0000 8.0000 10.0000 5.0000 4.80000 4.60000 4.40000 4.20000 4.0000 MATLABul are cateva variabile speciale predefinite. Acestea nu pot fi declarate si sunt accesibile global in orice fisier-M (M-file) si includ: i, j, pi=, inf= si NaN=Not-a-Number (0/0); Ambele variabile i si j au aceeasi valoare si sunt folosite pentru a genera numerele complexe, ca in exemplul urmator: z=3+4*j. 15 Va returna z = 3.0000 + 4.0000i

2.1. Structura programelor MATLAB


MATLABul lucreaz fie in modul linie de comanda, situaie in care fiecare linie este prelucrata imediat si rezultatele sunt afiate, fie in programe coninute in fiiere. Fiierele ce conin instruciuni MATLAB se numesc fiiere-m (au extensia .m). Aceste fiiere constau dintr-o succesiune de instruciuni cu posibilitatea apelrii si altor fiiere m si sunt fiiere text de tip ASCII. Un program MATLAB poate fi scris sub forma a doua tipuri de fiiere script si / sau function. Ambele tipuri sunt scrise in format ASCII (text) iar algoritmul care a fost implementat poate fi urmrit cu uurina daca se cunosc conveniile si sintaxa MATLAB. Aceste tipuri de fiiere (cu extensia .m) permit crearea unor funcii noi care sa le completeze pe cele deja existente. Prin aceasta facilitate MATLABul poate fi extins la aplicaii specifice utilizatorului care are, de asemenea, posibilitatea 16 scrierii de noi proceduri.

In tabelul 1 se vor prezenta cateva functii MATLAB de control al fisierelor:


Functia what who whos dir cd delete Sterge fisierul precizat de pe disc which +nume fisier Returneaza calea in care este localizat fisierul Descrierea functiei Listeaza fisierele cu extensia .m, .mat, .dat, .mex din directorul curent Listeaza variabilele curente din memorie Listeaza variabilele curente din memorie, dimensiunile lor si tipul acestora Listeaza continutul directorului curent Returneaza sau schimba directorul curent

17

2.1.1. Fiiere script


Un fiier script este un fiier extern ferestrei de comenzi fiind plasat in directorul curent si care conine o secvena de comenzi MATLAB Fiierele script sunt cele mai simple fiiere-m (cu extensia .m) deoarece ele nu au nici mrimi de intrare nici de ieire. Dup execuia unui fiier script, variabilele cu care acesta a operat raman stocate in spaiul de lucru (workspace). Fiierele script lucreaz cu date existente din workspace. De asemenea, ele pot crea date noi cu care sa opereze. Daca avem mai multe fiiere intr-un director este de dorit sa includem cteva comentarii (explicative) la nceputul fiecrui 18 fiier creat.

2.1.1. Fisiere script. Exemplu


Exemplul 1: Sa se scrie un program MATLAB sub forma de fisier script care sa calculeze amplitudinea si faza unei functii de transfer G(jw)=1 / (jw+2) pentru w = 1. Solutie: Se creaza un fisier-m (M-file) cu numele amplitudine in care se scriu urmtoarele linii:

%Amplitudine.m: exemplu de fisier script pentru calcularea amplitudinii si fazei lui G pentru w=1.

w=1; G=1 / (j*w+2); Amplitudinea = abs(G) Faza = atan(imag(G) / real(G))


Scriind cuvntul amplitudine in fereastra de comenzi (command window) vom obtine urmtorul rspuns: Amplitudine = 0.4472 Faza = -0.4636 Scriind comanda help amplitudine in fereastra de comenzi, MATLABul ne va afisa urmatorul text: -amplitudine.m: exemplu de fisier script pentru calcularea amplitudinii si fazei lui G pentru w=1.
19

2.1.2. Fisiere function


Daca prima linie a unui fiier M conine cuvntul function, fisierul respectiv este declarat ca fiier funcie. Variabilele definite si manipulate in interiorul fiierului functie sunt localizate la nivelul acesteia. Prin urmare la terminarea execuiei unei functii, in memoria calculatorului nu raman dect variabilele de ieire ale acesteia. Un fiier funcie difer de unul script prin faptul ca poate lucra cu argumente (secvente ale functiei: intrri - ieiri). Forma generala a primei linii a unui fiier function este:

function [param_iesire] = nume_functie (param_intrare)


unde function este cuvntul cheie care declara fiierul ca fiier funcie, nume_functie este numele functiei, adica numele sub care se salveaz fiierul fara extensie, param_iesire reprezint parametrii de ieire care trebuie separai prin virgula si cuprini intre paranteze drepte (daca functia nu are parametrii de ieire parantezele drepte si semnul egal nu mai au sens), iar param_intrare reprezint parametrii de intrare, care trebuie, de asemenea, separati prin virgula dar cuprinsi intre paranteze rotunde. Un fiier funcie care are mai multe intrari si iesiri poate fi de forma:

function [x, y, z] = sfera (theta, phi, rho)


Daca fiierul function nu conine nici un argument de iesire, atunci prima linie poate avea forma: 20 function printresults(x)

2.1.2. Fiiere function. Exemple


Structura unui fisier function poate conine instruciuni (comenzi) MATLAB de control, funcii MATLAB care realizeaz calcularea si alocarea valorilor pentru marimile de iesire. Exemplul 2. Sa se scrie un program MATLAB de tip function care sa calculeze media aritmetica a unui vector x.

Solutie: Se creeaza un fisier-m (M-file) cu numele medie care trebuie sa aibe acelasi nume cu al functiei ce urmeaza sa fie definita in prima linie, dupa cum urmeaza: function [mean] = medie(x) N = length(x); mean = sum(x) / N; Tastand urmatoarele linii in fereastra de comenzi: x = [1:10]; mean(x) MATLABul va returna urmatorul raspuns: ans = 5.5000

21

2.1.2. Fiiere function. Exemple


Exemplul 3: Sa se scrie un fisier function care sa calculeze rezistenta echivalenta a unor rezistoare conectate in serie. Rezolvare: Se creaza un fisier cu numele echivalent.m, care are urmatoarea configuratie: function Re = echivalent(R)

% echivalent este un program funcie care calculeaz rezistenta echivalenta a unor rezistoare conectate in serie, R fiind vectorul de intrare de lungime n iar Re este mrimea de ieire, rezistenta echivalenta n = length(R); %numarul rezistoarelor Re = sum(R); %rezistenta echivalenta Sa presupunem ca dorim sa calculam rezistenta echivalenta a urmtoarelor rezistente conectate in serie, avnd valorile 10, 20, 15, 16 si 5 Ohmi. Tastnd urmtoarele linii in fereastra de comenzi: R = [10 20 15 16 5]; Rserie=echivalent(R) Rezultatul obinut va fi: Rserie = 66
22

2.2. Matrice si operaii matriceale


MATLABul lucreaz cu scalari, vectori si matrice. Un scalar este interpretat ca o matrice cu o linie si o coloana (1 x 1), iar un vector este o matrice linie (1 x n) sau coloana (n x 1). MATLABul este de fapt un pachet de programe care lucreaz numai cu un singur tip de obiecte-matrice numerice rectangulare (tablou numeric cu doua dimensiuni), cu elemente reale sau complexe. Operaiile matriceale cu tablouri (arrays) sunt operaii aritmetice element cu element (intre elemente situate in aceeasi pozitie a tablourilor). Pentru efectuarea operaiilor cu tablouri se folosesc aceeai operatori ca in operatiile cu scalari, precedati de semnul ., semn ce indica de fapt efectuarea operaiilor element cu element. De exemplu operatorul de nmulire a doua matrice A si B se simbolizeaz in cazul tablourilor prin A .* B Definirea matricelor se face prin una din metodele:
Introducerea listei de elemente Generarea prin instructiuni si functii Crearea de fisiere-m (m-files) ncrcarea din fiiere de date externe
23

2.2. Matrice si operaii matriceale


Ceea mai simpla metoda de definire a matricelor consta in utilizarea unei liste explicite care trebuie sa respecte urmatoarele reguli:
elementele unei linii trebuie separate prin spatii libere (blankuri) sau virgule liniile se separa prin semnul (;) elementele unei matrice sunt cuprinse intre paranteze drepte

Matricea A poate fi introdusa in MATLAB cu una din cele 2 secvente:


A = [1 2 3; 4 5 6; 7 8 9] sau A = [1, 2, 3; 4, 5, 6; 7, 8, 9].

In ambele cazuri se returneaz:

A= 1 2 3 4 5 6 7 8 9 Pentru a determina dimensiunea unei matrice A si lungimea acesteia se utilizeaz functiile MATLAB size (A) si length (A). Suma matricei A se calculeaza cu comanda sum(A), si se obine rezultatul: ans = 12 15 18
24

1 2 3 A= 4 5 6 7 8 9

2.2.1. Calcule cu matrice. Generarea matricelor


MATLABul ofera un set de functii pentru utilizarea matricelor. Calculul determinantului unei matrice se face cu functia det, iar a inversei unei matrici cu functia inv. Daca dorim sa adugam o noua linie unei matrice, de exemplu matricei B, acest lucru se poate realiza tastnd comanda:

B = [B; [5 6]];

De asemenea, MATLABul ofer si facilitatea de a extrage o submatrice dintr-o matrice, sau de-a transforma o matrice intr-un vector. In cazul selectarii liniilor sau coloanelor se folosesc urmatoarele sintaxe: A(:, n) - selecteaza coloana n a matricei A A(m,:) - selecteaza linia m a matricei A(:) - selecteaza toate elementele matricei A, privite ca o singura coloana. Utilizand functia eye, care se apeleaza cu una dintre sintaxele: I=eye(n), I=eye(m, n) sau I=eye(size(nume_matrice))

se poate genera matricea identitate (matricea cu elementele de pe diagonala principala egale cu unu, iar toate celelalte elemente zero).

Functia linspace genereaza un vector cu pas liniar iar functia logspace genereaza un vector cu pas logaritmic.
25

2.2.1. Calcule cu matrice. Generarea matricelor


Exemplul 4: Sa se determine curentii I1, I2 si I3 unui sistem trifazat, stiind ca valorile tensiunilor sunt U1=10V, U2=15V si U3=12V iar impedanta echivalenta a circuitului Z este o matrice patratica de ordinul 3; Solutie: Pentru a rezolva sistemul trifazat de curenti se utilizeaza comanda inv.

Se poate scrie un fiier MATLAB-script sau se pot introduce urmtoarele linii in fereastra de comenzi (command window): Z=[3 6 9;6 15 12;9 12 20]; U=[10 15 12]; 3 6 9 I = inv(Z)*U; Z = 6 15 12 MATLABul genereaza urmatorul rezultat: 9 12 20 I = -3.6491

1.2807 1.4737

Ceea ce inseamna ca
I1 = -3.6491 A, I2 = 1.2807 A si I3 = 1.4737 A
26

2.2.1. Calcule cu matrice. Generarea matricelor


MATLABul include patru functii de baza pentru generarea matricelor: zeros: Genereaza o matrice cu toate elementele zero ones: Genereaza o matrice cu toate elementele 1 (matricea unitate) rand: Genereaza o matrice aleatoare cu distributie uniforma randn: Genereaza o matrice aleatoare cu distributie normala Exemplul : Sa se genereze o matrice M cu 2 linii si 4 coloane (cu dimensiunea 2 x 4) cu toate elementele zero si o matrice patratica N de ordinul 4 aleatoare cu distributie normala.
Solutie: Cu secventele:

M = zeros(2, 4); N = randn(4, 4)


Se obtin rezultatele:

M=0 0 0 0 0 0 0 0 N= 0.6353 0.0860 -0.3210 -1.2316 -0.6014 -2.0046 1.2366 1.0556 0.5512 -0.4931 -0.6313 -0.1132 -1.0998 0.4620 -2.3252 0.3792

27

2.2.2. Generarea vectorilor


Generarea vectorilor cu pas liniar implica cunoaterea limitelor intervalului (min, max) si a pasului de esantionare dintre doua elemente, sau numrul de elemente ale vectorului. Daca se cunosc limitele intervalului si pasul dintre doua elemente ale vectorului X, cu instruciunea: X = min: pasul de eantionare: max Se genereaz numrul de elemente ale vectorului rezultant N = [(max-min) / pas]. Daca pasul > 0 este necesar ca valoarea minima sa fie mai mica decat valoarea maxima, iar daca pasul < 0, atunci valoarea minima este mai mare decat valoarea maxima: X1 = -5 : 0.5 : 5; X2 = 5 : -2 : -5 Daca pasul este omis atunci valoarea acestuia este considerata egala cu unitatea. De asemenea, se pot genera vectori cu pas logaritmic utiliznd sintaxa logspace, ca in exemplul de mai jos: Sa se genereze un vector cu N = 5 elemente distribuite logaritmic pe intervalul [10-2, 102]. Cu sintaxa: x = logspace(-2, 2, 5) Se obtine rezultatul: 28 x = 0.0100 0.1000 1.0000 10.0000 100.0000

2.3. Operaii si funcii matematice uzuale


help elfun
Pachetul de programe MATLAB conine numeroase functii pentru operatii matematice fundamentale si pentru prelucrarea datelor Aceste operatii matematice se refera la: calcule cu polinoame (f(x) = x3 + 3x + 15), vectori, numere complexe (a + j*b), functii trigonometrice (sin, cos), exponentiale (exp) si logaritmice (log, log10). ecuatii diferentiale (diff), integrale (quad, trapz) si metode de integrare numerica (ode23, ode45) etc.

29

2.3.1. Numere complexe


Numerele complexe sunt introduse in MATLAB utiliznd variabilele i si j; Un numr complex z se poate exprima sub forma carteziana (z = a+i*b) sau sub forma polara (z = r*ei), unde a si b sunt partile reala si imaginara ale acestuia, iar r si reprezint modulul si argumentul numrului complex z. Funcia abs determina modulul elementelor unui vector sau a unei matrice iar funcia angle calculeaz argumentul elementelor unui vector sau a unei matrice si se exprima in radiani. Funcia real returneaz partea reala a numrului complex, iar 30 imag returneaz partea imaginara.

2.3.1. Numere complexe. Exemple


Exemplul : Sa se calculeze amplitudinea si faza unei impedane (Z) de intrare a unui circuit, tiind ca:

Z=

(5 + j6)(4 j8) + 4300


9 j2

Rezolvare: Se scrie un fisier script de forma: Z1 = 5+6*j; Z2 = 4-8*j; Z3 = 9-2*j; theta = (30 / 180)*pi % unghiul in radiani Z4=4*exp(j*theta); Z = (Z1 * Z2 / Z3) + Z4; Z_ampl = abs(Z) % amplitudinea lui Z Z_unghi = angle(Z)*(180 / pi); % unghiul in grade Z_polar = [Z_ampl, Z_unghi] % disp (Z_polar) MATLABul genereaz urmtorul rezultat: numrul complex Z in forma polara, cu amplitudinea si faza egale cu: Z_polar = 11.2039 9.7942
31

2.3.2. Funciile putere, radical, logaritm si exponeniala


MATLABul dispune de doua functii pentru ridicarea la putere: pow2: pentru a ridica cifra 2 la puterea n (2n) ^: pentru a ridica un numr a la puterea n (an) Functia exp calculeaz exponeniala (ex) Functia log si log10 calculeaza logaritmul natural (ln) si zecimal (lg) Functia sqrt calculeaz radicalul de ordinul 2 dintr-un numr Calculul radicalului de ordinul 2 dintr-un numr ( 9), poate utiliza functia putere sau funcia radical, apelata cu sintaxa sqrt (9). Obs: Argumentul acestor funcii poate fi o matrice, caz in care se opereaz element cu element, sau poate fi un numr 32 complex.

2.3.3. Funcii trigonometrice


Functiile trigonometrice se apeleaz cu sintaxa: x = nume_funcie(argument) in care nume_functie este numele uneia dintre functiile trigonometrice prezentate in tabelul 6, argumentul este valoarea pentru care se evalueaz funcia, iar x este variabila in care se returneaza rezultatul. Obs: Daca argumentul este o matrice se folosesc operatori specifici tablourilor matriciale.

Principalele funcii trigonometrice


sin - Determina sinusul argumentului, cu rezultatul in radiani cos - Calculeaza cosinusul argumentului tan - Calculeaza tangenta argumentului asin - Calculeaza arcsinusul (sin-1) argumentului in radiani acos - Determina cos-1 in radiani atan - Calculeaza arctangenta (tan-1) argumentului, cu rezultatul in radiani atan2 - Calculeaza arctangenta unui argument complex
33

2.3.4. Calcule numerice cu polinoame


In MATLAB polinoamele sunt reprezentate ca un vector linie care conine coeficienii in ordine descresctoare. De exemplu polinomul g(x)=x4 + 2x2 + 0.5x - 6 este reprezentat in MATLAB prin vectorul: g = [1 0 2 0.5 -1]. Cele mai uzuale funcii pentru calculele cu polinoame sunt:
roots calculeaz rdcinile unui polinom poly calculeaz coeficienii unui polinom cu rdcinile date polyder calculeaz derivata polinoamelor polyfit aproximeaz un set de date cu un polinom de gradul n residue descompune in fracii simple raportul a doua polinoame.
34

Programarea MATLAB. Instruciuni si funcii de control


Programele MATLAB sunt scrise pentru a realiza pai secveniali, operaiile fiind realizate una dup alta. In multe cazuri, insa, este necesara repetarea unui set de instruciuni atta timp cat o condiie este realizata si pentru alt set de instruciuni. Uneori este necesara repetarea unui grup de instruciuni de un anumit numr de ori. Instruciunile cu ajutorul crora se poate realiza acest lucru sunt for si while.
35

Instructiuni si functii de control


Instruciunea for este folosita pentru repetarea unui grup de instruciuni de un anumit numr de ori. Un contor de ciclu va tine evidenta numrului de repetri ale instruciunilor unui ciclu si il oprete cnd contorul ajunge la valoarea precizata. Instruciunea while este folosita atunci cnd calculele efectuate cu un grup de instruciuni trebuie repetate pana cnd o anumita condiie este ndeplinita. Numrul de iteratii nu este cunoscut iniial. Ieirea din ciclu se realizeaz la indeplinirea conditiei impuse, care este testata la nceputul fiecrei iteraii. Instructiunea if poate fi implementata simpla sau poate include si clauzele else sau elseif. Forma generala a unei instruciuni if este urmtoarea:

if expresie_logica
grup_de_instruciuni

end

Clauza else este utila pentru a executa un set de instructiuni, daca expresia logica este adevarata, si un alt set de instructiuni, daca expresia logica este falsa. Sintaxa instructiunii if este combinata cu clauza else, si are forma generala: if expresie_logica grupul_de_instructiuni A else grupul_de_instructiuni B 36 end

Instruciunea for

Instruciunea for permite repetarea unui grup de instruciuni dintr-o bucla, de un anumit numr de ori. Are urmtoarea structura generala:

for index = expresie


grupul_de_instruciuni

end
In care index este numele contorului, expresie este o matrice, un vector sau un scalar, iar grupul de instruciuni poate fi orice expresie(functie) MATLAB (de exemplu k = initial : pas : final).

La folosirea buclei for trebuie respectate urmtoarele reguli:


indexul buclei for trebuie sa fie o variabila; daca expresia este o matrice goala, bucla nu se executa; se va trece la urmtoarea instruciune dup end; daca expresia este un scalar, bucla se executa o singura data, cu indexul dat de valoarea scalarului; daca expresia este un vector linie, bucla se executa de attea ori de cate elemente are vectorul, de fiecare data indexul avnd valoarea egala cu urmtorul element al vectorului; daca expresia este o matrice, indexul va avea la fiecare iteraie valorile coninute in urmtoarea coloana a matricei; la terminarea ciclului for, indexul are ultima valoare utilizata;

daca se utilizeaz operatorul doua puncte (:) pentru a defini expresia, ca in exemplul: for k = initial : pas : final bucla se executa de: N = [(final-initial) / pas] + 1 37 - daca N este pozitiv, si nu se executa daca N este negativ.

Instructiunea for. Exemple


Exemplu: Sa se scrie un program utiliznd instruciunea for pentru generarea unei matrice cu valorile corespunztoare lui i = [1, 4] afiate pe coloane, tiind ca y = [i 5i2 2i]. Rezolvare: Se scrie urmtoarea secvena MATLAB: disp('Nr. var1 var2') for i=1:4 y = [i, 5*i^2, 2^i]; disp(y) end Se afiseaza rezultatul: Nr. var1 var2 1 5 2 2 20 4 3 45 8 4 80 16
38

Instructiunea for. Exemple


Pentru a realiza un numr mare de calcule iterative, fara a defini de fiecare data valoarea unui parametru (variabila) cnd acesta (aceasta) se modifica, se utilizeaz instruciunea for. Exemplu: Sa se scrie un fiier script care sa utilizeze instruciunea for pentru a genera ptratul primelor 10 numere ntregi si sa se afieze rezultatul. Soluie: Se scrie un fiier script cu urmtoarea secvena: for m = 1:10 x(m) = m^2; end disp(x) In exemplul anterior numrul de iteraii a fost controlat de var. m. 39

Descrierea instructiunii while


Instruciunea while se utilizeaz pentru repetarea unui set de instruciuni, atta timp cat o condiie specificata este adevrata. Forma generala a acestei instructiuni este urmatoarea: while expresie grup_de_instructiuni 1 end grup_de_instructiuni 2

Grupul de instruciuni 1 se executa cat timp expresie este adevarata. La sfritul execuiei instruciunii 1, expresie este retestata. Daca expresie este tot adevarata, grupul de instruciuni 1 se executa din nou. Daca expresie este falsa, programul iese din bucla while si trece la grupul de instruciuni 2.
40

Instructiunea while. Exemple


Exemplu: Sa se scrie un program, utiliznd bucla while, care calculeaz suma elementelor vectorului: x = [5 2 -9 10 -1 9 -1] pana cnd intalneste un numr mai mare sau egal cu 8. Solutie: O varianta de program este urmatoarea: x = [5 2 -9 10 -1 9 -1]; sum = 0; k = 1; while (x(k) < = 8) & (k <= length(x)) sum = sum + x(k) k=k+1 end Se obtine rezultatul: sum = 5 k = 2 sum = 7 k = 3 sum = -2 k = 4 Iesirea din bucla while realizandu-se dupa ce au fost insumate 41 primele trei elemente, al patrulea element neindeplinind conditia impusa.

Instruciuni de intrare / ieire


MATLABul conine instruciuni (comenzi) despre anumite mrimi de intrare din fereastra de comenzi si despre datele de ieire. Instruciunea input transmite instantaneu un mesaj scris catre utilizator, apoi asteapta introducerea marimii de intrare de la tastatura (R=input(expresie MATLAB)); Instruciunea return comanda ieirea din fiierul-m ctre funcia care la apelat sau ctre tastatura. Instruciunea error permite afiarea unor mesaje la ntlnirea unei erori. Se apeleaza cu sintaxa: error (mesaj) Instruciunea break se utilizeaz pentru a iesi dintr-o bucla nainte ca aceasta sa se fi terminat. Se recomanda sa se utilizeze daca o condiie de eroare este detectata in interiorul unei bucle. Aceasta instruciune nceteaz execuia ciclurilor for si while. disp - Afieaz un text sau o matrice fprintf - Afieaz texte si matrice 42 pause - Cauzeaz oprirea executrii unui fisier-M

Vectorizarea calculelor

Deoarece operaiile cu matrice si vectori sunt executate de pachetul de programe MATLAB mai repede cu un ordin de mrime dect operaiile compilate / interpretate, se obine o viteza de lucru mai mare daca algoritmii nscrii in fisiere-M sunt vectorizai.

Oriunde este posibil, ciclurile while si for trebuie convertite in operaii cu vectori sau matrice, aa cum ilustreaz si exemplele 14 si 15: In cazurile in care nu se poate vectoriza o parte din program, pentru a scdea timpul de execuie, se procedeaz la prealocarea unor vectori in care vor fi reinute rezultatele. De exemplu, incluznd o prima instruciune de prealocare folosind funcia zeros, ciclul for urmtor se executa semnificativ mai repede: x = rand(1,100); % genereaz o matrice aleatoare cu distribuie uniforma y = zeros(1,100); % genereaz o matrice cu toate elementele zero de la 1 la 100 for i = 1:100 y(i) = det(x(i)^(i-1)); end Explicaia consta in faptul ca daca nu se face prealocarea, interpretorul MATLAB trebuie sa redimensioneze vectorul y la o dimensiune mai mare, de fiecare data cnd trece printr-o iteraie a ciclului. Daca vectorul este 43 prealocat acest pas este eliminat si execuia este mai rapida.

2.4.3. Vectorizarea calculelor. Exemple


Ex. 14: Sa se scrie un program care calculeaz sinusul in 1000 de puncte, de la 1 la 10 cu pasul de 0.01, utiliznd bucla for. Solutie: se scriu doua fiiere script care reprezint grafic functia sin(t), primul utiliznd bucla for iar al doilea convertit in forma vectoriala, dup cum urmeaz: t = 0:.01:10; N = length(t); for i=1:N; y(i) = sin(t(i)); end plot(t, y)

are si versiunea vectorizata:


t = 0 : .01 : 10; y = sin(t); plot(t, y) Primul exemplu necesita un timp de execuie a comenzilor de 10-15 ori 44 mai mare dect cel de-al doilea.

3. Calcul grafic. Reprezentri si funcii grafice


MATLABul furnizeaz un set de tehnici pentru reprezentarea grafica Detine numeroase funcii grafice si ofer diferite facilitai pentru tiprirea si exportul fiierelor de date ; Tipul reprezentrii grafice depinde in mare msura de natura datelor (formatul acestora) si de felul informatiilor pe care dorim sa le obtinem de la graficul respectiv; Pachetul de programe MATLAB conine o librarie de functii, atat pentru generarea graficelor in coordonate liniare (bidimensionale x-y) 2D cat si pentru generarea graficelor in coordonate tridimensionale (3D) ; Reprezentarea grafica se poate face prin linii (continue, punctate, de contur etc), cu bare, in trepte, tip histograma si de asemenea, reprezentarea grafica a suprafetelor MATLABul permite si personalizarea graficelor (afisarea titlului, denumirea axelor, scrierea unui text pe grafic etc), adaugarea unei retele pe grafic (grid) sau crearea si controlul ecranului (divizarea ferestrelor) si al axelor; Exista posibilitatea crerii interfetelor grafice interactive (Graphics User Interface) cu ajutorul unor funcii MATLAB (uicontrol, uimenu, uigetfile, uisetcolor). Pentru realizarea crerii acestor interfee MATLABul foloseste programarea pe obiecte pentru controlul interactiv al graficelor, utilizand cateva elemente de control 45 predefinite .

Reprezentri si funcii grafice


Pentru crearea graficelor exista trei modalitati de baza:


utilizarea funciilor MATLAB pentru generarea graficelor utilizarea liniilor de comenzi, utiliznd fereastra de comenzi (command window), sau crend diferite fiiere-m prin combinarea celor doua metode de mai sus. De exemplu prin utilizarea unei comenzi pt. crearea graficelor iar apoi prin folosirea uneia dintre uneltele (tools) interactive se poate modifica (personaliza) reprezentarea grafica obinuta.

Comanda plot genereaz un grafic in coordonate liniare. Se apeleaza cu una din sintaxele: plot(x); plot(x, y); plot(x1, y1, x2, y2, ..., xn, yn) Daca x e un vector (linie sau coloana), comanda plot (x) va genera un grafic liniar al elementelor vectorului x ca functie de indexul acestora, x = x(i), unde i = 1, 2, ..., n este nr. de ordine al elementului x.
MATLABul va unii punctele vectorului printr-o linie dreapta.

Daca x este o matrice, fiecare coloana va fi trasata separat pe acelai grafic. Daca x si y sunt matrice de aceeasi dimensiune, atunci comanda plot(x, y) va trasa grafic coloanele lui y in functie de coloanele lui x. Daca x este un vector, iar y o matrice, atunci coloanele lui y sunt trasate functie de vectorul x y = f(x); Daca x e un numr complex, atunci plot (x) este echivalent cu plot(real(x),imag(x));
46

Reprezentri si funcii grafice. Exemple


De exemplu, daca x=[0 3.7 6.1 6.5 5.8 3.6]; Comanda plot(x) va genera graficul din figura ; Daca x si y sunt 2 vectori de aceeai lungime, comanda plot(x, y) va trasa grafic elementele lui x (axa-x) funcie de elementele lui y (axa-y).
47

Reprezentri si funcii grafice. Exemple


Ex. 16. Sa se reprezinte grafic funcia y(t)=6e-2t pentru intervalul de timp t=(0-4) secunde, avand pasul de eantionare de 0.05. Rezolvare: Se scrie un fisier script, sau urmtoarea secvena MATLAB in fereastra de comenzi (command window):

t = 0:0.05:4; y = 6 * exp(-2 *t); plot (t, y)


title ( Raspunsul unui circuit RC ) % tipareste titlul graficului xlabel(Timpul (s)) % tipareste numele variabilei axei x ylabel(Tensiunea (V)) % precizeaza parametrul (variabila) axei y

grid %traseaza o retea de linii pe grafic


48

Reprezentri si funcii grafice. Exemple


Ex. 17: Sa se reprezinte pe acelai grafic tensiunea (u(t)) si curentul (i(t)) unui circuit RL, pentru intervalul de timp t=(0-20) ms tiind ca u(t)=10cos(377t) si i(t)=5cos(377t+600). Soluie: Se scrie un fiier MATLAB-script cu urmtoarele secvene de comenzi: %Tensiunea si curentul unui circuit RL t = 0:1e-3:20e-3; %vectorul timp u = 10*cos(377*t); a_rad=(60*pi/180); %unghiul de faza in radiani i=5*cos(377*t + a_rad); plot( t, u, t, u,*,t, i, t, i,o ), grid title(tensiunea si curentul unui circuit RL), xlabel(timpul (s)), ylabel(tensiunea (V) si curentul (mA)); text(0.003,1.5,u(t)), text(0.009,2,i(t))

Fig. Reprezentarea grafic a tensiunii si curentului unui circuit RL 49 in regim stationar sinusoidal.

Reprezentarea grafica in coordonate logaritmice si polare


Pentru reprezentarile grafice in coordonate logaritmice sau semilogaritmice se utilizeaza functiile loglog, semilogx si semilogy. Utilizarea acestor functii grafice este similara cu a celor utilizate in paragraful anterior. Descrierea acestor comenzi este urmatoarea:

loglog(x, y) scaleaza ambele axe generand graficul logaritmului in baza 10 (log10(x) vs log10(y)); semilogx (x, y) scaleaza logaritmic doar axa x (log10(x)), cealalta axa fiind scalata liniar; semilogy (x, y) scaleaza logaritmic doar axa y (log10(y)), cealalta axa fiind scalata liniar;

Obs: Trebuie retinut faptul ca, deoarece logaritmul numerelor negative si zero nu exista, datele care urmeaza sa fie reprezentate grafic pe o axa logaritmica sau semilogaritmica, nu trebuie sa includa valoarea zero sau valori negative.

Reprezentarea grafica in coordonate polare se face cu functia polar, si se apeleaza cu una din sintaxele urmatoare: polar (theta, rho) sau polar (theta, rho, linie tip) Unde theta si rho sunt vectori, theta fiind unghiul in radiani iar rho reprezinta amplitudinea semnalului respectiv.

50

Reprezentarea grafica in coordonate logaritmice. Exemplu


Exemplu: Se da fisierul de date (f,g), care reprezinta frecventa functie de factorul de amplificare (gain) a unui amplificator operational. Sa se reprezinte grafic in coordonate semilogaritmice frecventa versus factorul de amplificare (scala logaritmica pentru frecventa si liniara pentru factorul de amplificare). Sa se tipareasca titlul graficului si marimile celor doua axe reprezentate. Solutie: Se scrie urmatorul fisier script: %Reprezentarea grafica Bode pentru un %amplificator operational f = [20 40 80 100 120 2000 5000 8000 10000 12000 15000 20000]; g=[5 10 30 32 34 34 34 34 32 30 10 5]; semilogx(f, g) title(Diagrama Bode pt. un amplificator), xlabel(Frecventa (Hz)), ylabel(Gain (dB))

51

3.1.2. Funcii pentru generarea graficelor. Reprezentri grafice speciale


MATLABul conine o familie (set) de functii pentru generarea graficelor. Cele mai importante dintre ele sunt descrise in tabelul 10 (pg. 36). Reprezentarea grafica cu bare se face cu functia bar si se apeleaza cu una dintre sintaxele: bar(y) care traseaza un vector de bare cu elementele vectorului y, sau bar(x, y ) care traseaza un grafic de bare cu elementele vectorului y la locatiile specificate de vectorul x, adica y=y(x). Aceasta functie creeaza un grafic de bare vertical, in care valorile vectorului y sunt utilizate pt. a determina inaltimea barei, iar valorile vectorului x sunt folosite pt. a eticheta fiecare bara. Reprezentarea grafica a semnalelor discrete se face cu functia stem, sub forma unor linii terminate cu cerculet la extremitatea opusa axei. Se apeleaza cu sintaxa stem(y) sau stem(x, y). Graficele in trepte sunt utilizate la reprezentarea diagramelor sistemelor numerice de esantionare si prelucrare a datelor. Reprezentarea grafica in trepte se face cu functia stairs, care se apeleaza cu una din sintaxele stairs(y) sau stairs(x, y). Functia mesh - Traseaza grafic o retea sub forma de plasa; Functia fplot genereza un grafic cu anumite restrictii intre limite specificate. Se apeleaza cu una dintre sintaxele urmatoare: 52 fplot(fun, limite), fplot(fun, limite, n), fplot(fun, limite, n, unghi).

3.1.2. Funcii pentru generarea graficelor. Exemple.


Ex. 20: Sa se reprezinte graficul in trepte al functiei y=sin(x). Rezolvare: Cu urmatoarea secventa MATLAB se obtine graficul din figura 12: x=0:.2:6; y=sin(x); stairs(x, y); Functia compass reprezinta grafic vectori cu originea in originea sistemului de coordonate. Se apeleaza cu una din sintaxele: compass(z) sau compass(x, y), unde z este numarul complex z = x + iy, iar x si y sunt numere reale (proiectia vectorului pe abscisa si ordonata). Ex. 21: Sa se reprezinte grafic vectorii z1=2-5i si z2=3+2i. Solutie: Cu secventa urmatoare se obtine graficul din figura: z=[2-5*i,3+2*i]; compass(z);grid
53

3.1.2. Funcii pentru generarea graficelor. Exemple.


Ex. 22: Sa se scrie un fisier function care sa reprezinte grafic functia y=sin(x) / x intre limitele [-20, 20] cu n=50 de esantioane, utilizand functia MATLAB de reprezentare grafica fplot. Solutie: Se scrie urmatorul fisier function cu numele test.m: function y = test(x) y = sin(x) . / x; Cu secventa urmatoarea scrisa in fereastra de comanda: fplot(test, [-20 20], 50); grid

54

3.1.3. Reprezentri grafice cu axe multiple


Funciile pentru reprezentrile grafice cu axe multiple difera fata de celelalte funcii grafice prin modalitile de scalare a axelor. Funcia MATLAB plotyy genereaza un grafic cu 2 axe y (pe ambele parti). Se apeleaza cu una din sintaxele: plotyy(x1, y1, x2, y2) sau plotyy(x1, y1, x2, y2, function1, function2); in care irul de caractere function, poate fi inlocuit cu orice functie MATLAB ce accepta sintaxa h = function(x, y), cum ar fi functiile, care genereaza reprezentri grafice: plot, semilogx, semilogy, loglog sau stem. Comanda plotyy(x1, y1, x2, y2) reprezinta grafic vectorul (matricea) x1 funcie de y1, cu axa y inscriptionata pe partea stanga, si x2 functie de y2 cu axa y pe partea dreapta. Comanda plotyy(x1, y1, x2, y2, function1, function2) utilizeaza functia function1(x1, y1) pentru a reprezenta grafic setul de date pentru axa din partea stanga a ferestrei si functia function2(x2, y2) pentru a trasa grafic setul de date pentru axele din partea dreapta. De asemenea, se pot genera grafice cu axe multiple, doua axe x si cu doua axe y (axe duble) independente. Prin aceasta facilitate se pot reprezenta pe acelasi grafic mai multe seturi de date, avand domenii diferite, utilizand o 55 scalare proprie pentru fiecare axa (exemplul 24).

3.1.3. Reprezentri grafice cu axe multiple. Exemplu



Ex. 23: Sa se reprezinte pe acelasi grafic, tiparind axa y pe ambele parti, doua functii matematice (exp si sin) utilizand comanda plot Solutie: Se scrie un fisier script cu urmatoarea secventa: x = 0:0.01:20; y1 = 200 * exp(-.05 * x).*sin(x); y2 = 0.8 * exp(-0.5 * x).*sin(10*x); [AX, H1, H2] = plotyy(x, y1, x, y2, plot) %comanda care separa cele doua axe, %atribuindu-i cate o figura (H1, H2) pentru %fiecare axa set(get(AX(1),'ylabel'),'String','Axa-y partea stanga')
%comanda de inscriptionare a axei y din stanga


set(get(AX(2),'ylabel'),'String','Axa-y partea dreapta')


%comanda de inscriptionare a axei y din dreapta


xlabel('0 la 20 \ musec'),title('Graficul este inscriptionat cu axa y pe ambele parti')


%comenzi % pentru inscriptionarea titlului si a axei x 56

3.2. Reprezentri grafice tridimensionale (3D)


Functia MATLAB plot3 este o functie analoaga functiei plot cu diferenta ca reprezinta grafic linii si puncte intr-un spatiu tridimensional (3D). Daca x, y si z sunt trei vectori de aceeasi lungime functia plot3(x, y, z) genereaza o linie reprezentata tridimensional prin punctele ale cror coordonate sunt elementele celor trei vectori. Daca X, Y si Z sunt trei matrici coloana de aceeai dimensiune atunci functia plot3(X, Y, Z) va genera un grafic de linii tridimensional obinute din cele trei coloane ale matricii respective. Functia mesh (Fig. 19) reprezinta grafic suprafete 3D sub forma unor retele, functia meshc reprezinta grafic combinatia suprafata 3D / linii de contur, reprezentate sub suprafata respectiva ca proiectii in planul bazei, iar functia meshz reprezinta grafic suprafete tridimensionale cu plan de referinta la cota zero. Reprezentarea grafica a suprafetelor se realizeaza utilizand comanda surf iar functia surfc genereaza un grafic tridimensional cu liniile de nivel proiectate pe planul bazei. Aceste reprezentari grafice sunt utile in special pentru vizualizarea matricilor, care sunt prea mari pentru a putea fi reprezentate sub forma numerica, si pentru functiile grafice de doua variabile.
57

3.2. Reprezentri grafice 3D. Exemple


Exemplu: Sa se reprezinte grafic in 3D cu un pas de / 50, un arc spiralat (spirala) utiliznd funciile sin(t) si cos(t), tiind ca t=(0-10). Sa se inscripioneze cele trei axe x, y si z. Soluie: Cu secvena urmtoare se obine graficul din figura: t = 0 : pi / 50 : 10*pi; plot3(sin(t), cos(t), t)
58

3.2. Reprezentari grafice 3D. Exemple


Ex. 26: Sa se reprezinte grafic intr-un spatiu 3D trei matrici coloana (X, Y si Z) utilizand functia mesh. Solutie: Se scrie un fisier script cu secventa urmatoare, care va returna graficul din fig. 19. [X, Y] = meshgrid([-2:0.1:2]); Z = X.*exp(-X.^2-Y.^2); plot3(X,Y,Z), grid on Ex. 27: Sa se reprezinte grafic functia Z=X*exp(-X2-Y2) ca suprafata mesh, mesh asociata cu linii de contur (meshc) si ca suprafata cu plan de referinta (meshz). Solutie: Cu secventa urmatoare se obtin reprezentarile grafice din fig. 20. [X, Y] = meshgrid(-2 : 0.2 : 2, -2 : 0.2 : 2); Z = X.*exp(-X.^2-Y.^2); subplot(131), mesh(X,Y,Z), subplot(132), meshc(X,Y,Z), subplot(133), meshz(X,Y,Z)
59

3.3. Crearea si controlul ferestrelor grafice


MATLABul are doua ferestre grafice de baza: o fereastra de comanda si o fereastra grafica ; Fereastra grafica poate fi impartita in mai multe ferestre ; MATLABul ofera facilitatea de-a putea compara mai multe figuri sau grafice prin crearea, de exemplu, mai multor grafice in ferestre diferite pe aceeasi figura. Functia subplot creeaza si controleaza ferestrele unui grafic si poate fi apelata cu una din sintaxele: subplot(m, n, p) sau subplot(h). Functia subplot(m, n, p) mparte ecranul intr-o matrice [m x n], creeaz axele in subfereastra p si returneaza identificatorul de control al noilor axe. Argumentele m, n si p trebuie sa fie numere intregi in intervalul (1, 9). Scalarul m precizeaza in cate subferestre se imparte fereastra pe verticala, iar n specifica impartirea ferestrei pe orizontala. De exemplu comanda subplot(324) creaza sase ferestre intr-o figura (imparte o figura in 6 ferestre) si creaza a patra fereastra ca reprezentare grafica curenta
60

3.3. Crearea si controlul ferestrelor grafice.


Exemplu
Ex.: Sa se reprezinte grafic o forma de unda sinusoidala, una cosinusoidala si o forma de unda tangeniala, pe aceeai figura dar in ferestre diferite. Solutie: Se scrie un fisier-M cu urmtorul continut: x = linspace(0, 2*pi, 50); %functia linspace genereaz un vector %linie cu 50 de puncte intre (0 - 2) y = sin(x); z = cos(x), w = tan(x); subplot(2, 2, 1), plot(x, y) %genereaza o figura cu patru ferestre si creaza %prima fereastra cu functia sin(x) subplot(2, 2, 2), plot(x, z) % creaza a doua fereastra pentru functia cos(x) %pe prima linie si a doua coloana subplot(2, 2, 3), plot(x, w) % creaza a treia fereastra pentru functia tan(x) %pe a doua linie si prima coloana

61

4. Achiziia, interpolarea si aproximarea datelor


MATLABul deine o biblioteca de funcii dedicate analizei datelor, incluznd si: -reprezentrile grafice interactive (GUI); -metode de statistica descriptiva; -coeficieni si metode de corelare, interpolare sau filtrare; -aproximarea unui set de date cu o functie; -cautarea datelor in tabele; -analiza Fourier si FFT.
62

4.1. Importul si exportul fisierelor de date


MATLABul furnizeaz mai multe modaliti de a importa sau exporta fiiere de date din / n fereastra de lucru (workspace); Formatul datelor poate fi text, binar sau standard; Datele text sunt n format ASCII, iar cele binare nu sunt in format ASCII i nici nu pot fi vzute ntr-un editor de text; Formatul binar reprezint imagini, sunete sau alte informaii; Fiierele de date pot fi importate sau exportate i prin utilizarea unor funcii MATLAB dedicate. Pentru utilizarea acestor funcii este necesar s se cunoasc formatul fiierului (txt, dat, csv, mat); Cea mai simpla metod, de a importa fiiere de date, utilizeaz editorul Import Wizard; 63

4.2. Prelucrarea datelor si calcule statistice


Pentru a crea o matrice C care conine elementele maxime sau minime ale matricelor de aceeai dimensiune A si B, se folosete sintaxa: C = max(A, B) sau C = min(A, B). Daca fiierul de date conine mai multe coloane, analiza acestora si calculul statistic sunt realizate separat (independent) pentru fiecare coloana. Asta nseamn ca daca dorim sa calculam, de exemplu, maximul unei matrice, rezultatul va fi un vector linie care conine valorile maxime ale datelor de pe fiecare coloana. 64

In tabelul urmtor se prezint principalele funcii MATLAB dedicate prelucrrii datelor si calculelor statistice.

Functia
min, max mean prod, sum std diff trapz

Descrierea functiei
Determina minimul sau maximul unui vector sau matrici Determina valoarea medie Calculeaza produsul si suma Calculeaza abaterea standard Calculeaza diferenta dintre 2 numere succesive Calculeaza integrala folosind metoda trapezelor
65

Prelucrarea datelor si calcule statistice. Exemplu


Datele eronate sau cele care nu ndeplinesc o anumita condiie, impusa de utilizator, pot fi nlocuite, ca in exemplul urmtor:

Exemplu: Fie matricea A = [9 1000 4 8; 1 6 5 5; 3 2 7 1]; Sa se elimine coloanele matricei A care conin cel puin un element ce se abate de la valoarea medie cu mai mult de trei ori abaterea standard (legea celor 3 sigma din statistica). Solutie: Se scrie un fisier - m cu secventa: m = mean(A); %valoarea medie sigma = std(A); %abaterea standard [n, p] = size(A); e = ones(n, 1); % genereaz o matrice coloana cu toate elem. egale cu 1 dist = abs(A e * m); mcond=dist<3*e*sigma; %genereaza o matrice (3 x 4) cu toate elementele unu Y = A(: , find(all(mcond))) celim = p - length(find(all(mcond))) Daca variabila celim = 0, matricea Y va fi identica cu matricea A, deci nu se elimina nici o coloana. Daca Y e diferit de 0, atunci coloanele care nu indeplinesc conditia sunt eliminate din matricea A. 66

Derivarea si integrarea numerica a funciilor


Integrarea si derivarea sunt concepte fundamentale pentru rezolvarea unui numr mare de probleme atat in inginerie cat si in tiina. In unele situaii nu pot fi obinute soluii analitice fiind necesara aplicarea metodelor de integrare si derivare numerica. Derivata unei funcii f(x) reprezinta viteza de variaie a funciei in raport cu variabila x, notata cu dx: -Interpretarea geometrica a derivatei intr-un punct este panta tangentei la graficul funciei in punctul considerat ; Integrala funciei f(x) pe intervalul [a, b] are semnificaia ariei delimitata de axa ox, curba f(x) si dreptele x = a si x = b

67

Calculul numeric al integralei


Calculul

numeric al unei integrale, denumit si cuadratura, se poate face prin:


aproximarea funciei de integrat f(x) printr-o alta funcie g(x) pe intervale finite; aproximarea funciei f(x) cu un set de funcii liniare pe poriuni, aria calculndu-se ca suma trapezelor care o compun (metoda trapezelor)

Daca

aproximarea se face cu funcii ptratice pe poriuni, metoda de integrare se numete metoda lui Simpson. 68

Functiile MATLAB pentru integrare numerica


Functiile quad si quad8 se apeleaza cu sintaxele: quad(f, a, b), quad(f, a, b, tol), quad(f, a, b, tol, trace) In care f este numele unui fisier functie care descrie functia f(x), a si b sunt limitele de integrare, tol eroarea relativa admisa dintre 2 pasi consecutivi si trace controleaza afisarea pe ecran a valorilor intermediare. Functia trapz poate fi apelata cu una dintre cele doua sintaxe: Z = trapz(X, Y) sau Z = trapz(Y) Cand functia trapz este apelata cu doua argumente, calculeaza integrala functiei y(x), X fiind un vector coloana care conine abscisele iar Y este un vector coloana sau o matrice, cu acelasi numar de linii ca X. Z este un scalar daca Y este un vector, sau un vector linie daca Y este o matrice. 69

Integrare numerica. Exemple


Ex.: Sa se calculeze integrala functiei sin(x) pe intervalul [0, ] cu un pas de integrare de / 100. Solutie: Cu urmatoarea secventa se obtine rezultatul cerut: X = 0 : pi / 100 : pi; Y = sin(X); Z = trapz(X, Y) Se obtine rezultatul Z = 1.9998
70


Ex. : Utiliznd regula lui Simpson si metoda trapezelor sa se calculeze integrala funciei y = sin(x) pe intervalul [0 - ]. Solutie: Se scrie un fisier m script cu secvena:
%Utilizarea regulii lui Simpson si metoda trapezelor pt. calculul integralei functiei y = f(x)

a = 0; b = pi; N = 4; x = linspace(a, b, 2*N + 1); y = sin(x); for k = 1 : 2 * N + 1 if k==1 | k==2*N+1 w(k) = 1; elseif rem(k, 2)==0 w(k) = 4; else w(k) = 2; end end Intsimp = ((b-a) / (3*length(x)-1)) * sum(y .* w) Inttrapz = trapz(x,y) Se obtine rezultatul:

Intsimp = 1.8464 Inttrapz = 1.9742

71

Functia MATLAB pentru derivare


Functia MATLAB pentru derivare este diff si poate fi apelata cu sintaxele: Y = diff(X) sau Y = diff(X, n) sau Y = diff(X, n, dim) daca X este un vector linie sau coloana, X = [x(1), x(2),..., x(n)], atunci functia diff(X) va returna vectorul diferentelor elementelor adiacente, adica XD = [x(2)-x(1), x(3)-x(2),..., x(n)x(n-1)]; daca X este o matrice atunci diferentele se calculeaza pe fiecare coloana prin scaderea elementului din linia imediat urmatoare (superioara):
diff ( X ) = X (2 : m,:) X (1 : m 1,:)

Unde m reprezinta nr. de linii.

72

Derivarea numerica. Exemple


Ex. 34: Sa se aproximeze derivata numerica a unei functii y(x) pentru X = [0, 1, 2, 3, 4, 5] si Y = [2, 6, 3, 5, 9, 12]. Solutie: Functia diff permite aproximarea derivatei numerice a unei functii y(x) cu relatia:

dy = diff ( Y ). / diff ( X )

-Cu urmatoarea secventa MATLAB: X = [0, 1, 2, 3, 4, 5]; Y = [2, 6, 3, 5, 9, 12]; Z = diff(X); W = diff(Y); % dy = W = diff(Y) -Se returneaza rezultatele: Z= 1 1 1 1 1 W= 4 -3 2 4 3
73

Derivarea numerica. Exemple


Ex. 35: Sa se scrie un fisier function, utilizand instructiunea for, care sa realizeze aproximarea derivatei numerice a unei functii y(x) stiind ca X si Y sunt aceleasi ca in exemplul precedent. Solutie: Se scrie un fisier function cu numele diffn.m cu urmatorul continut: function dY = diffn(X, n) dY = X; for i = 1:n dY = diff(dY); end Dupa rularea fisierului function diffn.m se tasteaza in fereastra de comanda: dy = diff(Y) ./ diff(X) sau dY si se obtine acelasi rezultat ca in exemplul 34.

74

Derivarea si integrarea ecuatiilor diferentiale


O ecuaie difereniala de ordinul 1 are forma: Unde x este variabila independenta iar y este functia necunoscuta. Un exemplu de ecuaie difereniala de ordinul 1 este y=3x2. Cunoscnd condiia iniiala y(0) = -7.5 va rezulta soluia y = x3-7.5. Metodele numerice cele mai cunoscute, pentru rezolvarea ecuaiilor difereniale, sunt metoda Euler si metoda RungeKutta (ode23, ode45). Aceste functii se apeleaza cu sintaxa: [x, y] = ode23(yprim,x0, xf, y0, tol, trace) In care x0 si xf sunt valorile iniiala si finala a variabilei x, y0 este vectorul coloana coninnd condiiile iniiale, tol reprezint toleranta iar trace parametrii care asigura tiprirea rezultatelor 75 intermediare.

dy y = = g ( x, y ) dx
,

Integrarea ecuatiilor diferentiale. Exemplu


Ex. Sa se integreze ecuaia difereniala y = 3x2 pe intervalul [2, 4] cu condiia iniiala y(2) = 0.5 si sa se reprezinte grafic funcia rezultanta. Soluie: Se scrie un fiier function cu urmtorul coninut: function dy = g1(x, y) dy = 3 * x^2; Care se apeleaz cu urmtoarea secvena MATLAB, scrisa in fereastra de comanda sau, mai convenabil, intrun fisier script: [x,yn] = ode23(g1, 2, 4, 0.5); %sol. numerica ya = x.^3 - 7.5; %solutia analitica plot(x, yn, *, x, ya); grid

76

4.3. Interpolarea si aproximarea datelor


Interpolarea unui set discret de date [xi, yi] presupune determinarea unei funcii f(x) a.i. f(xi)=yi. Sa presupunem ca dorim sa estimam valoarea y(x) pentru 2 puncte de coordonate (x1, y1) si (x2, y2), unde x1 < x < x2: Daca punctele sunt unite printr-o dreapta, interpolarea se numeste liniara, daca sunt unite printr-un polinom de gradul 3, interpolarea se numeste spline cubica. O alta problema, frecvent ntlnita in inginerie electrica, consta in aproximarea unui set de date cu o funcie care reprezint cea mai buna aproximare. In acest caz funcia determinata nu va trece prin toate punctele si va ncerca sa elimine posibilele erori de msurare. De exemplu, metoda celor mai mici ptrate furnizeaz cea mai buna aproximare in sensul minimizrii ptratului distantelor dintre punctele date si functia de aproximare.

77

Functiile MATLAB pentru interpolarea si aproximarea datelor.

Functia
table1, table2 interpft spline polyfit interp1

Descrierea functiei
Interpoleaza liniar si citeste datele din tabele uni si bi-dimensionale Interpoleaza datele din tabele unidimensionale prin metoda transformatei Fourier Interpoleaza datele din tabele unidimensionale prin metoda Spline Aproximeaza un set de date cu un polinom de gradul n Interpoleaza liniar, spline sau cubic date din tabele unidimensionale 78

Interpolarea functiilor de o singura variabila


Obiectivul interpolrii il constituie estimarea valorilor unei funcii f(x) pentru orice punct x=[x1, x2] al unui set de date.
Curba de interpolare trece prin toate punctele care o definesc. Legea de interpolare poate fi liniara, cubica sau polinomiala.

Interpolarea spline cubica reprezint o curba neteda dintre fiecare pereche de puncte, definita de un set de polinoame de gradul trei. De exemplu sase puncte sunt conectate intre ele prin cinci curbe diferite de gradul trei. Se apeleaza cu sintaxa: yi = spline(x, y, xi) unde x si y sunt vectorii care conin abscisele si ordonatele setului de date (cu pas de eantionare mare), xi este un vector care conine noile abscise, de regula cu un pas mai fin, iar yi este vectorul returnat asociat vectorului xi.

Obs: Toate legile de interpolare necesita ca elementele lui x sa fie ordonate crescator. In plus, metoda cubic cere ca punctele de pe axa x sa fie 79 situate la distante egale.

Pentru a sublinia diferena dintre cele doua tipuri de interpolri (liniara si spline) se prezint exemplul urmtor cu reprezentare grafica:
Ex: Sa se reprezinte grafic o interpolare liniara si una spline cubica prin 6 puncte. Soluie: Cu secvena: x = [0, 1, 2, 3, 4, 5]; y = [0, 20, 55, 60, 90, 100]; xi = 0 : 0.1 : 5; yi = spline(x , y, xi); plot(x, y, xi, yi, x, y,o) title(Comparatie intre interpolare liniara si spline); xlabel(Timpul (s)), ylabel(Temperatura (grade));grid

80

Aproximarea datelor prin metoda celor mai mici ptrate


Pentru ca aproximarea sa fie considerata cea mai buna suma ptratelor distantelor de la fiecare punct la curba (dreapta) aproximata (linie sau polinom) trebuie sa fie minima. Este posibil ca nici un punct sa nu se gseasc pe curba aproximata. Acest lucru separa foarte clar aproximarea de interpolare. Aproximarea datelor printr-o linie dreapta se numete regresie liniara iar aproximarea unor date printr-un polinom se numete regresie polinomiala. Regresia liniara minimizeaz suma ptratelor dintre dreapta de aproximare si punctele date. Msura calitii unei aproximri liniare este data de suma ptratelor, dup cum reiese si din ecuaia:

sum _ p = sum ( y y1 ).^ 2


Determinarea parametrilor m si n ai dreptei de aproximare y = mx+n se face utiliznd funcia polyfit. Determinarea celei mai bune aproximri a unui set de date (x, y) cu un polinom de ordinul n, poate fi apelata cu sintaxa: p = polyfit(x, y, n) 81

Aproximarea datelor prin metoda celor mai mici ptrate. Exemple.


Exemplu: Sa se aproximeze un set de date (x, y), utiliznd metoda celor mai mici ptrate. Soluie:Se scrie un fiier MATLAB cu secvena urmtoare, obinnduse graficul din figura: x = [0, 1, 2, 3, 4, 5]; y = [0, 20, 55, 60, 90, 100]; coef = polyfit(x, y, 1); %determinarea parametrilor m = coef(1); n = coef(2); %parametrii dreptei de aproximare y1 = m * x + n; sum_p = sum((y-y1).^2;

%minimizarea sumei patratelor distantelor

plot(x, y1, x, y, *)

82

Aproximarea datelor prin metoda celor mai mici ptrate. Exemplu.


Funcia polyfit returneaz coeficienii (ai) ai polinomului p(x), care in punctele precizate de vectorul x are, in sensul celor mai mici ptrate, valorile date de vectorul y. Ex: Fie polinomul p(x) = x3-6x2+11x-6, peste care este suprapus un zgomot cu distribuie normala. Aproximai datele rezultate cu un polinom de gradul 3 utiliznd metoda celor mai mici ptrate. Reprezentai grafic datele cu zgomot si polinomul aproximat. Solutie: Cu secvena urmtoare se obine graficul din figura: p = [1, -6, 11, -6]; x = 0 : .25 : 4; y = polyval(p, x) + randn(size(x));
%generarea polinomului p(x) peste care s-a %suprapus un zgomot cu distributie normala

c = polyfit(x, y, 3); % aproximeaza un polinom de ord. 3 poli3 = polyval(c, x);


% evaluarea polinomului c pt. valorile precizate de x

plot(x, poli3, x, y,*);grid

83

Analiza Fourier si Transformata Fourier Rapida (FFT)


Analiza Fourier este extrem de utila pentru procesarea datelor, deoarece descompune un semnal intr-un sir de componente sinusoidale de frecvente diferite, fcnd trecerea din domeniul timp in domeniul frecventa, realiznd calculul amplitudinii si fazei variabilelor (datelor, semnalelor) transformate. Pentru eantionarea datelor vectoriale, analiza Fourier utilizeaz transformata Fourier discreta (discrete Fourier transform-DFT). Transformata Fourier rapida - FFT (Fast Fourier Transform) este un algoritm foarte eficient pentru calcularea transformatei Fourier, sau a transformatei Fourier discrete (DFT). De asemenea, FFT este o unealta utila pentru filtrarea datelor, procesarea semnalelor sau pentru procesarea imaginilor in domeniul frecventei si pentru estimarea spectrului puterii.
84

Analiza seriei Fourier


Daca g(t) este o functie periodica, cu perioada Tp:

g(t) = g(t Tp )

Si daca in orice interval finit g(t) are cel puin un numr de discontinuitati si un numar finit de minimuri si maximuri (condiiile lui Dirichlet), atunci g(t) poate fi exprimata cu o serie de functii sinusoidale:

a0 g (t ) = + an cos(n w0 t ) + bn sin(n w0 t ) 2 n=1


Unde w0 = 2*pi / T, a0 / 2 este componenta continua a seriei si reprezint valoarea medie a funciei g(t) pe o perioada.
85

4.4.3. Transformata Fourier


Unealta matematica pentru analiza unui semnal in domeniul frecventei este Transformata Fourier care poate lua diferite forme in funcie de semnalul analizat. Ceea ce au in comun aceste semnale este faptul ca sunt alctuite dintr-un numr de componente sinusoidale de frecvente diferite, fiecare avnd o anumita amplitudine si faza initiala. Transformata Fourier face conversia unui semnal din domeniul timp intrun semnal discret in domeniul frecventa. Daca g(t) este un semnal neperiodic exprimat ca funcie de timp, transformata Fourier a funciei g(t) este data de expresia integrala:

..(18) Valoarea semnalului g(t) poate fi obinuta din expresia transformatei Fourier (ec. 18) utiliznd relaia transformatei Fourier inverse:

G( f ) =

g (t ) exp( j 2 ft ) dt G ( f ) = g (t ) exp( j 2ft ) dt

g (t ) =

G ( f ) exp(

j 2 ft ) df

86

Transformata Fourier

Daca g(t) este un semnal continuu si periodic:


g (t ) = g (t nTp )

Unde Tp este perioada semnalului, va rezulta transformata Fourier a functiei g(t) sub forma:
G( f ) = 1 Tp f 1 c n Tp n =

iar cn se poate exprima prin relatia:


cn = 1 g (t ) exp( j 2 n f 0 t )dt Tp
87

Transformata Fourier rapida (FFT)


Transformata Fourier rapida (FFT) este o metoda eficienta de calcul a transformatei Fourier discrete. FFT reduce numrul de calcule matematice necesare pentru calculul transformatei Fourier discreta (DFT). FFT poate fi utilizata pentru calculul spectrului puterii unui semnal, pentru filtrarea digitala a semnalelor sau pentru obinerea corelaiei dintre 2 semnale. Functia MATLAB pentru calcularea transformatei Fourie discrete (DFT) a unui vector x, utilizand algoritmul de calcul al transformatei Fourier rapide (FFT) este: fft(x). Functia fft(x, N) se utilizeaz pentru a obine FFT pentru un vector de lungime N (cu N puncte). Daca X este o matrice, functia fft returneaz transformata Fourier a fiecrei coloane. Daca lungimea lui X este mai mica decat N, atunci matricea X este completata cu valoarea zero pana la dimensiunea N. Daca lungimea lui X este mai mare dect N, atunci secvena matricei X este trunchiata (redusa, micsorata). 88

MATLAB furnizeaz o colecie de funcii pentru calcularea si determinarea transformatei Fourier:


Functia fft fft2 fftn ifft abs angle unwrap Descrierea functiei
Calculeaz transformata Fourier rapida Calculeaz transformata Fourier rapida (discreta) de ordinul 2 Calculeaz transformata Fourier rapida (discreta) de ordinul n Calculeaz transformata Fourier discreta inversa Calculeaz modulul (amplitudinea) Calculeaz unghiul de faza Elimina discontinuitile unghiului de faza si genereaz un semnal 89 in radiani

Ex. : Sa se calculeze si sa se reprezinte grafic amplitudinea unui semnal x = sin(2*15*t) utilizand functia fft. b) Sa se reprezinte pe acelasi grafic faza si amplitudinea semnalului. Solutie: Se scrie un fisier script cu urmatorul continut, care va genera graficul din figura urmatoare:

FFT - Exemple

%Acest fisier calculeaza amplitudinea transformatei Fourier rapide a unei secvente

t = (0:99) / 100; % vectorul timp x = sin(2*pi*15*t) + sin(2*pi*40*t); %semnalul achizitionat y = fft(x); % calculeaza DFT a semnalului m = abs(y); %amplitudinea semnalului f=(0 : length(y) - 1) '/ length(y)*100; % vectorul frecventei subplot(211), plot(t,x), xlabel('timpul (s)'), ylabel('x(t)'), title(Semnalul achizitionat in domeniul timp) subplot(212), plot(f,m), xlabel('frecventa(Hz)'), ylabel('Amplitudinea semnalului'),title('Amplitudinea unui semnal calculata cu functia fft') p = unwrap(angle(y));
%functia angle calculeaza faza semnalului si functia unwrap elimina discontinuitatile fazei

figure, subplot(211), plot(f,m), ylabel('Amplitudinea semnalului'), grid; subplot(212), plot(f, p*180 / pi), xlabel('Frecventa (Hz)'), ylabel('Faza (grade)'),grid
90

FFT Reprez. graf. a ampl si fazei unui semnal

91

FFT - Exemple

Ex.: Sa se scrie un fisier function care sa calculeze transformata Fourier rapida a unui semnal de forma: x=2*sin(2*pi*50*t)+1.5*sin(2*pi*100*t)+sin(2*pi*200*t)+0.5*sin(2*pi*35 0*t);si care sa returneze vectorii frecventa si amplitudine. Sa se reprezinte pe acelai grafic amplitudinea si faza funcie de frecventa. Solutie: Se scrie urmtorul fiier function cu numele testfft: function [f, X] = testfft t = 0 : .001 : 0.39; % crearea vectorului timp fe = 1 / (t(2) - t(1)); % frecventa de esantionare
x=2*sin(2*pi*50*t)+1.5*sin(2*pi*100*t)+sin(2*pi*200*t)+0.5*sin(2*pi*350*t);

Xt = fft(x); % calcularea DFT a secventei Xm = abs(Xt); % calcularea amplitudinii FFT N=length(x);X=Xm(1:N / 2+1);Xp=Xt(1:N / 2+1);P=unwrap(angle(Xp)); f = [0 : N / 2] * fe / N; % crearea vectorului frecventa subplot(311), plot(t,x), subplot(312), plot(f,X), 92 subplot(313), plot(f,P*180 / pi)

FFT - Exemple

93

5. Analiza circuitelor electrice


Utilizarea MATLABului pentru rezolvarea circuitelor electrice poate fi vzuta ca o metoda alternativa sau ca o soluie simultana pentru rezolvarea ecuaiilor care le definesc. Prin scrierea unor programe, ca fiiere script sau function, si prin utilizarea funciilor MATLAB, cum ar fi: ode, diff, fplot, plot, global etc, se pot calcula si vizualiza diferii parametrii (curentul, tensiunea, puterea etc) care caracterizeaza functionarea circuitului respectiv, atat in regim staionar cat si in regim tranzitoriu. Variaia parametrilor unui circuit poate fi studiata prin aplicarea teoremelor si legilor din electrotehnica (Teoremele lui Kirchoff, Legea lui Ohm etc). Teoremele lui Kirchoff reprezint, de fapt, relaiile fundamentale pentru calculul circuitelor electrice.
94

5.1. Circuite electrice de curent continuu


Circuitele electrice de curent continuu sunt circuitele aflate in regim electrocinetic staionar. Ele sunt formate dintr-un ansamblu de surse electrice (tensiune, curent), rezistoare, bobine si /sau condensatoare. Calculul unui circuit electric se poate face pe baza schemei electrice a acestuia in care intervin doar parametrii elementelor de circuit. In analiza circuitelor electrice in regim staionar intervin diferite conexiuni de rezistoare si surse de tensiune si / sau curent. 95

Analiza circuitelor in regim stationar


Ex. 44: Se da circuitul rezistiv din figura. Cunoscandu-se parametrii R1 = 100 , R2 = 100 , Us = 5V. Sa se calculeze si sa se reprezinte grafic curentul (I) prin circuit si tensiunea (U) la bornele rezistentei de sarcina (R2) a circuitului. Sa se calculeze si sa se reprezinte grafic transferul maxim de putere (puterea disipata pe rezistenta de sarcina), tiind ca U = 10 V, R1 = 10 k, rezistenta de sarcina se modifica in plaja R2 = (0-50) k, Us =U +U1 =U + R1 I cu pasul de 1 k. Solutie: Marimea de intrare este U U U U s R2 tensiunea sursei (Us), iar parametrii de L1 : I = s ; L2 : I = U = R1 R R1 + R 2 iesire sunt curentul (I) si tensiunea (U). Aplicandu-se Teorema lui Kirchoff pentru 2 tensiuni (teorema a doua) se obtine: U R U 2
P2 = R2 =

(R 1 +

R2 )

96

Se scrie un fisier function cu numele L1 care conine urmatoarea secventa: function I=L1(u) r1=100; r2=100;us=5; I=(us-u)/r1; function I=L2(u) r1=100; r2=100; us=5; I=u / r2; Dupa rularea fisierului L1, se tasteaza urmatoarea comanda, in fereastra de comenzi (command window), subplot(121), fplot('L1',[0,5]), grid, subplot(122), fplot('L2', [0,5]), grid In fisierul function L1 de mai sus trebuie declarate valorile numerice ale celor doua rezistente in definirea fiecarei functii. Daca avem mai mult de doua astfel de functii programul poate deveni dificil iar timpul de rulare poate fi suficient de mare.

Pentru a face legatura intre parametrii tuturor secventelor function, se utilizeaza functia global: 2) Se scrie un fisier function cu numele L2, utilizand functia global: function I = L2(u) global r1 r2 us = 5; I = u / r2; function I = L1(u) global r1 r2 us=5; I = (us-u) / r1; De asemenea, se mai scrie un fisier script cu numele TestL1, care trebuie apelat dupa rularea fisierul function L2, cu urmatoarea secventa, global r1 r2 r1 = 100; r2 = 100; u=0:0.01:5; I1 = L1(u); I2 = L2(u); figure, subplot(121), plot(u, I1), grid,subplot(122), plot(u, I2), grid
97

b) Puterea disipata pe rezistenta de sarcina se poate calcula cu urmtoarea secvena, utiliznd ecuaia (29): %acest fiier script calculeaz

% transferul maxim de putere %disipata pe rezistenta de sarcina us=10; r1=10e3; r2=0:1e3:50e3; k = length(r2); %componentele vectorului r2

%Secventa urmtoare va calcula puterea disipata pe R2 for i = 1 : k p2(i) = ((us/(r1 + r2(i)))^2) * r2(i); end plot(r2, p2, r2, p2,o), title(Puterea disipata pe rezistenta de sarcina); xlabel(R_2 (W)), ylabel(P_2 (W))

98

Calculul tensiunilor si curenilor intr-un circuit electric


Rezolvarea circuitelor electrice se poate face prin: Aplicarea teoremelor lui Kirchoff si legea lui Ohm ; I = inv(Z)*V sau I = Z \ U Utilizarea Teoremei curentilor ciclici (de contur). Prin aceasta metoda se pot calcula curentii din ochiurile de retea a circuitului respectiv. Teorema potentialelor la noduri. Prin aplicarea aceastei metode, daca circuitul respectiv conine N noduri si noi selectam unul dintre ele ca referinta, vor rezulta N-1 ecuatii din care putem calcula tensiunea intre nodurile circuitului respectiv.
99

Ex. 45: Sa se calculeze tensiunile si curentii pentru circuitul din figura, stiind ca: RL = 2; Solutie: Aplicand teoremele lui Kirchoff si legea lui Ohm putem scrie urmatoarele ecuatii pentru curentii si tensiunile circuitului electric din figura: U1 = 5, U1-U2 = 50 I1, U2-U3 = 100 I2, U2 = 300 I3, U3 = 2 I2, I1 = I2+I3 Ansamblul ecuatiilor valorilor necunoscute ale tensiunilor si curentilor are forma matriciala (A): Construim un vector coloana UI, cu primele trei componente reprezentand tensiunea (U1, U2, U3) iar urmatoarele trei componente se refera la curentii din circuit (I1, I2, I3). Dupa care scriem un fisier script cu urmatoarea secventa: A=[1 0 0 0 0 0;1 -1 0 -50 0 0;0 1 -1 0 -100 0;0 1 0 0 0 -300;0 0 1 0 -2 0;0 0 0 1 -1 -1]; Us=[5; 0; 0; 0; 0; 0]; UI = A \ Us; UI = 5.0000 3.0178 0.0592 0.0396 0.0296 0.0101

0 0 0 1 0 0 1 1 0 50 0 0 0 1 1 0 100 0 A= 0 0 300 0 1 0 0 0 1 0 2 0 0 0 0 1 1 1

100

Rezolvarea circuitelor cu Teorema curentilor de contur (ciclici)


Ex. 46: Utiliznd teorema curenilor de contur sa se calculeze curentul (I) care trece prin rezistenta R4 a circuitului din figura si puterea (P) furnizata de sursa de tensiune (us = 10 V), tiind ca R = 10 , R1 = 30 , R2 = 15 si R3 = 30 : Solutie: Utiliznd teorema curenilor de contur si alegnd sensurile acestora ca in figura se poate observa ca puterea furnizata de sursa de tensiune este P = 10 I1 iar curentul care trece prin rezistenta R4 este I = I3 I2. Se scriu ecuaiile corespunztoare fiecrui ochi de reea:

10 (I1 I2 ) +30 (I1 I3) 10= 0 40 10 30 = 10 I I I 2 3 1 10 (I2 I1 ) +15 I2 + 5 (I2 I3 ) = 0 10 + 30 5 = 0 I I I 1 2 3 I = 0 30 (I3 I1 ) + 5 (I3 I2 ) + 30 1013 30 5 + 65 = 0 I I I 1 2 3

In forma matriciala ecuatiile (37) - (39) devin:


40 10 30 I1 10 10 30 5 I = 0 2 30 5 65 I3 0

Programul MATLAB pentru calcularea curentilor I1, I2 si I3 si I si a puterii P poate fi scris intr-un fisier script: Z = [40 -10 -30; -10 30 -5; -30 -5 65]; U = [10 0 0] ; I = inv(Z)*U; Ir4 = I(3) I(2);%curentul prin rezistenta R4 fprintf('Curentul prin rezistorul R4 este: %8.3f A \n', Ir4') P = I(1)*10; %puterea furnizata de sursa de tensiune fprintf('Puterea furnizata de o sursa de tensiune de 10V este: % 8.4 f W \ n , P) MATLABul genereaza urmatorul raspuns: Curentul prin rezistorul R4 este: 0.037 A Puterea furnizata de o sursa de tensiune de 10V este: 4.7531 W102

Rezolvarea circuitelor cu Teorema potentialelor la noduri


Ex. 47: Pentru circuitul din figura 38, sa se gaseasca tensiunea intre nodurile 1, 2 si 3 (U1, U2 si U3). Solutie: Utilizand teorema lui Kirchoff si luand in U1 U2 U1 U3 considerare regula conform + 5 = 0 10 20 careia curentii care ies dintr-un nod sunt pozitivi, U2 U1 U2 U2 U3 U3 U1 U3 U2 + + =0 vor rezulta urmatoarele + 2=0 10 50 40 20 40 ecuatii pentru fiecare nod:
103

In forma matriciala ecuatiile 44-46 devin:


0 .1 0.05 U 1 5 0.15 0 .1 U = 0 0 . 145 0 . 025 2 0.05 0.025 0.075 U 3 2

Fiierul script care calculeaz sistemul matricial de ecuaii si care genereaz valorile tensiunilor la noduri are forma:

%Acest fiier calculeaz tensiunile la noduri U1, U2 si U3 Y = [0.15 -0.1 -0.05; -0.1 0.145 -0.025; -0.05 -0.025 0.075]; I = [5; 0; 2]; fprintf( Tensiunile la noduri U1, U2 si U3 sunt: \ n ') U = inv(Y) * I Se returneaz urmtorul rezultat: Tensiunile la noduri U1, U2 si U3 sunt: U= 404.2857 350.0000 412.8571

104

Circuite electrice in regim tranzitoriu


Calculul mrimilor circuitelor electrice in regim tranzitoriu se refera la circuitele cu caracter capacitiv si / sau inductiv Se rezolva cu ajutorul Teoremelor lui Kirchoff, metoda transformatei Laplace (metoda operationala), Teorema curentilor de contur sau Teorema potentialelor la noduri, Teorema conditiilor initiale, Teoremele generatoarelor echivalente (Teorema lui Tevenin si Teorema lui Norton) sau cu ajutorul marimilor de stare (MM - ISI).; 105

Circuite electrice in regim tranzitoriu


Pentru analiza circuitelor de curent continuu in regim tranzitoriu se considera circuitul RC descris in figura Studiul acestui circuit se poate face cu ajutorul Teoremei lui Kirchoff pentru curent; Daca condensatorul este initial neincarcat, u(t) = 0 la t=0 (conditii initiale), atunci solutia ecuatiei este data de relatia: u(t) reprezinta raspunsul in domeniu timp a unui circuit RC, sau iesirea unui circuit care are ca intrare o tensiune continua constanta, iar RC reprezinta constanta de timp a circuitului.

du(t ) u(t ) us C + =0 dt R
t u (t ) = us 1 e RC

106

Circuite electrice in regim tranzitoriu - Exemple


Ex. 48: Sa se reprezinte grafic tensiunea (u(t)) la bornele unui condensator, stiind ca C = 10 F, daca rezistenta R = 1 k, R = 10 k si R = 0.1 k. Solutie: Se scrie un fisier script cu urmatorul continut: %incarcarea unui circuit RC c=10e-6; r1 = 1e3; tau1 = c*r1; t = 0 : 0.002 : 0.05; u1 = 10*(1-exp(-t / tau1)); r2 = 10e3; tau2 = c*r2; u2 = 10*(1-exp(-t / tau2)); r3 = 0.1e3; tau3 = c*r3; u3 = 10*(1-exp(-t / tau3)); plot(t,u1,t,u2,t,u3), title(Incarcarea unui condensator cu trei constante de timp); axis([0 0.06 0 12]); xlabel(Timpul (s)), ylabel(Tensiunea pe condensator (V))

107

Ex. 49: Pentru o tensiune de intrare dreptunghiulara (us) cu amplitudinea de 5V si latimea pulsului de 0.5 sec si un condensator C = 10 F, sa se reprezinte grafic tensiunea la bornele condensatorului u(t) pentru o rezistenta de 2.5 k si apoi pentru una de 10 k.

Solutie: Se scrie un fisier function cu numele rceval care va conine secventa: function [v, t] = rceval(r, c) tau = r*c; for i = 1:50 t(i) = i / 100; v(i) = 5*(1-exp(-t(i) / tau)); end vmax = v(50); for i=51:100 t(i) = i / 100; v(i) = vmax*exp(-t(i-50) / tau); end

Si un fisier script cu numele testrceval, care va apela fisierul function rceval, si care conine secventa : c=10.0e-6;r1=2500; [v1,t1] = rceval(r1,c); r2 = 10000; [v2, t2] = rceval(r2, c); figure, plot(t1,v1,t1,v1,'*b',t2,v2,t2,v2,'og'), axis([0 1 0 6]) title('Raspunsul unui circuit RC pentru un semnal de intrare dreptunghiular') xlabel('Timpul (s)'), ylabel('Tensiunea pe condensator (V)')

108

Transformata Laplace

Una din cele mai simple modalitati ale MATLABului de a calcula si de-a reprezenta grafic curentul si tensiunea unui circuit RLC, pentru studiul diferitelor regimuri tranzitorii, este utilizarea transformatei Laplace. Un sistem de ecuaii, care definete funcionarea unui circuit RLC, conine ecuaii difereniale care pot fi convertite foarte simplu in ecuaii algebrice cu ajutorul Transformatei Laplace. Necunoscutele circuitului (tensiunea sau curentul) vor fi calculate in acest caz in domeniul operational (s). De asemenea, utiliznd Transformata Laplace inversa, soluia unei ecuaii poate fi exprimata in domeniul timp.
109

Ex. 51: Sa se determine tensiunea u(t) la bornele unui condensator pentru circuitul RLC paralel din figura 45, tiind ca R = 10 , L = 1 / 32 H, C = 50 F, Is = 2 A.

La t < 0, tensiunea la bornele condensatorului este uC(0) = 2 * 10 = 20V si curentul prin bobina iL = 0; La t > 0, comutatorul se nchide si toate cele patru elemente sunt in paralel. Utiliznd Teorema lui Kirchoff va rezulta ecuaia: Aplicnd Transformata Laplace ecuaiei (57) vom obine:

u(t) du(t) 1 Is = +C + u( ) d + iL (0) R dt L 0

Is U(s) U(s) IL(0) = +C[sU(s)Uc(0)] + + s R sL s


110

Se scrie un fisier function, cu numele diff2, cu solutia ecuatiei diferentiale si un fisier script principal care apeleaza fisierul function si care reprezinta grafic tensiunea la bornele condensatorului utilizand functia MATLAB ode23 si Transformata Laplace: % Fisierul function cu Solutia unei ecuatii diferentiale de ordinul 2

function xderivat = diff2(t, x) is=2;C=50e-6;L=1/32;R=10; k1=1/C; k2=1/L; k3=1/(R*C); xderivat = [0 k2; -k1 -k3]*[x]+[0; k1*is];
%Fisierul script principal pentru analiza regimurilor tranzitorii a unui circuit RLC paralel %utilizand functia ode (solutie numerica) si Transformata Laplace %Analiza reg. tranzitoriu cu functia ode23

t0 = 0; tf = 30e-3; tspan = [t0 tf]; x0 = [0 20]; % conditiile initiale [t, x] = ode23('diff2', tspan, x0);
subplot(211), plot(t, x(:,2)); %coloana 2-a a matricii x reprezinta tensiunea pe condensator xlabel('Timpul, s'), ylabel('Tensiunea pe condensator, V'); %Analiza reg. tranzitoriu utilizand Transformata Laplace

t2 = 0:1e-3:30e-3; ut = -6.667*exp(-1600*t2)+26.667*exp(-400*t2); subplot(212), plot(t2, ut); xlabel('Timpul (s)'),ylabel('Tensiunea pe condensator (V)');

111

112

Circuite electrice de curent alternativ


Conceptual nu exista nici o diferena intre studiul circuitelor electrice pur rezistive, in regim staionar (permanent sinusoidal), si studiul circuitelor electrice inductive si capacitive, daca scriem ecuaiile circuitelor in forma matriciala sau le nlocuim cu fazori. Singura diferena, fata de circuitele rezistive, consta in faptul ca matricele conin ca elemente numere complexe si impedana acestor circuite depinde de frecventa. Relaiile fazoriale tensiune curent pentru rezistor, bobina si condensator sunt: I U R = I R ; U L = I ( j L ); U C = ( j C ) Si in acest caz pentru studiul diferitelor regimuri de funcionare se utilizeaz Teoremele lui Kirchoff, Teorema potenialelor la noduri, Teorema curenilor ciclici (de contur) etc. MATLABul utilizeaz funcii de integrare numerica (quad, quad8) pentru a obine valorile efective, medii sau instantanee ale diferiilor parametrii, cum ar fi curentul, tensiunea sau puterea. Circuitele trifazate pot fi analizate prin conversia in domeniul frecventa Daca se cunoate funcia de transfer (fdt) a unui circuit, librria de funcii MATLAB conine funcii dedicate care pot evalua fdt la o anumita frecventa, sau pot calcula polii si zerourile funciei respective 113

Analiza circuitelor electrice de c.a. in regim stationar


MATLABul conine doua functii pentru integrarea numerica, quad si quad8, a circuitelor electrice. Ex. 52: Pentru circuitul din figura se cunosc valorile instantanee ale tensiunii si curentului. Sa se determine puterea medie, valoarea efectiva a tensiunii si factorul de putere utilizand
a) metoda analitica b) metoda numerica.
T

u (t ) = 10 cos( 220t + 30 0 ) i (t ) = 6 cos( 220t + 60 0 )


U
ef

= U =

1 T 1 T
T

u
0 2

( t ) dt

I ef = I =

i
0

( t ) dt

1 P = p ( t ) = u(t) i(t) dt medie T 0

P 114 P k= = S U I

Solutie: Se scrie fisierul script cu urmatorul continut, care va apela si un fisier function (Tensiunea) creat pentru a defini tensiunea, curentul si puterea: %Acest fisier calculeaza puterea medie si efectiva si factorul de putere %utilizand functia MATLAB de integrare numerica quad

%Calcul numeric T = 2*pi / (220*pi);%perioada formei de unda sinusoidale a = 0;b = T; %limitele de integrare x = 0 : 0.02 : 1; t = x .* b; Uint = quad('Tensiunea', a, b); Uef = sqrt(Uint / b); %tensiunea efectiva Iint = quad('Curentul', a, b); Ief = sqrt(Iint / b); %Valoarea efectiva a curentului Pint = quad('Putereainstantanee',a,b); Pmedie = Pint / b; %puterea medie k = Pmedie / (Ief * Uef); %factorul de putere %Solutia analitica: P_amedie = (60 / 2)*cos(30*pi / 180); U_aef = 10 / sqrt(2); k_a = cos(30*pi / 180);
115

fprintf('Puterea medie analitica %f \ n Puterea medie numerica: %f\n',P_amedie,Pmedie) fprintf('Tensiunea efectiva analitica % f \ n Tensiunea efectiva numerica: %f \ n', U_aef, Uef) fprintf('Factorul de putere analitic % f \ n Factorul de putere numeric: %f\n', k_a, k)

Fisierul function Tensiunea are urmtorul coninut: function Usq = Tensiunea(t) %aceasta functie este utilizata pt. a defini tensiunea instantanee Usq = (10*cos(220 * pi * t + 60 * pi / 180)).^2; function Isq = Curentul(t) %Aceasta functie defineste curentul instantaneu Isq = (6*cos(220 * pi * t + 30 * pi / 180)).^2; function Pt = Putereainstantanee(t) %aceasta functie defineste puterea instantanee It = 6*cos(220 * pi * t + 30 * pi / 180); Ut = 10 * cos(220* pi * t + 60 * pi / 180); Pt = It .* Ut;

116

Circuite de curent alternativ RC, RL si RLC


Rezolvarea circuitelor de curent alternativ (studiul diferitelor conditii de functionare), cu ajutorul MATLABului, se poate face prin metode analitice si prin metode numerice iterative. In inginerie electrica se apeleaza de multe ori la ecuatii diferentiale pentru studiul diferitelor probleme tehnice, cum ar fi rezolvarea circuitelor electrice. Se scriu ecuatiile unui astfel de circuit aplicand, de exemplu Legea lui Ohm sau Teoremele lui Kirchoff, dupa care se rescriu ecuatiile intr-o forma diferentiala simplificata de ordinul 1 sau 2, in functie de elementele componente ale circuitului respectiv 117 (bobine, condensatoare).

Ex. 53: Sa se calculeze si sa se reprezinte grafic tensiunea la bornele condensatorului (tensiunea de iesire) pentru circuitul RC din figura, pentru intervalul de timp 0<=t<=6, stiind ca tensiunea de alimentare (tensiunea de intrare) este un semnal sinusoidal (u=sin(t)). Ecuatia diferentiala care descrie tensiunea pe condensator a circuitului din figura este data de relatia: Ecuatia (71) poate fi rescrisa sub forma simplificata:

dUC +UC =U(t) RC dt dy a + by = sin( 2t);a = RC,b =1 dt

Solutie: Inlocuind ecuatia (73) in ecuatia diferentiala (72) a circuitului RC va rezulta solutia ecuatiei 1 2 a ( k ) 2a(k) y(k 1) diferentiale de ordinul 1 +b(k) +a(k) D(k 1) +u(k) y(k) = t t (Tensiunea pe condensator): 118

Considernd a = 1 / 2, se scrie fiierul script care va calcula si reprezenta grafic tensiunea pe condensator (uC(t)): %Reprezentarea grafica a tensiunii pe condensator pt. un circuit de c.a. RC tin = 0; tfin = 6; t = linspace(tin, tfin, 3000); %genereaza un vector linie cu 3000 de puncte intre tin si tfin N = length(t); %dimensiunea vectorului timp y = zeros(1, N); dt = (tfin - tin) / (N-1); u = sin(t); %semnalul de intrare a = (1 / (2*pi)) * ones(1, N); %a=RC b = ones(1, N); y(1) = 0; %conditie initiala D(1) = (1 / a(1)) * (u(1) - b(1) * y(1)); for k = 2 : N y(k) = ((2*a(k) / dt + b(k))^(-1)) * (2*a(k) * y(k-1) / dt + a(k) * D(k-1) + u(k)); % tensiunea pe condensator D(k) = (2 / dt) * (y(k) - y(k-1)) - D(k-1); end plot(t,y,t,u,'--'), xlabel('Timpul'), ylabel('Tensiunea'), title('Tensiunea pe condensator si tensiunea de intrare a unui circuit RC'), grid
119

120

Exemplul urmator va descrie rezolvarea unui circuit RLC cu ajutorul MATLABului utilizand o metoda iterativa de ordinul 2 si o metoda de integrare numerica ode.
Ex. 54: Sa se calculeze si sa se reprezinte grafic tensiunea pe condensator in functie de timp pentru circuitul RLC din figura 50, pe intervalul , stiind ca LC=1, RC=3 si =1. Ecuatia care calculeaza tensiunea pe condensator a circuitului RLC din figura este: Ecuatia diferentiala de ordinul 2 se poate scrie sub forma:

d 2U C dU C LC + RC + U C = U (t ) dt dt 2 d2y dy a 2 +b + cy = sin( t ) dt dt
1 D2 (1) = a(1) ( b(1) D(1) c(1) y(1) + u(1))
121

In care a = LC, b = RC si c = 1 sunt constantele de timp ale circuitului.


Solutia ec. diferentiale este data de relatia:

Solutie 1: Pentru conditiile initiale y(t=0)=y(t=0)=0 se scrie un fisier script cu urmatoarea secventa : %Reprezentarea grafica a tensiunii pe condensator pt. un circuit de c.a. RLC tin = 0; tfin = 16*pi; t=linspace(tin,tfin,2000);%genereaza un vector linie cu 2000 de puncte intre tin si tfin

a = 1;b = 3;c = 1; w = 1; %a = LC, b = RC, c = 1 N = length(t); %dimensiunea vectorului timp y = zeros(1,N); dt = (tfin - tin) / (N-1); u = sin(w * t); %semnalul de intrare y(1) = 0; D(1) = 0; D2(1)=(1/a)*(-b*D(1)-c*y(1)+u(1)); for k=2:N y(k)=((4*a/dt^2+2*b/dt+c)^(-1))*(y(k-1)*(4*a/dt^2+2*b/dt)+D(k1)*(4*a/dt+b)+a*D2(k-1)+u(k)); %tensiunea pe condensator D(k) = (2 / dt) * (y(k) - y(k - 1)) - D(k - 1); D2(k) = (4 / dt^2)*(y(k) - y(k-1)) - (4/dt) * D(k-1) - D2(k-1); end plot(t,y,t,u,'--'), xlabel('Timpul'), ylabel('Tensiunea'),title('Tensiunea pe condensator si tensiunea de intrare a unui circuit RC'),axis([0 50 -1 1])
122

Solutie 2: Sa se calculeze si sa se reprezinte grafic tensiunea pe condensator pentru circuitul RLC din figura 50, utilizand metoda de integrare numerica ode45 (Runge-Kutta) si sa se compare graficul rezultant cu cel obtinut anterior.
Se scrie un fisier function cu numele RLC.m care va include sistemul de ecuatii, dupa care se va scrie un fisier script test RLC care-l va include (apela) pe cel function:

function zp=RLC(t,z) %Acest fisier function reprezinta grafic tensiunea pe condensator intr-un %circ RLC cu metoda ode45(Runge-Kutta) si include sistemul de ecuatii a = 1;b = 3;c = 1; zp(1,1) = z(2,1); zp(2,1) = (1/a) * (sin(t) b * z(2,1) c * z(1,1)); %Acest fisier script reprezinta grafic tensiunea pe condensator intr-un %circ RLC cu metoda ode45(Runge-Kutta) si acceseaza fisierul function RLC tspan = [0 16 * pi]; zin = [0; 0]; [t, z] = ode45('RLC', tspan, zin); plot(t,z(:,1),t,sin(t)),axis([0 50 -1 1]), xlabel('Timpul'),title('Comparatie intre Tensiunea pe condensator intr-un circuit RLC si Tensiunea sursei de alimentare') 123

124

Rspunsul in domeniul timp si frecventa


Rspunsul n domeniul timp: - furnizeaz informaii despre regimul tranzitoriu al modelelor liniare invariante n timp, pentru diferite tipuri de semnale de intrare i perturbaii; - permite determinarea unor caracteristici i parametri (indicatori) ai sistemului respectiv, necesare n proiectare, cum ar fi: timpul de cretere, timpul de rspuns, timpul de reglare sau eroarea de regim staionar. Rspunsul n domeniul frecven / pulsaie a unui sistem reprezint diferena amplitudinii i fazei unui semnal sinusoidal de la intrarea i ieirea acestuia. 125

Raspunsul in domeniul timp


Dac se dorete s se reprezinte grafic rspunsul n domeniul timp pentru un semnal treapt i impuls, se utilizeaz comenzile step(sys) i impulse(sys).

H (s) =

1 s 2 + 10 s + 20
126

Locul geometric al radacinilor si alocarea polilor


Functia MATLAB pt. alocarea polilor: pzmap Iar pt. locul geometric al radacinilor rlocus;
127

Rspunsul in frecventa
Rspunsul n frecven sau diagrama Bode, alturi de algoritmii de reglare ai regulatoarelor de tip proporional-integrator-derivativ (RG-PID), sunt cele mai utilizate metode de proiectare ale sistemelor de conducere utilizate n industrie. Mrimea de ieire a unui sistem liniar, avnd ca mrime de intrare un semnal sinusoidal, este tot o sinusoid de aceeai frecven, dar de amplitudine i faz diferite. Se poate aplica sistemelor de tip SISO sau MIMO, considernd sistemul respectiv liniar. Este utilizat pentru proiectarea sistemelor de conducere, acordarea parametrilor unor regulatoare sau pentru proiectarea diferitelor 128 filtre electronice/filtre de reea etc.

Reprezentarea grafica a raspunsului in domeniul frecventa


Dac se dorete reprezentarea grafic a rspunsului sistemului n domeniul frecven, se utilizeaz funcia bode(sys), sau bodemag(sys) care reprezint grafic doar amplitudinea diagramei Bode.
129

Funcii dedicate crerii i conversiei modelelor liniare


Biblioteca

Control System furnizeaz i un set de funcii (tf, ss, zpk, frd) pentru crearea a patru tipuri de modele liniare, invariante n timp (Linear Time Invariant-LTI), i pentru conversia dintr-un model n altul

130

Conversia modelelor

Funcia c2d realizeaz conversia modelelor continue n modele discrete echivalente, implementate prin tf, zpk i ss; Se poate realiza i conversia invers, utiliznd funcia d2c; Metodele care realizeaz aceast conversie (discretizarea sistemelor liniare) sunt: zero-order-hold, first-order-hold, Tustin biliniar approximation (metoda trapezului), Tustin with frequency prewarping i matched poles and zeros. Aceste funcii pot fi apelate cu urmtoarele sintaxe: sysd = c2d(sysc, Ts, Metoda) Sysc = d2c(sysd, Metoda)

Dac nu se specific metoda de discretizare, atunci MATLABul va realiza conversia, utiliznd metoda zoh (zeroorder-hold). O funcie similar, cu cele de mai sus, este d2d, care poate fi utilizat atunci cnd se dorete discretizarea modelului 131cu un alt pas de eantionare dect cel precedent.

Parametrii si caracteristici de baza pt. proiectarea SRA


Eroarea de regim staionar caracterizeaz precizia de funcionare a SRA n regim staionar. Suprareglajul este un indice de calitate al SRA n regim tranzitoriu, provocat de o variaie a mrimii de intrare, i reprezint depirea maxim de ctre mrimea de ieire a valorii staionare. Gradul de amortizare este tot un indice de calitate al regimului tranzitoriu i reprezint diferena dintre unitate i raportul amplitudinilor a dou semioscilaii succesive ale mrimii de ieire, raportate la valoarea de regim staionar. Timpul de cretere, timpul atingerii primului maxim i timpul primei atingeri a valorii staionare sunt indici de calitate care caracterizeaz rapiditatea rspunsului tranzitoriu al SRA. Timpul de rspuns al SRA reprezint timpul msurat de la nceputul procesului tranzitoriu pn cnd, diferena dintre mrimea de ieire i valoarea sa staionar scade sub o132 anumit limit (de ex. 5 %).

Conceptul de instabilitate a unui sistem n bucl nchis (RG+plant) este definit de marginea/rezerva de stabilitate. n acest sens, diagrama Bode furnizeaz doi parametrii: marginea de amplitudine (gain margin-GM) i marginea / rezerva de faz (phase margin-PM), dup cum descrie figura din dreapta. Un SRA liniar este stabil dac marginea de faz (PM) i marginea de amplitudine (GM) sunt pozitive. Dac PM=0 sistemul se afl la limita de stabilitate, iar dac unul din cei doi parametri este negativ sistemul liniar este instabil.

133

Diagrama Nyquist

Diagrama Nyquist este utilizat, n tandem cu diagrama Bode, la estimarea performanelor sistemelor de reglare automat, n bucl nchis (cu bucl de reglare/reacie), pe baza proprietilor sistemului fr bucl de reglare, folosind fdt a acestuia, atunci cnd diagrama Bode ofer informaii confuze despre stabilitatea sistemului n bucl deschis. Criteriul Nyquist este cel mai important criteriu de apreciere a stabilitii SRA, n timp continuu. De asemenea, diagrama Nyquist poate fi utilizat pentru a gsi domeniul de variaie al factorului de amplificare (gain) al regulatorului, pentru care sistemul n bucl nchis este stabil. Funcia MATLAB, pentru reprezentarea grafic a diagramei Nyquist, este: nyquist (num, den)
134

Diagrama Nyquist - Exemplu


nyquist(50,[1 9 30 40]) Dup cum rezult din figura sistemul modelat prin fdt este stabil, deoarece diagrama Nyquist nu conine nici o ncercuire (suprapunere) a celor dou axe n jurul valorii de -1 (punctul critic). Acest lucru se datoreaz faptului c, polii fdt ai sistemului nu sunt alocai n semiplanul drept. Utilizarea diagramei Nyquist permite vizualizarea intuitiv i aprecierea gradului de stabilitate a sistemului i a influenei modificrii unor parametrii ai acestuia asupra stabilitii.
135

Diagrama Nyquist - Exemplu

136

Analiza circuitelor electrice utiliznd rspunsul n frecven


d2UC dU LC 2 + RC C +UC =Ui (t),uc (0) = 0 dt dt


U 0 (s) R sRC = = 2 = 1 1 U i (s) s LC sRC + + R + sL + sC R s L = 1 R s2 + s + L LC H (s) =

S se calculeze i s se reprezinte grafic rspunsul n frecven al circuitului RLC din figura tiind c: R=10 k, C=1,12 F i L = 5H ce se ntmpl dac rezistena se modific la valoarea R = 100 n timp ce L i C rmn neschimbate?
137

Soluie: Se scrie fiierul script (raspunsulfrecventaRLC.m) cu urmtoarea secven: L=5; C=1.25e-6; R1=10000; R2=100; %parametrii circuitului num1=[R1 / L 0]; den1=[1 R1/L 1/(L*C)];%numrtorul i numitorul fdt w=logspace(1, 4); f=w / (2*pi); h1=freqs(num1, den1,w); mag1=abs(h1); phase1=angle(h1)*180 / pi; num2=[R2/L 0]; den2=[1 R2/L 1/(L*C)]; h2=freqs(num2,den2,w); mag2=abs(h2);phase2=angle(h2)*180/pi; subplot(221),loglog(f,mag1,'+'),title('Raspunsul amplitudine pt. R=10k'),ylabel('Amplitudinea') subplot(222),loglog(f,mag2,'--'),title('Raspunsul amplitudine pt. R=0.1k'),ylabel('Amplitudinea') subplot(223),semilogx(f,phase1,'--'),title('Raspunsul faza pt. R = 10k'), xlabel('Frecventa (Hz)'),ylabel('Unghiul de faza (grade)') subplot(224),semilogx(f,phase2),title('Raspunsul faza pt. R = 0.1k'), xlabel('Frecventa (Hz)'),ylabel('Unghiul de faza (grade)')
138

Fig. arata ca, deoarece rezistenta rezistorului R2 scade de la 10k la 0.1k, latimea de banda a raspunsului in domeniul frecventa scade si totodata factorul (indicatorul) de calitate al circuitului creste.

139

6. Introducere in Simulink (1)


Simulinkul este un mediu interactiv de modelare, simulare si analiza dinamic a sistemelor liniare(continue), neliniare, discrete, (continue n timp, discrete n timp) sau hibride. Cu ajutorul pachetului de programe Simulink se pot construi diagrame bloc, utiliznd biblioteca standard (nucleului de baza) sau realiznd propriile blocuri (interfaa grafic interactiva denumit graphical user interface GUI ). Modelele complexe se realizeaz ierarhic crend blocuri grupate n subsisteme. Aceste subsisteme se pot cupla ntre ele realizndu-se un singur sistem n care se evideniaz mrimile de intrare i de ieire. Dup realizarea modelului matematic al sistemului, urmtorul pas este simularea dinamic utiliznd una din metodele de 140 integrare numeric oferit de program (Ode23, Ode45 etc).

6. Introducere in Simulink (2)


Simularea dinamic a sistemului analizat se bazeaz pe cunoaterea sistemului de ecuaii difereniale, pe realizarea shemei bloc i desigur pe utilizarea unei metode de integrare numeric. Rezultatele simulrii pot fi afiate att grafic ct i sub forma unor tabele numerice. Utiliznd blocurile bibliotecii S-Functions se pot crea propriile blocuri, care se integreaz n schemele existente, realizate cu blocuri din biblioteca standard a Simulinkului. Utilizarea Simulinkului pentru studiul diferitelor regimuri de functionare ale sistemelor dinamice permite si vizualizarea mai multor ferestre grafice n acelai timp. Biblioteca Simulink conine mai multe seturi (colecii) de blocuri dedicate diferitelor domenii de activitate, cum ar fi ingineria electrica maini, convertoare statice si acionri electrice, electronica - procesarea digitala a semnalelor etc.
141

6.1. Editorul Simulinkului


Cnd

se dorete accesarea bibliotecii Simulink sau deschiderea unui model, Simulinkul afieaz instantaneu fereastra editorului su. Pentru a deschide o fereastr Simulink si implicit pentru a crea un model nou se acceseaza new model din meniul principal. Aceasta fereastr conine cele mai uzuale comenzi ale Simulinkului, cum ar fi: deschiderea unui model, salvarea acestuia, accesarea bibliotecii, setarea parametrilor simulrii si rularea unei simulri etc 142

Editorul Simulinkului

Editorul Simulink conine urmtoarele componente de baza: Menu Bar conine comenzile pentru crearea, editarea, vizualizarea, printarea si simularea modelelor; Toolbar conine cele mai utilizate comenzi Simulink care pot fi accesate printr-un simplu click pe butonul respectiv; Canvas afieaz diagrama bloc a modelului si implicit permite editarea acesteia; Status Bar afieaz situaia simulrii cnd aceasta este in progres. De asemenea, afieaz si timpul simulrii curente si 143 numele metodei de integrare numerica selectata.

Vizualizarea traiectoriei unui semnal. Crearea modelelor i a subsistemelor.


Vizualizarea traiectoriei unui semnal necesita intr-o prima etapa crearea unui model matematic, implementat in Simulink printr-o schema bloc. Pasul urmtor include alegerea metodei de integrare i a pasului minim i maxim, simularea modelului i implicit vizualizarea diferitelor forme de unda. Crearea modelelor in Simulink reprezint: construirea unei diagrame (scheme) bloc bazata pe modelul matematic al sistemului, aranjat astfel incat sa rezulte mrimile de intrare stare ieire (MM-ISI).
144

Vizualizarea traiectoriei unui semnal


Pentru vizualizarea traiectoriei unui semnal se considera exemplul urmator: Sa se vizualizeze semnalul de iesire a unui amplificator care are factorul de amplificare (gain) egal cu 0.5 si care are ca marime de intrare un semnal sinusoidal. Primul pas consta in accesarea librariei Simulink, dupa care se deschide o fereastra pentru a crea modelul cerut. Din libraria standard se selecteaza blocurile necesare implementarii modelului, dupa cum urmeaza: din libraria Math operation se selecteaza blocul Gain, care reprezinta un amplificator, si se muta in fereastra nou creata. Acest bloc are un singur parametru care este setat la valoarea unu. Desigur ca orice parametru intern al diferitelor blocuri poate fi modificat. In cazul modelului nostru am setat parametrul intern gain la valoarea ceruta (0.5); din libraria Sources se selecteaza blocul Sine Wave care reprezinta semnalul de intrare sinusoidal; din libraria Sinks se selecteaza blocul Scope care reprezinta 145 un Osciloscop;

Crearea modelelor/Vizualizarea semnalelor


Odat ce blocurile modelului sunt plasate in noua fereastra se pot unii prin linii pentru a realiza conexiunile dintre mrimile de intrare stare ieire. Conectarea blocurilor se poate face manual, utiliznd mouseul, sau automat, prin selectarea blocurilor care urmeaz a fi conectate, innd apsat tasta Ctrl. Pentru vizualizarea semnalului de ieire a blocului amplificator se poate selecta din meniul principal comanda start simulation dup care prin dublu click pe Scope se vizualizeaz forma de und rezultant. O alta metod de vizualizare a semnalelor este prin setarea parametrilor interni blocului Scope (ParametersData historySave data to workspace). Prin aceasta metoda datele pot fi salvate in fereastra de lucru a MATLABului si apoi prelucrate cu funciile (comenzile) acestuia.

146

Crearea modelelor
Crearea modelelor in Simulink utiliznd biblioteca standard (nucleul de baza). Modelul alturat integreaz i deriveaz un semnal sinusoidal (o forma de unda sinusoidala) i reprezint pe acelai grafic cele 3 semnale. Pentru a vizualiza pe acelai grafic mai multe semnale se utilizeaz blocul mux (multiplexor). Diagrama bloc a modelului i rezultatul simulrii sunt prezentate in figurile alturate:

147

Modelarea sistemelor in timp continuu


In biblioteca Simulink standard exista att blocuri analogice (continue) cat si discrete. In cazul blocurilor analogice acestea genereaz la ieire mrimi continue chiar daca mrimea de intrare este un semnal variabil. Blocurile analogice se regsesc in libraria standard in setul de funcii al bibliotecii Continuous precum si in alte biblioteci, cum ar fi Math Operations (gain, sum), Sinks (Scope) si Sources (Constant, Clock). Unele blocuri pot fi analogice sau discrete, in funcie de mrimea de intrare la care sunt conectate, de 148 exemplu blocul gain.

Un sistem continuu poate fi modelat cu ajutorul unei ecuaii difereniale de = 2 x (t ) + u (t ) (*) ordinul 1, de forma : dx dt
Unde u(t) reprezint mrimea de intrare a sistemului si este un semnal dreptunghiular (forma de unda ptratica) cu amplitudinea si frecventa egale cu unu (1 rad/sec). Pentru a implementa acest model in Simulink avem nevoie de un bloc integrator (integer), din biblioteca Continuous, care sa integreze mrimea proprie de intrare dx/dt pentru a obine mrimea de ieire x a sistemului. Pentru a genera un semnal dreptunghiular se utilizeaz blocul Signal Generator din biblioteca Sources, la care se va seta forma de unda corespunztoare si unitatea de msura se modifica in rad/sec. Alte blocuri necesare pentru a construi schema bloc a modelului sunt blocurile gain si sum din biblioteca Math Operations, iar pentru vizualizarea semnalului de ieire este necesar si un osciloscop (scope) accesibil in biblioteca Sinks. Schema bloc a modelului si reprezentarea grafica a mrimii de iesire x a sistemului continuu sunt prezentate in figura urmtoare: 149

In ecuaia (*), x reprezint mrimea de ieire a integratorului si a sistemului dar este in acelai timp si una din mrimile de intrare care calculeaz derivata dx/dt. Ecuaia (*) poate fi scrisa si cu ajutorul operatorului Laplace (s): s x = 2 x + u Care are ca soluie funcia de transfer:
u x 1 x= ; = s+2 u s+2

Pentru a implementa ecuaia de mai sus este necesar blocul Transfer Fcn, la care se seteaz corespunztor coeficienii de la numrtor si numitor (numerator [1], denominator [1 2]). Prin utilizarea Transformatei Laplace modelul devine mai simplu si are forma diagramei bloc din fig. 150 urmat.:

151

Crearea subsistemelor

Daca modelul pe care dorim sa-l implementam in Simulink creste ca dimensiune si complexitate, poate fi simplificat prin gruparea diferitelor blocuri intr-un subsistem sau in mai multe. Prin aceasta facilitate se reduce numrul blocurilor modelului si se menine ordinea de conectare a diagramei bloc a sistemului. Crearea subsistemelor se poate realiza prin doua modalitati: Prin adugarea unui bloc subsystem, din libraria Ports & Subsistems, la un model deja creat, iar apoi prin deschiderea acestuia se poate copia modelul existent in interiorul subsistemului; prin gruparea blocurilor, prin selectarea acestora se fixeaz mouse-ul pe unul din blocuri i se face clic pe butonul din dreapta. Din meniul ce apare se alege create subsystem i cu un clic se obine un singur bloc numit subsystem. Prin clic pe subsystem se obine un nou meniu din care alegnd edit mask se obine n final fereastra mask editor
152

Exemplul urmtor utilizeaz una din cele doua metode de creare a subsistemelor descrisa mai sus si va reprezenta grafic rezultatul att utiliznd metoda directa din Simulink, prin utilizarea unui osciloscop, cat si prin utilizarea unui bloc mascat care apeleaz un fiier MATLAB script. Exemplul . Sa se modeleze un oscilator cu frecventa variabila si amplitudine constanta care sa genereze doua funcii ortogonale, sinus si cosinus, iar apoi sa se reprezint grafic rezultatul simularii. Solutie: Modelul matematic al unui oscilator are forma:
d 2 y1 2 = y1 dt 2

1 dy1 y2 = dt
y 2 = y 1 dt y1 =

dy 2 = y1 dt

dt

153

154

Modelarea si simularea sistemelor dinamice


Modelarea si simularea unui sistem dinamic conine doua etape:


Crearea unui model grafic utiliznd editorul modelelor din nucleul de baza al librriei Simulink (modelarea sistemului dinamic). Modelul dinamic descrie ecuaiile matematice ale sistemului pe care dorim sa-l simulam, in funcie de timp, stabilind mrimile de intrare stare ieire (MM-ISI). Aceste ecuaii pot conine ecuaii algebrice, integrale si difereniale; Simularea regimurilor de funcionare ale sistemului intrun anumit interval de timp. Simulinkul utilizeaz informaiile de intrare ale utilizatorului in interiorul modelului pentru realizarea propriu-zisa a simulrii (simularea sistemului dinamic).
155

Modelarea sistemelor dinamice (1)


Simulinkul conine o librrie cu blocuri standard si un editor grafic ce permite realizarea conexiunilor dintre ele. Astfel, prin selectarea si interconectarea corespunztoare a blocurilor se poate implementa, intr-o lume virtuala, orice sistem dinamic real. Fiecare bloc reprezint un sistem dinamic elementar ce poate avea la ieire o variaie liniara (continua in timp), sau discreta (variabila in timp). Tipul fiecrui bloc determina legtura dintre mrimile de intrare, stare si cele de ieire ale sistemului si variaia acestuia in timp. Conexiunile dintre blocuri se realizeaz prin linii. Fiecare bloc poate sa contina una sau mai multe mrimi de intrare - stare ieire, dup cum descrie si figura:

156

Modelarea sistemelor dinamice (2)


Majoritatea blocurilor conin parametrii care trebuie definii naintea comenzii de simulare a sistemului, cum ar fi condiiile iniiale, pasul de eantionare etc. Mrimile de ieire ale unor blocuri depind de mrimile de stare ale sistemului. Aceste blocuri trebuie sa retina (memoreze) valorile de stare anterioare pentru a calcula actualele mrimi de stare. Pentru a realiza acest lucru aceste blocuri trebuie sa contina o memorie interna. De exemplu, blocul integrator realizeaz integrala semnalului de intrare si conine ca mrime de stare valoarea anterioara mrimii de intrare. Blocuri care nu conin mrimi de stare sunt, de exemplu: blocul sumator (sum), blocul gain etc. Principala caracteristica a blocurilor din biblioteca Simulink consta in posibilitatea de-a modifica parametrii acestora. Blocul gain conine un parametru cu acelai 157 nume care poate fi modificat corespunztor.

Simularea sistemelor dinamice se refera la procesul de evaluare (calculare) a marimilor de stare si marimilor de iesire intr-un anumit interval de timp, utilizand informatii furnizate de modelul matematic al sistemului. Simularea propriu-zisa a unui sistem include doua faze:
1. Initializarea modelului 2. Executia modelului

Simularea sistemelor dinamice

In timpul procesului de initializare Simulinkul evalueaz expresiile parametrilor din blocurile modelului matematic pentru a determina valorile acestora, determina calitatea semnalului (tipul si dimensiunile datelor), si verifica daca fiecare bloc poate accepta semnalele generate de parametrii de intrare.
De asemenea, in aceasta faza Simulinkul determina memoria necesara calculului parametrilor de stare si timpul de simulare necesar determinarii timpului de esantionare al blocurilor existente in modelul respectiv si le sorteaza in ordinea in care trebuie sa fie rulate (executate).

In faza de executie Simulinkul evalueaza succesiv marimile de stare si marimile de iesire ale sistemului pe intervalul de timp setat (simulation start time stop time) utilizand informatiile 158 furnizate de modelul matematic al sistemului dinamic.

nainte de lansarea in execuie a simulrii unui sistem dinamic se seteaz parametrii care definesc timpul de simulare (valoarea iniial si final), metoda de integrare (ode23, ode45 etc) si pasul simulrii (pas variabil, pas fix continuu sau discret). Acest lucru se poate realiza din meniul principal al editorului Simulink accesnd fereastra Simulation Parameters, dup cum descrie si figura:

159

Simulinkul ofer posibilitatea simulrii unui sistem att cu pas continuu (fix) cat si cu pas variabil. Diferena consta in faptul ca daca se alege pasul variabil se poate imbunatatii precizia simulrii prin reducerea mrimii pasului (paii inutili vor fi eliminai). De asemenea, se poate alege metoda de integrare numerica din meniul Solver. Metodele de integrare a sistemelor continue sunt metodele numerice clasice (Runge-Kutta, Adams, Euler, Rosenbrock, metoda trapezelor etc). Simulinkul ofer opt metode de integrare numerica a ecuaiilor difereniale care pot fi utilizate pentru rezolvarea unor sisteme flexibile (non-stiff) sau pentru sisteme rigide (stiff) si de asemenea pentru sisteme discrete (cu pas variabil). Al doilea meniu Workspace I/O din fereastra Simulation Parameters (fig. ) permite afisarea semnalelor de iesire. Acest meniu are trei opiuni: Structure with time permite salvarea datelor in workspace (timpul - tout si a semnalelor de iesire xout, yout, xFinal). Pentru afiarea valorilor xout si yout se tasteaza in fereastra de comanda (command window) a MATLABului xout.signals.values sau yout.signals.values; Structure acest meniu este identic cu primul cu deosebirea ca nu afieaz timpul; Array afiseaza marimile definite in workspace, avnd pe prima coloana vectorul timp. Meniul Diagnostic ne permite sa urmrim toate evenimentele decurse in timpul simulrii: de atentionare (warning), eroare (error) sau de loc (non). Meniul Advance si meniul Real-Time Workshop permit stabilirea diferitelor opiuni care pot afecta rezultatele simulrii precum si o extensie a posibilitilor de realizare a unor modele complexe in vederea utilizrii unor algoritmi in timp real. 160

Modelarea si simularea sistemelor discrete (1)


Simulinkul ofer si facilitatea de-a simula sisteme discrete (date/semnale eantionate), incluznd sisteme ale cror componente opereaz la rate de eantionare diferite si sisteme care au in componenta att mrimi discrete cat si continue. Blocurile discrete sunt redate in librria Discrete, dar pot fi ntlnite si in alte librarii cum ar fi Sources (Pulse Generator) sau Sinks. Aceste blocuri prezint un timp de discretizare (eantionare), unele dintre ele avnd setat acest timp iar alte blocuri permit modificarea acestui parametru intern. Sistemele discrete din biblioteca Simulink au doua caracteristici de baza:

Blocuri care conin parametrii ce pot fi setai pentru a defini timpul de eantionare (de ex. blocurile sine wave sau pulse generator). Aceste blocuri pot fi gsite in biblioteca Sources sau Discrete. Blocuri care pot primi timpii de eantionare de la alte blocuri conectate ca marimi de intrare ale acestora.
161

Modelarea si simularea sistemelor discrete (2)


Facilitatea setrii timpului de eantionare a unui bloc permite modelarea sistemelor care conin att componente discrete care funcioneaz la diferite rate de eantionare cat si sisteme hibride care conin att componente continue cat si componente discrete. Timpul de eantionare al unui bloc nu poate fi modificat in timpul unei simulri. Daca se dorete modificarea acestuia simularea trebuie oprita iar dup modificarea parametrului respectiv se poate reporni simularea pentru a avea efect. In continuare se prezint un exemplu in care blocul integrator cu timp discret (Discrete-Time-Integrator) va genera la ieire tot un semnal discret deoarece are ca mrime de intrare un bloc analogic care genereaz un semnal continuu (blocul constant cat si blocul gain sunt mrimi analogice) care nu-i 162 modifica parametrii interni (timpul de eantionare).

Simularea sistemelor discrete

163

Discretizarea modelelor

Prin discretizarea unui model se nelege nlocuirea blocurilor continue ale modelului cu blocuri discrete echivalente, utiliznd o anumit metod de discretizare (Tustin, zoh etc). Simulinkul poate discretiza un model existent, utiliznd o fereastr grafic interactiv (GUI), prin accesarea meniului toolsmodel discretizer. Aceast metod (GUI) de discretizare permite automat identificarea blocurilor continue ale modelului existent. Urmtorul pas const n modificarea parametrului intern sample time (de la Ts=0 la Ts>0) al blocului respectiv pentru ai da acestuia caracter discret. Discretizarea modelelor reprezint un pas important n proiectarea regulatoarelor (filtrelor) digitale i este foarte util pentru simularea sistemelor de control n bucl 164 deschis i cu bucl de reglare (SRA, acionare electric

Figura de mai jos ne arat cum se poate discretiza un model liniar existent prin utilizarea interfeei grafice interactive GUI Model Discretizer. Aceast metod de discretizare permite automat identificarea blocurilor continue ale modelului existent. In cazul nostru exist doar un singur bloc n aceast situaie, blocul Generator de semnal :

165

Controlul in timp discret al SRA


Pentru reducerea erorilor i a timpului de simulare, regulatoarele / controlerele continue pot fi nlocuite cu cele discrete. Diferena principal ntre cele dou tipuri de regulatoare const n faptul c sistemele digitale opereaz cu semnale discrete (discretizate cu un timp/perioada de eantionare). Proiectarea unui sistem discret implic, n prima faz, discretizarea/conversia blocurilor continue iar apoi obinerea unui model discret echivalent, implementat prin fdt sau prin mrimi de stare.
2 z 1 s= Ts z + 1
166

Modelarea i simularea sistemelor neliniare de control


Sistemele neliniare sunt acele sisteme care nu satisfac principiul superpoziiei, adic nu sunt liniare i omogene ; De exemplu, pentru un semnal de intrare sinusoidal, semnalul de ieire al unui sistem neliniar (convertor static) va conine mai multe semnale de amplitudine i faz diferite fa de fundamental (armonici), n timp ce un sistem liniar va conine la ieire doar o mrime sinusoidal. Un model neliniar conine componente interne cum ar fi sursele controlate de tensiune sau curent, condensatoare, bobine sau elemente ce depind, de exemplu, de tensiunea aplicat la intrare. Elementele care au caracteristici neliniare se numesc regulatoare sau algoritmi de reglare, i pot fi ntlnite, de exemplu, la protecia sistemelor bazate pe scheme electrice cu relee, n interfeele de ieire ale echipamentelor de conducere numeric (convertoare numeric-analogice) etc.
167

Implementarea SRA cu elemente neliniare


n sistemele de reglare automat (SRA) elementele neliniare se ntlnesc ca blocuri intermediare ntre regulatoare i elementele de execuie. Blocul de saturaie modeleaz cel mai frecvent tip de neliniaritate, deoarece, n general domeniile de variaie ale mrimilor fizice sunt limitate (cuplurile dezvoltate de servomecanisme i motoare electrice, puterile surselor de alimentare, valorile absolute ale tensiunilor i curenilor etc). Un sistem neliniar poate fi modelat printr-o ecuaie diferenial de stare de forma:

dx = f ( x, t ); x(0) = x0 dt
168

Sistemul de reglare automat (SRA) are n componen un element neliniar (blocul de saturaie), utilizat pentru limitarea semnalului de intrare al unui servomecanism, modelat printr-o funcie de transfer cu poli i zerouri descris de relaia:
10( s + 10) ( s + 10) H (s) = ( s + 1) ( s + 0.3 + i ) ( s + 0.3 i )
169

Modelarea i implementarea elementelor de circuit neliniare


Modelarea elementelor neliniare de circuit (rezisten variabil, inductan de saturaie) se poate realiza prin utilizarea blocurilor Look-up-table, pentru implementarea vectorilor de intrare-ieire, care caracterizeaz funcionarea elementelor respective, sau prin utilizarea unui bloc neliniar din biblioteca Discontinuities, cum ar fi: Saturation, DeadZone, Relay etc. Dac se cunoate expresia analitic de variaie a parametrilor (de ex. I=f(U)), modelarea elementelor neliniare se poate face direct prin utilizarea unui bloc Fcn, n interiorul cruia se introduce ecuaia respectiv. Biblioteca SimPowerSystems furnizeaz o colecie vast de modele neliniare.
170

Modelarea unei inductane variabile


Pentru modelarea unei inductane variabile se pleac de la ecuaiile de definiie:


di d u = L = dt dt

= u dt

i=

L( )

Curentul care trece prin bobin este o funcie neliniar a fluxului de dispersie (legtur), care depinde de tensiunea care cade la bornele acesteia. De aceea modelul unei inductane neliniare poate fi implementat ca o surs controlat de curent, ca n figura:

171

Implementarea inductanei neliniare in Simulink

Pentru implementarea caracteristicii neliniare i=f() s-a utilizat un bloc Look-up-table din biblioteca Look-up-tables a nucleului de baz al Simulinkului, n interiorul cruia s-au setat parametrii de intrare-ieire descrii de figura 6.28: Vector of input values (fluxul): [-1.25 -1 1 1.25]*(120*sqrt(2)/(2*pi*60)), Vector of output values (curentul): [-2 -1 1 2]*(120*sqrt(2)/(2*pi*60)). 172

Modelarea circuitelor electrice


Pentru modelarea circuitelor electrice n Simulink, se pleac de la ecuaiile matematice de definiie obinute prin aplicarea teoremelor i legilor din electrotehnic, care se aranjeaz ntr-o form convenabil implementrii, n funcie de mrimile de intrare stare ieire (MM-ISI). Implementarea circuitelor electrice se poate face i prin funcii de transfer, mrimi de stare sau utiliznd blocurile bibliotecii SimPowerSystems. Dup implementarea schemei bloc a circuitului electric, se seteaz corespunztor fiecare parametru din interiorul blocului respectiv, iar apoi se alege metoda de integrare numeric i se trece la simularea rspunsului dinamic al circuitului. 173

Exemplul urmtor ilustreaz implementarea n Simulink a unui circuit electric RL alimentat de la o surs de tensiune alternativ i simularea regimului tranzitoriu precum i staionar al acestuia.

di Uca = i R + L ;i(0) = i0 dt
1 i(t ) = (U ca i R)dt + i(0) L0
t

174

Exemplu: S se implementeze n Simulink prin fdt modelul matematic (MM) al unui circuit RLC serie i al unui circuit RLC paralel, iar apoi s se simuleze rspunsul treapt aplicat la t=0, dac R=1.5, L=2 i C=2.

Circuitele electrice pot fi implementate n Simulink mult mai simplu prin reducerea ecuaiilor matematice la funcii de transfer (fdt) sau la MM-ISI. Aceast metod de implementare se poate utiliza doar atunci cnd parametrii circuitului sunt constani. Soluie: n ambele cazuri, un circuit electric RLC poate fi implementat ca un sistem de ordinul doi, care este stabil pentru valori reale pozitive ale parametrilor R, L i C. Funcia de transfer a circuitului serie si paralel RLC utilizat ca filtru de reea (filtru trece jos), are forma:

1/ LC G(s) = 2 s + s R/ L +1/ LC

1/ LC G(s) = 2 s +s1/ RC+1/ LC

175

Implementarea in Simulink a unui circuit RLC serie si paralel prin fdt

176

Biblioteca SimPowerSystems(SPS)

Setul de blocuri din biblioteca SimPowerSystems extinde bibliotecile Simulinkului cu blocuri dedicate modelrii, simulrii i analizei circuitelor electrice, mainilor i acionrilor electrice, convertoarelor statice i a sistemelor energetice de putere; Biblioteca SimPowerSystems poate fi utilizat mpreun cu biblioteca Simulink standard pentru a construi diferite diagrame bloc prin conectarea elementelor unui sistem dinamic (acionare electric) cu diferii algoritmi de control n scopul studiului diferitelor strategii de comand i efectele acestora asupra ntregului sistem energetic de putere.
177

Caracteristicile Bibliotecii SimPowerSystems


Modeleaz i simuleaz circuitele electrice i electronice utiliznd simboluri standard, cum ar fi: rezistorul, bobina, condensatorul sau dioda, tiristoare, tranzistoare etc; Furnizeaz blocuri care modeleaz diferite tipuri de maini electrice (mcc, maina de inducie, maina sincron), convertoare statice (redresoare n punte, invertoare); Furnizeaz blocuri pentru modelarea unui sistem energetic complet de putere (Transport, Distributie); Utilizeaz metoda de discretizare a unui sistem dinamic pentru a crete viteza de execuie a unei simulri; Permite diferite metode de analiz a unui sistem (circuit electric) n vederea obinerii MM-ISI i 178 calculeaz transferul de putere.

Biblioteca SimPowerSystems(versiunea 6.5) coninea nou biblioteci cu componente electrice i electronice (powerlib):

179

Analiza sistemelor in SimPowerSystems(SPS)


Afieaza tensiunea i curentul n regim staionar (Interfaa grafic interactiv (GUI) afieaz valorile curenilor i tensiunilor msurate n regim staionar i toate variabilele mrimilor de stare, incluznd curenii prin bobine i tensiunile la bornele condensatoarelor); Afieaza i modifica valorile iniiale ale mrimilor de stare; Calculeaza circulaia de putere i iniializeaza parametrii unei maini electrice; Genereaza un raport care include calcularea mrimilor de regim staionar. Cu ajutorul bibliotecii SimPowerSystems se pot analiza diferite configuraii de circuite electrice i se pot calcula modelele matematice echivalente ale mrimilor de stare (MM-ISI) fr sa fie necesar rularea unei simulri
180

Modelarea i simularea dispozitivelor electronice i a convertoarelor statice


Pachetul de programe MATLAB & Simulink este o unealt convenabil i pentru modelarea, simularea i analiza convertoarelor statice de comutaie, utiliznd att funcii/blocuri de stare (MM-ISI) ct i fdt/blocuri cu fdt. Biblioteca SimPowerSystems ofer un set de blocuri dedicate modelrii dispozitivelor electronice (dioda, tiristoare i tranzistoare) i a convertoarelor statice (redresoare i invertoare monofazate sau trifazate n punte) denumit Power Electronics

181

Suplimentar aceast bibliotec mai conine dou seturi de blocuri, Discrete Control blocks i Control blocks, avnd n componen att blocuri dedicate controlului convertoarelor statice ct i diferitelor configuraii de filtre i regulatoare discrete:

182

Diferite configuraii de blocuri dedicate controlului convertoarelor statice si filtre i regulatoare discrete

183

184

185

186

187

188

Modelarea si simularea acionrilor cu MCC


In general un sistem electromecanic (acionare electrica) are ca marimi de intrare - tensiunea si cuplul mecanic rezistent, ca marimi de stare tensiunea electromotoare indusa, curentul, fluxul, rezistente, inductane sau capacitai, iar ca mrimi de ieire turaia, cuplul electromagnetic sau poziia. Etapele de modelare si simulare ale ME sunt:
Stabilirea variabilelor independente si asociate; Stabilirea funciilor de stare (relaiile dintre mrimi); Scrierea ecuaiilor de definiie; Rezolvarea ecuaiilor (prin metode analitice si numerice); Implementarea modelului matematic; 189 Simularea diferitelor regimuri de functionare.

Modelarea MCC cu excitaie separata


MCC cu excitaie separata se poate utiliza ca servomotor, controlul miscarii realizndu-se att prin indus (rotor) cat si prin infasurarea de excitaie. Reglajul prin indus utilizeaz ca semnal de comanda tensiunea la bornele masinii (Ua) la un flux sau curent de excitaie constant (IE=ct, =ct), iar reglajul prin excitaie reprezint variaia curentului din infasurarea de excitaie cu tensiunea din indus constanta (Ua=ct). Ecuaiile de definiie ale MCC (modelul matematic al masinii) cu excitaie separata se utilizeaz frecvent in analiza sistemelor de reglare automata (SRA). Pentru a modela o maina de curent continuu (MCC) se pleac de la ecuaia volt-amper si de la ecuaia de micare. 190

dIa Ua = Ia RT + La +Ue dt
d M em M R = J dt

Ue = ka
Mem = ka Ia
1 (t ) = (M em M R ) dt + (0) J0
191
t

1 Ia(t) = (Ua Ia RT Ue)dt+Ia(0) La 0

Implementarea MM al MCC in Simulink

192

Simularea pornirii in sarcina a unei MCC

193

Pentru a simplifica implementarea modelului matematic al MCC cu excitaie separata si pentru a evidenia mrimile de intrare ieire ale modelului, ecuaiile de definiie pot fi exprimate in unitati relative (u.r.) si implementate in Simulink prin utilizarea blocurilor Fcn, din libraria User-Defined Functions. In exemplul urmtor se prezint implementarea modelului matematic al MCC cu excitaie separata lund in calcul si constantele de timp ale mainii si avnd parametrii exprimai in u.r.: Exemplul : Sa se implementeze MM al MCC cu excitatie separata, cu parametrii exprimai in u.r. si avnd ca mrimi de intrare: tensiunea indusului-ua, tensiunea aplicata infasurarii de excitatie-ue si cuplul rezistent la arborele masinii-Mr, iar ca mrimi de ieire: curentul prin rotor ia, curentul din infasurarea de excitatie - ie, cuplul electromagnetic Mem si turatia - n.
Sa se simuleze o pornire in regim de gol, o ncrcare si modificarea turaiei prin slbire de cmp, reprezentnd grafic 194 mrimile de ieire ale sistemului, stiind ca Ta=0.1, TE=0.1 si Tm=0.3.

Implementarea MCC cu excitaie separata lund in considerare constantele de timp ale mainii

La J Ra LE Ta = ;TE = ;Tm = 2 2 Ra RE k

di a 1 = (u a i a i E dt Ta di E 1 = (u E i E dt TE

)
R

d 1 = (i a i E M dt Tm

195

196

Modelul matematic al MCC implementat prin funcii de transfer


Modelul matematic al MCC poate fi implementat in Simulink si prin funcii de transfer (fdt) utiliznd Transformata Laplace S-a notat cu ke-constanta corespunztoare tensiunii mainii, cu km-constanta cuplului mainii. In SI cele doua constante sunt numeric egale, dupa cum rezulta si din ecuaiile puterilor electrica si mecanica (Pe=Pm). Lund in considerare si constantele de timp electrice (Ta, TE) si mecanica (Tm) si notand kM=km* si kE=ke*, se pot obine funciile de transfer ale modelului matematic al MCC, corespunztoare 197 reglajului prin indus si excitaie:

U a ( s ) = I a ( s ) (R a + s L a ) + U e ( s ) U e (s) = ke (s) M em ( s ) = k m I a ( s ) = I E ( s ) I a ( s ) M em ( s ) = M R ( s ) + J ( s ) s U E (s) = (RE + s LE ) I E (s)


F ( s ) = f (t ) e st dt
0

Ra + s La kM (1+ s Ta ) (s) H2 (s) = |Ua (s)=0 = = 2 MR (s) s J (Ra + s La ) + kM kE s Tm Ta + s Tm +1

kM 1 (s) |MR (s)=0 = H1(s) = = Ua (s) s J (Ra + s La ) + kM kE kE s2 Tm Ta + s Tm +1

k E k a (1 + s T a ) (s) H 3 (s) = |U a ( s ) = 0 = U e (s) (1 + s T E ) 1 + s T m + s 2 T m T a

H 4 (s) =

kM (s) | I a ( s )=0 = (1 + s T m ) (1 + s T E ) U e (s)

198

Exemplu: Sa se modeleze un servomotor de CC cu magneti permaneni prin fdt. Sa se simuleze pornirea MCC in sarcina (MR=0.35 u.r.) si reversarea brusca a tensiunii la borne, stiind ca Ta=4.05 ms si Tm=11.7 ms, kE=53 V / 1000 rpm, kM=0.5 Nm / A.

Ra +sL kM a (s) = Ua (s) MR(s) (Ra +s La ) sJ+kM kE (Ra +s La ) sJ+kM kE

199

200

Simularea unei porniri in sarcina si reversarea brusca a tensiunii la borne

201

Pornirea cu rezistoare si frnarea dinamica


Pornirea MCC se poate realiza prin:


conectarea directa la reea, modificarea tensiunii de alimentare (cresterea progresiva prin trepte de tensiune sau prin alimentarea prin convertoare statice) cu rezistoare (rezistenta se modifica in trepte).

Frnarea MCC poate fi:


recuperativa, dinamica (reostatica) in contracurent (conexiuni contrare).

Exemplul urmtor va prezenta o pornire a MCC cu excitaie separata cu un starter rezistiv si o frnare dinamica. La pornirea cu rezistoare rezistenta se va modifica in trei trepte pana cnd maina va ajunge la turaia nominala. Franarea dinamica (reostatica) se realizeaz prin deconectarea indusului (rotorului) de la reea si conectarea lui peste un rezistor.
202

203

204

205

Acionri reversibile cu MCC cu excitatie separata si redresoare comandate


O acionare electrica reversibila trebuie sa asigure funcionarea, cel puin in regim de motor, in ambele sensuri de rotaie. Daca maina de curent continuu este alimentata printr-un redresor comandat, care furnizeaz ambele polariti ale tensiunii redresate medii, MCC poate funciona att in regim de motor cat si in regim de frn recuperativ, caz in care convertorul devine invertor. MCC funcioneaz ca motor in cadranul 1 al caracteristicii mecanice (Mem=f()) iar ca frn recuperativa in cadranul 4. Frnarea recuperativa (generator pe reea) se realizeaz atunci cnd Ue>Ua si Ia=-Ia iar turaia este 206 mai mare dect valoarea nominala de mers in gol.

Schema de reglare a vitezei (turatiei) acionrii electrice reprezint un sistem de reglare automata (SRA) cu bucla nchis de reglare, care include si o bucla de reglare a curentului din indus MCC cu excitaie separata va funciona att in regim de motor cat si in regim de frn recuperativa, fiind alimentata de la un convertor bialternan (redresor in punte) de patru cadrane prin care se regleaz tensiunea de alimentare a indusului masinii

207

Schema bloc de reglare implementata in Simulink

208

Simularea reg. de motor si frn recuperativ a unei actionri reversibile cu MCC si redresor comandat

209

Reglarea vitezei unei MCC utiliznd controlul in cascada


Reglarea vitezei (turaiei) sau a poziiei unui servomotor de curent continuu se poate realiza ca in figura urmtoare. Schema bloc din figura urmtoare este o schema de reglare a turaiei in cascada avnd o bucla interna de reglare a cuplului electromagnetic sau a curentului din indus. Regulatoarele de turaie si de cuplu pot fi de tip PI, cel mai frecvent, sau de tip PID. In acest caz maina de curent continuu este alimentata printr-un convertor de cc-cc (chopper), care poate conine un tiristor GTO in paralel cu o 210 dioda.

Schema bloc de reglare a turaiei in cascada utiliznd o bucla interna de reglare a cuplului electromagnetic

211

212

213

214

215

Final Conclusion

216