Curs MATLAB & Simulink
March 22, 2018 | Author: Victor Dobrescu | Category: N/A
Short Description
Materie ASIE...
Description
MODELARE ŞI SIMULARE ÎN MATLAB & Simulink (Algoritmi de simulare in Inginerie Electrica-ASIE)
Conf. dr. ing. Lucian MIHEŢ-POPA
Cuprinsul cursului – partea I z z z z
Introducere in MATLAB & Simulink Instrucţiuni, funcţii si operaţii de baza ale MATLABului Crearea graficelor. Reprezentări si funcţii grafice Achiziţia, interpolarea si aproximarea datelor – – –
z
Prelucrarea datelor si calcule statistice Aproximarea datelor prin metoda celor mai mici pătrate Analiza Fourier si FFT
Analiza circuitelor electrice si electronice – – – –
Analiza circuitelor electrice de cc si ca Răspunsul in domeniul timp si frecventa Metode de proiectare a RG-PID Tehnici de analiza a circuitelor electronice
2
Cuprinsul cursului – partea II z z
z z z
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 funcţionare; 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 Introducere in MATLAB & Simulink
1.
z z z z
Ce este MATLABul ? Lansarea in executie. Interfata MATLAB - utilizator Ce este Simulinkul ? Informatii ajutatoare ale MATLABului (Helpul online)
Instructiuni, functii si operatii de baza ale MATLABului
2.
– – – –
Structura programelor MATLAB: fisiere script si function Matrice si operatii matriceale Operatii si functii matematice uzuale Programarea MATLAB. Instructiuni si functii de control
Crearea graficelor. Reprezentari si functii grafice
3.
– – –
Reprezentări grafice elementare Reprezentări grafice tridimensionale 3D Crearea si controlul ferestrelor grafice 4
1.Introducere in MATLAB &Simulink 1.1. Ce este MATLABul? MATLAB =MATrix LABoratory z
z
z
MATLABul este un pachet de programe de înalta performanta dedicat calculului numeric, reprezentărilor grafice si evaluărilor tehnice. Integreaza calcule matriceale, analiza numerica, vizualizarea grafica si limbajul de programare intr-un mediu usor de utilizat, in care problemele si soluţiile sunt exprimate printr-un model matematic MATLABul este de fapt un sistem interactiv care a fost iniţial conceput astfel incat elementul de baza cu care operează sa fie matricea. 5
1.1. Facilitati ale MATLABului Cele mai importante facilitaţi oferite de MATLAB sunt: z Calcularea, evaluarea si analiza sistemelor (circuitelor electrice, acţionari electrice, SRA etc) z Dezvoltarea algoritmilor de control z Achiziţia, prelucrarea si analiza datelor z Simulare, modelare, programare z Vizualizare, reprezentare grafica si animaţie z Dezvoltarea unor aplicatii, bazate pe interfeţe grafice interactive (GUI) z 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 căruia sunt construite asa numitele toolboxuri. z MATLABul include aplicaţii specifice sau familii de caracteristici, dedicate unui anumit domeniu . z Acestea sunt colecţii extinse de funcţii MATLAB, sub forma de fişiere (m-files), care dezvolta mediul de programare de la o versiune la alta, si care permit invatarea si aplicarea unor tehnici specializate. z Principalele domenii in care aceste toolboxuri pot fi utilizate sunt descrise de (Fig. 1): z
7 Fig. 1. Lista principalelor toolboxuri ale versiunii MATLAB 6.5.
1.1. Structura MATLAB Pachetul de programe MATLAB conţine cinci parţi principale: z Mediul de dezvoltare (Development Environment): set de toolboxuri z Biblioteca cu functii matematice (The MATLAB Mathematical Function Library) : sum, sine etc z Limbajul MATLAB (The MATLAB Language): algoritmi, functii, structuri de control a datelor si caracteristici de programare; z Grafica (Graphics): functii dedicate reprezentarilor grafice in 2D si 3D; z Interfata cu un program de aplicatii (The MATLAB8 Application Program Interface-API)
1.2. Lansarea in execuţie. Interfaţa 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)
9
1.3. Ce este Simulinkul? z
SIMULINKul este un set de programe soft dedicat modelarii, simulării si analizei sistemelor dinamice.
Permite modelarea sistemelor liniare si neliniare atat in timp discret cat si in timp continuu sau hibride z Simulinkul are la bază programul MATLAB fiind o unealta a acestuia; Ca si extensie a MATLABului, Simulinkul conţine suplimentar mai multe caracteristici specifice ale sistemelor dinamice. z O diagrama bloc in Simulink reprezintă un model grafic al unui sistem dinamic, care conţine 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. z 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. z
10
1.3. Lansarea in executie a Simulinkului
Lansarea pachetului de programe Simulink se face din MATLAB in doua moduri: z prin accesarea pictogramei Simulink z sau din fereastra de comanda (command window) prin scrierea cuvantului „simulink”. Pe ecranul monitorului se va afişa fereastra librăriei simulink (simulink library browser); aceasta conţine toate instrumentele (toolboxes) şi toate blocurile nucleului de baza simulink (începând de la „continuous” şi sfârşind prin blocurile definite de utilizator („user-defined functions”), asa cum arata si figura 11
1.3. Facilitati Simulink Cele mai importante facilitaţi pe care le oferă Simulinkul sunt: z Modelarea, simularea si analiza sistemelor dinamice z Implementarea sistemelor liniare si neliniare z Construirea unor diagrame bloc (continue si discrete), utilizând biblioteca existentă sau crearea propriilor blocuri (librarii) z Vizualizarea mai multor ferestre in acelaşi timp si a mai multor variabile pe acelaşi grafic z Incorporarea unor programe scrise in C, C++, Ada, Fortran intr-un model de simulare dinamica utilizând librăria funcţiilor S (S-functions) z Implementarea hard si testarea diferitelor strategii de control 12
1.4. Informatii ajutatoare ale MATLABului (Helpul online) z
z z
z
z z
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 z
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
z
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.
z z z z z
14
Simbolul doua puncte (:) este unul dintre cei mai importanţi operatori ai MATLABului. Poate fi utilizat pentru a crea vectori si matrice, pentru a specifica submatrice si vectori si pentru a executa iteraţii. z De exemplu comanda: t1 = 1:6 va genera un vector linie conţinând numerele de la 1 la 6 avand incrementul unitate. MATLABul va genera rezultatul: z
t1 = 1 2 3 4 5 6 z 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 z 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); z 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 z
z
z
z
MATLABul lucrează fie in modul linie de comanda, situaţie in care fiecare linie este prelucrata imediat si rezultatele sunt afişate, fie in programe conţinute in fişiere. Fişierele ce conţin instrucţiuni MATLAB se numesc fişiere-m (au extensia .m). Aceste fişiere constau dintr-o succesiune de instrucţiuni cu posibilitatea apelării si altor fişiere – m si sunt fişiere text de tip ASCII. Un program MATLAB poate fi scris sub forma a doua tipuri de fişiere „script” si / sau „function”. Ambele tipuri sunt scrise in format ASCII (text) iar algoritmul care a fost implementat poate fi urmărit cu uşurinţa daca se cunosc convenţiile si sintaxa MATLAB. Aceste tipuri de fişiere (cu extensia .m) permit crearea unor funcţii noi care sa le completeze pe cele deja existente. Prin aceasta facilitate MATLABul poate fi extins la aplicaţii specifice utilizatorului care are, de asemenea, posibilitatea16 scrierii de noi proceduri.
In tabelul 1 se vor prezenta cateva functii MATLAB de control al fisierelor: Functia
Descrierea functiei
what
Listeaza fisierele cu extensia .m, .mat, .dat, .mex din directorul curent
who
Listeaza variabilele curente din memorie
whos
Listeaza variabilele curente din memorie, dimensiunile lor si tipul acestora
dir
Listeaza continutul directorului curent
cd
Returneaza sau schimba directorul curent
delete Sterge fisierul precizat de pe disc which +nume fisier
Returneaza calea in care este localizat fisierul
17
2.1.1. Fişiere script z
z z z z
Un fişier script este un fişier extern ferestrei de comenzi fiind plasat in directorul curent si care conţine o secvenţa de comenzi MATLAB Fişierele script sunt cele mai simple fişiere-m (cu extensia .m) deoarece ele nu au nici mărimi de intrare nici de ieşire. După execuţia unui fişier script, variabilele cu care acesta a operat raman stocate in spaţiul de lucru (workspace). Fişierele script lucrează cu date existente din workspace. De asemenea, ele pot crea date noi cu care sa opereze. Daca avem mai multe fişiere intr-un director este de dorit sa includem câteva comentarii (explicative) la începutul fiecărui 18 fişier creat.
2.1.1. Fisiere script. Exemplu z
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.
z
Solutie: Se creaza un fisier-m (M-file) cu numele amplitudine in care se scriu următoarele 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)) z
z
Scriind cuvântul amplitudine in fereastra de comenzi (command window) vom obtine următorul răspuns: 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 z z
z z
Daca prima linie a unui fişier – M conţine cuvântul „function”, fisierul respectiv este declarat ca fişier funcţie. Variabilele definite si manipulate in interiorul fişierului functie sunt localizate la nivelul acesteia. Prin urmare la terminarea execuţiei unei functii, in memoria calculatorului nu raman decât variabilele de ieşire ale acesteia. Un fişier funcţie diferă de unul script prin faptul ca poate lucra cu argumente (secvente ale functiei: intrări - ieşiri). Forma generala a primei linii a unui fişier function este:
function [param_iesire] = nume_functie (param_intrare) unde function este cuvântul cheie care declara fişierul ca fişier funcţie, nume_functie este numele functiei, adica numele sub care se salvează fişierul fara extensie, param_iesire reprezintă parametrii de ieşire care trebuie separaţi prin virgula si cuprinşi intre paranteze drepte (daca functia nu are parametrii de ieşire 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. z Un fişier funcţie care are mai multe intrari si iesiri poate fi de forma:
function [x, y, z] = sfera (theta, phi, rho) z
Daca fişierul function nu conţine nici un argument de iesire, atunci prima linie poate avea forma: 20 function printresults(x)
2.1.2. Fişiere function. Exemple z
Structura unui fisier function poate conţine instrucţiuni (comenzi) MATLAB de control, funcţii MATLAB care realizează calcularea si alocarea valorilor pentru marimile de iesire.
z
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; z Tastand urmatoarele linii in fereastra de comenzi: x = [1:10]; mean(x) z MATLABul va returna urmatorul raspuns: ans = 5.5000 z
21
2.1.2. Fişiere function. Exemple z
Exemplul 3: Sa se scrie un fisier function care sa calculeze rezistenta echivalenta a unor rezistoare conectate in serie.
z
Rezolvare: Se creaza un fisier cu numele echivalent.m, care are urmatoarea configuratie: function Re = echivalent(R)
z
z
z
% echivalent este un program funcţie care calculează rezistenta echivalenta a unor rezistoare conectate in serie, R fiind vectorul de intrare de lungime n iar Re este mărimea de ieşire, rezistenta echivalenta n = length(R); %numarul rezistoarelor Re = sum(R); %rezistenta echivalenta Sa presupunem ca dorim sa calculam rezistenta echivalenta a următoarelor rezistente conectate in serie, având valorile 10, 20, 15, 16 si 5 Ohmi. Tastând următoarele linii in fereastra de comenzi: R = [10 20 15 16 5]; Rserie=echivalent(R) Rezultatul obţinut va fi: Rserie = 66 22
2.2. Matrice si operaţii matriceale z z z
z
z z
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. Operaţiile matriceale cu tablouri (arrays) sunt operaţii aritmetice element cu element (intre elemente situate in aceeasi pozitie a tablourilor). Pentru efectuarea operaţiilor cu tablouri se folosesc aceeaşi operatori ca in operatiile cu scalari, precedati de semnul „.”, semn ce indica de fapt efectuarea operaţiilor element cu element. De exemplu operatorul de înmulţire 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) Încărcarea din fişiere de date externe 23
2.2. Matrice si operaţii matriceale z
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
z
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].
z
z z
In ambele cazuri se returnează:
⎡1 2 3⎤ A = ⎢⎢4 5 6⎥⎥ ⎢⎣7 8 9⎥⎦
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 obţine rezultatul: ans = 12 15 18 24
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. z Daca dorim sa adăugam o noua linie unei matrice, de exemplu matricei B, acest lucru se poate realiza tastând comanda: z z
– 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. z 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. z Utilizand functia eye, care se apeleaza cu una dintre sintaxele: I=eye(n), I=eye(m, n) sau I=eye(size(nume_matrice)) z
– se poate genera matricea identitate (matricea cu elementele de pe diagonala principala egale cu unu, iar toate celelalte elemente zero). z
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; z Solutie: Pentru a rezolva sistemul trifazat de curenti se utilizeaza comanda inv. z
– Se poate scrie un fişier MATLAB-script sau se pot introduce următoarele 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 ⎥⎥ z MATLABul genereaza urmatorul rezultat: ⎢⎣9 12 20 ⎥⎦ I = -3.6491
1.2807 1.4737 z
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 z
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
z
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 cunoaşterea limitelor intervalului (min, max) si a pasului de esantionare dintre doua elemente, sau numărul de elemente ale vectorului. z Daca se cunosc limitele intervalului si pasul dintre doua elemente ale vectorului X, cu instrucţiunea: X = min: pasul de eşantionare: max Se generează numărul de elemente ale vectorului rezultant N = [(max-min) / pas]. z 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 z Daca pasul este omis atunci valoarea acestuia este considerata egala cu unitatea. z De asemenea, se pot genera vectori cu pas logaritmic utilizând 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 z
2.3. Operaţii si funcţii matematice uzuale help elfun Pachetul de programe MATLAB conţine numeroase functii pentru operatii matematice fundamentale si pentru prelucrarea datelor z 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. z
29
2.3.1. Numere complexe z z
z
z
Numerele complexe sunt introduse in MATLAB utilizând variabilele i si j; Un număr 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 numărului complex z. Funcţia abs determina modulul elementelor unui vector sau a unei matrice iar funcţia angle calculează argumentul elementelor unui vector sau a unei matrice si se exprima in radiani. Funcţia real returnează partea reala a numărului complex, iar 30 imag returnează partea imaginara.
2.3.1. Numere complexe. Exemple Exemplul : Sa se calculeze amplitudinea si faza unei impedanţe (Z) de intrare a unui circuit, ştiind ca:
Z=
(5 + j6)(4 − j8) + 4∠300 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ă următorul rezultat: numărul complex Z in forma polara, cu amplitudinea si faza egale cu: Z_polar = 11.2039
9.7942
31
2.3.2. Funcţiile putere, radical, logaritm si exponenţiala z
z z z z
z
MATLABul dispune de doua functii pentru ridicarea la putere: – pow2: pentru a ridica cifra 2 la puterea n (2n) – ^: pentru a ridica un număr a la puterea n (an) Functia exp calculează exponenţiala (ex) Functia log si log10 calculeaza logaritmul natural (ln) si zecimal (lg) Functia sqrt calculează radicalul de ordinul 2 dintr-un număr Calculul radicalului de ordinul 2 dintr-un număr ( 9), poate utiliza functia putere sau funcţia radical, apelata cu sintaxa sqrt (9). Obs: Argumentul acestor funcţii poate fi o matrice, caz in care se operează element cu element, sau poate fi un număr 32 complex.
2.3.3. Funcţii trigonometrice Functiile trigonometrice se apelează cu sintaxa: x = nume_funcţie(argument) in care nume_functie este numele uneia dintre functiile trigonometrice prezentate in tabelul 6, argumentul este valoarea pentru care se evaluează funcţia, iar x este variabila in care se returneaza rezultatul. Obs: Daca argumentul este o matrice se folosesc operatori specifici tablourilor matriciale. z
Principalele funcţii trigonometrice z z z z z z z
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 z z
z
In MATLAB polinoamele sunt reprezentate ca un vector linie care conţine coeficienţii in ordine descrescătoare. 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 funcţii pentru calculele cu polinoame sunt: – – – – –
roots – calculează rădăcinile unui polinom poly – calculează coeficienţii unui polinom cu rădăcinile date polyder – calculează derivata polinoamelor polyfit – aproximează un set de date cu un polinom de gradul n residue – descompune in fracţii simple raportul a doua polinoame. 34
Programarea MATLAB. Instrucţiuni si funcţii de control z
z
z z
Programele MATLAB sunt scrise pentru a realiza paşi secvenţiali, operaţiile fiind realizate una după alta. In multe cazuri, insa, este necesara repetarea unui set de instrucţiuni atâta timp cat o condiţie este realizata si pentru alt set de instrucţiuni. Uneori este necesara repetarea unui grup de instrucţiuni de un anumit număr de ori. Instrucţiunile cu ajutorul cărora se poate realiza acest lucru sunt for si while. 35
Instructiuni si functii de control z
z
z
Instrucţiunea for este folosita pentru repetarea unui grup de instrucţiuni de un anumit număr de ori. Un contor de ciclu va tine evidenta numărului de repetări ale instrucţiunilor unui ciclu si il opreşte când contorul ajunge la valoarea precizata. Instrucţiunea while este folosita atunci când calculele efectuate cu un grup de instrucţiuni trebuie repetate pana când o anumita condiţie este îndeplinita. Numărul de iteratii nu este cunoscut iniţial. Ieşirea din ciclu se realizează la indeplinirea conditiei impuse, care este testata la începutul fiecărei iteraţii. Instructiunea if poate fi implementata simpla sau poate include si clauzele else sau elseif. Forma generala a unei instrucţiuni if este următoarea:
if expresie_logica grup_de_instrucţiuni
end z
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
Instrucţiunea for z
Instrucţiunea for permite repetarea unui grup de instrucţiuni dintr-o bucla, de un anumit număr de ori. Are următoarea structura generala:
for index = expresie grupul_de_instrucţiuni
end In care index este numele contorului, expresie este o matrice, un vector sau un scalar, iar grupul de instrucţiuni poate fi orice expresie(functie) MATLAB (de exemplu k = initial : pas : final). z
La folosirea buclei for trebuie respectate următoarele reguli: – – – – – –
z
z
indexul buclei for trebuie sa fie o variabila; daca expresia este o matrice goala, bucla nu se executa; se va trece la următoarea instrucţiune 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 atâtea ori de cate elemente are vectorul, de fiecare data indexul având valoarea egala cu următorul element al vectorului; daca expresia este o matrice, indexul va avea la fiecare iteraţie valorile conţinute in următoarea 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 utilizând instrucţiunea for pentru generarea unei matrice cu valorile corespunzătoare lui i = [1, 4] afişate pe coloane, ştiind ca y = [i 5i2 2i]. Rezolvare: Se scrie următoarea secvenţa 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 număr mare de calcule iterative, fara a defini de fiecare data valoarea unui parametru (variabila) când acesta (aceasta) se modifica, se utilizează instrucţiunea for. Exemplu: Sa se scrie un fişier script care sa utilizeze instrucţiunea for pentru a genera pătratul primelor 10 numere întregi si sa se afişeze rezultatul. Soluţie: Se scrie un fişier script cu următoarea secvenţa: for m = 1:10 x(m) = m^2; end disp(x) In exemplul anterior numărul de iteraţii a fost controlat de var.39m.
Descrierea instructiunii while z
z
Instrucţiunea while se utilizează pentru repetarea unui set de instrucţiuni, atâta timp cat o condiţie specificata este adevărata. Forma generala a acestei instructiuni este urmatoarea: while expresie grup_de_instructiuni 1 end grup_de_instructiuni 2
z
Grupul de instrucţiuni 1 se executa cat timp „expresie” este adevarata. La sfârşitul execuţiei instrucţiunii 1, expresie este retestata. Daca expresie este tot adevarata, grupul de instrucţiuni 1 se executa din nou. Daca expresie este falsa, programul iese din bucla while si trece la grupul de instrucţiuni 2. 40
Instructiunea while. Exemple Exemplu: Sa se scrie un program, utilizând bucla while, care calculează suma elementelor vectorului: x = [5 2 -9 10 -1 9 -1] pana când intalneste un număr 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
View more...
Comments