Documente Academic
Documente Profesional
Documente Cultură
Din punct de vedere structural MATLABul este realizat sub forma unui nucleu de bază,
cu interpretor propriu, în jurul căruia sunt construite aşa numitele toolboxuri (biblioteci).
MATLABul include aplicaţii specifice sau familii de caracteristici, dedicate unui anumit
domeniu, denumite TOOLBOXuri. Acestea sunt colecţii extinse de funcţii MATLAB, sub formă
de fişiere MATLAB (m-files), care dezvoltă mediul de programare de la o versiune la alta, şi care
permit învăţarea şi aplicarea unor tehnici specializate.
Informaţii specifice despre o anumită funcţie sau despre un director se pot obţine tastând
comanda:
help + „subiect”
vom obţine informaţii despre toate funcţiile matematice elementare: funcţiile trigonometrice (sin,
cos), exponenţiale (exp, log), complexe (real, imag) etc.
Dacă subiectul este un director, helpul afişează toate fişierele conţinute în acesta.
Se pot scrie linii cu informaţii ajutătoare (helpuri) pentru fişierele MATLAB (M-file)
sau pentru toolboxurile proprii construite de utilizator. Mai multe detalii vor fi prezentate în
capitolul următor.
12 Introducere în MATLAB & Simulink - 1
1.2.2. Instrucţiuni, funcţii şi operaţii de bază ale MATLABului.
Structura programelor MATLAB
a=20 – 2*5;
urmată de comanda „enter”, vom observa că în fereastra de comenzi nu se tipăreşte nimic, dar în
spaţiul de lucru (workspace) variabila este afişată
Simbolul două puncte (:) este unul dintre cei mai importanţi operatori ai MATLAB-
ului. Poate fi utilizat pentru a crea vectori şi matrice, pentru a specifica submatrice şi vectori şi
pentru a executa iteraţii. De exemplu comanda:
t1=1:6
1 2 3
Matricea A 4 5 6 poate fi introdusă în MATLAB cu una din cele două
7 8 9
secvenţe:
function[param_ieşire]=nume_funcţie(param_intrare)
1.2 – Noţiuni introductive despre MATLAB & Simulink 15
unde function este cuvântul cheie care declară fişierul ca fişier funcţie, nume_funcţie este numele
funcţiei, adică numele sub care se salvează fişierul fără extensie, param_ieşire reprezintă
parametrii de ieşire care trebuie separaţi prin virgulă şi cuprinşi între paranteze drepte (dacă
funcţia nu are parametrii de ieşire parantezele drepte şi semnul egal nu mai au sens), iar
param_intrare reprezintă parametrii de intrare, care trebuie, deasemenea, separaţi prin virgulă,
dar cuprinşi între paranteze rotunde.
Un fişier funcţie care are mai multe intrări şi ieşiri poate fi de forma:
function [x, y, z] = sfera(theta, phi, rho)
Dacă fişierul function nu conţine nici un argument de ieşire, atunci prima linie poate
avea forma:
function printresults(x)
sau se pot utiliza paranteze drepte goale, ca-n secvenţa de mai jos:
function [] = printresults(x)
% Media(x), este media elementelor unui vector, unde x este un vector
y=sum(x) / length(x) %linie cu instructiuni
După cum am menţionat şi anterior, linia cu comentarii începe cu semnul procent (%),
iar în cazul fişierelor function poate urma imediat după prima linie şi reprezintă helpul online al
fişierului respectiv.
Dacă fişierul funcţie (function) se apelează cu
help nume_funcţie
se vor afişa liniile care încep cu semnul % (comentariile), care sunt situate între prima linie, după
declararea funcţiei, şi prima linie cu instrucţiuni (prima linie fără comentarii) sau prima linie
liberă. În cazul exemplului de mai sus nu există decât o linie de comentarii.
Structura unui fişier function poate conţine instrucţiuni (comenzi) MATLAB de control,
funcţii MATLAB care realizează calcularea şi alocarea valorilor pentru mărimile de ieşire.
a)
b)
Fig. 1.2. a) Blocurile ataşate bibliotecii Simulink, din versiunea MATLAB 6.5.
şi b) modelarea unui amplificator cu rezultatul simulării, vizualizat cu ajutorul osciloscopului (blocul
Scope).
Pentru vizualizarea semnalelor, biblioteca Simulink conţine blocul Scope, după cum se
poate vedea şi în Fig. 1.2b), care reprezintă grafic mărimile de ieşire ale sistemului modelat, în
funcţie de timp. De asemenea, blocul Scope poate fi setat, astfel încât să afişeze o fereastră cu axe
multiple (Fig. 1.3 b), toate având acelaşi domeniu pentru vectorul timp, axele o-y fiind diferite.
Fereastra blocului Scope deţine un Toolbar care oferă posibilitatea de a modifica
parametrii interni, de a printa un semnal, de a modifica setarea axelor, de a obţine autoscalarea
acestora, sau pentru a obţine un bloc Scope flotant (Floating scope). Blocul Scope flotant este
identic cu blocul Scope, cu deosebirea că, pentru vizualizarea traiectoriei unui semnal, trebuie
definită mărimea respectivă, deoarece blocul flotant este autonom. Suplimentar, pentru ca
semnalul selectat să fie afişat, este necesar să se selecteze Signal storage reuse pe off (din meniul
Simulation Parameters la fereastra Advanced). Un alt bloc dedicat vizualizării semnalelor este
XY Graph. Acesta afişează o fereastră cu două axe X-Y, reprezentând grafic datele primei mărimi
de intrare (pe axa X), în funcţie de a doua mărime de intrare (axa Y). Acest bloc este util pentru
a examina limitele unei perioade sau datele a două mărimi de stare (de exemplu caracteristica
mecanică (M=f(n)) la o maşină electrică).
Pentru vizualizarea semnalului de ieşire, se rulează simularea prin accesarea din meniul
principal a comenzii start simulation (sau direct din Toolbar), după care prin dublu clic pe Scope
se vizualizează forma de undă rezultantă (Fig. 1.2 b).
O altă metodă de vizualizare a semnalelor constă în setarea parametrilor interni blocului
Scope (ParametersData historySave data to workspace) şi în alegerea numelui şi a
formatului în care datele vor fi salvate.
Prin utilizarea acestei metode datele pot fi salvate, după executarea simulării, în fereastra
de lucru (workspace) a MATLABului, în cazul nostru sub denumirea ScopeData în formatul
Array, iar apoi pot fi prelucrate cu funcţiile (comenzile) acestuia, prezentate în capitolul trei.
De exemplu, pentru reprezentarea grafică în MATLAB a semnalului rezultat, după
executarea simulării prin utilizarea comenzii:
plot(ScopeData(:,1),ScopeData(:,2)), grid
O a treia metodă constă în utilizarea unui bloc din biblioteca Simulink standard – To
Workspace, situat în sub-biblioteca Sinks, care salvează temporar datele (mărimile) modelului în
fereastra de lucru (workspace) a MATLABului, sub denumirea simout în formatul
18 Introducere în MATLAB & Simulink - 1
StructureWithTime, iar după rularea simulării pot fi reprezentate grafic ca şi în cazul precedent,
obţinându-se acelaşi grafic.
A patra metodă de vizualizare a semnalelor constă în utilizarea variabilelor existente în
fereastra MATLAB workspace, returnate după rularea unei simulări (return variables), şi a unui
bloc de ieşire out din subbiblioteca Ports & Subsystems. Această metodă permite salvarea
vectorului timp şi a mărimilor de stare şi de ieşire, prin selectarea parametrilor time, states, output
din meniul SimulationSimulation parametersWorkspace I/O. După executarea simulării, în
fereastra de lucru a MATLABului (workspace) vor apare mărimile tout şi yout, iar, dacă datele
au fost salvate în formatul Array, se poate obţine graficul simulării, utilizând comanda:
plot(tout, yout)
Datele obţinute în urma simulării pot fi salvate, în fereastra de lucru a MATLABului, în
unul din cele trei formate:
1. Structure with time – permite salvarea datelor în workspace, atât a vectorului timp
- tout cât şi a semnalelor de ieşire – xout, yout, xFinal. Pentru afişarea valorilor xout
şi yout, în fereastra de comandă (command window) a MATLABului, se tastează
„xout.signals.values” sau „yout.signals.values”, după care se pot reprezenta grafic
în funcţie de timp. Vectorul timp (tout) este un vector coloană a timpului de
simulare, iar signals reprezintă o structură alcătuită din două câmpuri: values şi
dimensions. Values poate fi tot un vector coloană, fiecare valoare, având un
corespondent pentru vectorul timp, sau poate fi un tablou matriceal (array), dacă
există mai multe semnale. Dimensions precizează dimensiunile (lungimea)
vectorului values;
2. Structure – acest format este identic cu cel precedent (Structure with time), cu
deosebirea că nu afişează timpul;
3. Array – afişează mărimile stocate în workspace, sub formă de tabel (matrice), având
pe prima coloană vectorul timp. Asta înseamnă că, dacă vom avea două semnale,
matricea din fereastra de lucru va conţine trei coloane. Datele pot fi salvate, atât sub
formă de vectori cât şi sub formă de tablouri matriceale.
Exemplul 1.1: Să se scrie un fişier de tip script care să calculeze amplitudinea şi faza
unei impedanţe (Z) de intrare a unui circuit, ştiind că:
5 j 6 4 j8
Z 4300
9 j2
a) b)
Fig. 1.3. a) Diagramele bloc ale modelului şi b) reprezentarea grafică în Simulink.