Documente Academic
Documente Profesional
Documente Cultură
Laborator nr 1
Introducere in MATLAB
1. Scopul lucrării
Prezentarea principalelor facilitati ale mediului de modelare, programare si
simulare MATLAB-SIMULINK.
2. Notiuni teoretice
2. 1. Prezentare generală
Numele MATLAB provine de la Matrix laboratory
Firma producătoare este The MathWorks, Inc., SUA
Pagina oficiala a producatorului software este www.mathworks.com
1
Control System Toolbox – sisteme de control;
Robust Control Toolbox – control robust;
Optimization Toolbox – optimizare;
Neural Network Toolbox – reţele neurale;
Symbolic Math Toolbox – matematică simbolistică;
Fuzzy Logic Toolbox – logică fuzzy.
Acest mediu de programare dispune de o notaţie simplistă - nu există o sintaxă
complicată de comenzi, care să trebuiască să fie învăţată cu greutate. Aceasta favorizează
concentrarea directă pe problemele respective şi nu pe aspectele tehnice privind programarea.
Prin biblioteca matematică cuprinzătoare a MATLAB-ului, sunt puse la dispoziţia
utilizatorului peste 500 de funcţii matematice, statistice, ştiinţifice şi tehnice.
MATLAB-ul oferă o viteză mare de calcul, deoarece codificarea sa în C a fost atent
optimizată, ciclurile interne principale fiind prelucrate în limbaj de asamblare. De aceea
MATLAB are avantaje importante, atât faţă de alte pachete software interactive pentru
aplicaţii matematice, cât şi faţă de subprogramele C corespunzătoare.
Putem efectua diverse calcule numerice cu ajutorul MATLAB-ului, dintre care amintim:
matematică generală:
-operaţii cu matrice şi câmpuri de date;
-operatori relaţionali şi logici;
-funcţii trigonometrice şi alte funcţii elementare;
-aritmetica polinomială;
algebră liniară şi funcţii de matrice:
-analiza matriceală, logaritmi, exponenţiale, determinanţi, inverse;
-sisteme de ecuaţii liniare;
-valori proprii, descompuneri după valori singulare;
-construirea de matrice;
-operaţii cu matrice;
analiză de date şi transformări Fourier;
metode numerice neliniare;
programare.
2
Figura 1. Fereastra de comandă a MATLAB-ului
În ferestrele grafice (vezi fig. 2), MATLAB-ul trasează graficele cu ajutorul funcţiilor
predefinite. O serie de alte ferestre grafice sunt disponibile din bibliotecile de funcţii speciale,
cele ale Simulink-ului sau ale altor obiecte predefinite.
Versiunea MATLAB-ului conţine un ansamblu format din diferite ferestre (vezi fig. 3),
pentru a vizualiza în acelaşi timp comenzile din consolă, istoricul comenzilor din sesiunea
curentă, precum şi din cele anterioare, ca şi fereastra spaţiului de lucru (Workspace), fereastra
care afişează proprietăţile variabilelor utilizate în sesiunea de lucru curentă.
3
Figura 3. Fereastra principală a MATLAB-ului
În sesiunile de lucru ale pachetului de programe MATLAB, foloseste o serie de fişiere,
descrise în cele ce urmează:
Fişierele cu extensia M sunt fişiere ce conţin linii de comandă şi pot fi apelate în
consola MATLAB pentru a executa setul de comenzi conţinute în acestea;
Fişierele cu extensia P reprezintă versiunea predefinită a fişierelor de tip M;
Fişierele cu extensia MDL sunt fişiere reprezentând modele Simulink;
Fişierele cu extensia MEX sunt module executabile utilizate în MATLAB şi create
plecând de la surse în C sau Fortran;
Fişierele cu extensia MAT sunt fişierele utilizate pentru importul sau exportul de
date în sau dinspre MATLAB.
Componenta Simulink a MATLAB-ului este o extensie grafică a acestuia şi permite
lucrul cu scheme bloc pentru modelarea şi simularea sistemelor. La rândul său, aceasta
conţine o serie de colecţii de obiecte, grupate după funcţionalitatea lor în biblioteca Simulink
Library. Pentru a deschide această bibliotecă, se apelează din linia de comandă “simulink”.
Pentru mai multe detalii despre această aplicaţie, deschideţi pagina Programul Simulink.
MATLAB-ul permite crearea de interfeţe utilizator (GUI) personalizate, prin apelarea
funcţiei “guide” în linia de commandă. Se va deschide o fereastră din care putem alege una
dintre mai multe variante.
Există două moduri posibile de funcţionare: modul interactiv şi modul executiv. În
modul interactiv, MATLAB-ul execută instrucţiuni care sunt date de către utilizator, iar în
modul executiv sunt executate, linie cu linie, programele scris într-un fişier M (sau P) sau într-
un fişier executabil de tip MEX.
4
MATLAB cuprinde o serie de programe specifice de aplicaţii, aşa-numitele "toolboxes".
Acestea reprezintă biblioteci de funcţii MATLAB care adaptează mediul de lucru pentru
diferite probleme şi diverse domenii de utilizare.
Bibliotecile combină avantajele software-urilor gata produse (fabricate) cu
productivitatea şi flexibilitatea inerente unui mediu tehnic de calcul. Bibliotecile sunt
disponibile pentru toate platformele pe care rulează MATLAB (Unix, Windows).
Ca sistem deschis, MATLAB asigură accesul la codul sursă al bibliotecilor, astfel încât
algoritmii şi funcţiile să poată fi examinate, adaptate şi extinse pentru a corespunde
necesităţilor.
Astfel, metodele de optimizare şi funcţiile de la reţele neuronale pot fi folosite în
rezolvarea problemelor complexe de prelucrare a semnalelor, iar rezultatele pot fi reprezentate
sub forma unui grafic în culori cu trei dimensiuni, toate acestea realizându-se într-un singur
mediu unitar.
5
Sunt folosite totodată şi o serie de funcţii de control a sistemului de calcul pe care
rulează MATLAB-ul:
clock - funcţie pentru citirea ceasului calculatorului;
cputime - funcţie pentru determinarea timpului de calcul al microprocesorului ;
date - funcţie pentru citirea datei;
etime - funcţie pentru cronometrarea intervalului de timp între două
evenimente;
tic, toc - funcţii pentru pornirea şi oprirea unui cronometru.
Definirea variabilelor
În MATLAB nu există instrucţiuni pentru declararea sau dimensionarea unei variabile.
O variabilă nouă se poate defini în moduri diferite, atribuindui-se direct o valoare numerică
(singulară, vector, matrice, şir de caractere, etc) sau prin expresia sa matematică.
EXEMPLUL 1. Mai jos, este atribuită o valoare reală variabilei ts, lui v îi este atribuit un
vector de tip linie cu patru componente, iar lui text, un şir de caractere:
>> ts=0.85
ts =
0.8500
>> v=[1 6 3 0]
v=
1 6 3 0
>> text='buna'
text =
buna
Dacă variabila există deja, MATLAB-ul schimbă conţinutul şi dacă este necesar, realocă mai
mult spaţiu în memorie.
Variabilele astfel definite sunt stocate în spaţiul de lucru şi pot fi folosite în calculele
ulterioare. Afişarea unei variabile din spaţiul de lucru se realizează prin tastarea în linia de
comandă a numelui acesteia.
6
Figura 5. Informaţii despre spaţiul de lucru (Workspace-ul)
>> ts
ts =
0.8500
Rezultatul unei instrucţiuni este afişat din start. Dacă se doreşte ca instrucţiunea să fie
executată fără afişarea rezultatului trebuie adăugat caracterul ";" la sfârşitul liniei.
>> A=[1 4 7; 3 9 2]
A=
1 4 7
3 9 2
Comanda următoare are rolul de a returna elementul de pe prima linie şi a doua coloană al
matricei A:
>> A(1,2)
ans =
4
Expresiile utilizează operatori aritmetici uzuali:
+ Adunare
7
- Scădere
* Multiplicare
/ Împărţire
\ Împărţire la stânga
^ Ridicarea la o putere
Operaţii cu matrice
Fie X şi Y două matrice. Operaţiile executate în MATLAB sunt ilustrate în cele ce
urmează:
1) Adunarea şi scăderea sunt definite în cazul în care matricele au aceeaşi
dimensiune.
"A=X+Y;"
"B=X-Y;"
2) Înmulţirea este definită atunci când matricea X are dimensiunea m*n, iar Y,
dimensiunea n*p:
"C=X*Y;"
3) Împărţirea la stânga:
A=
1.0000 3.0000 5.0000
0 6.0000 2.0000
-1.0000 0.7000 4.0000
>> det(A)
8
ans =
46.6000
ans =
7 10
15 22
EXEMPLUL 8. Calculul valorilor proprii ale unei matrice A se realizează prin apelul
subrutinei eig, cu matricea trimisă ca parametru de intrare:
>> A = [1 2 3; 4 3 4; 7 6 5];
>> eig(A)
ans =
11.6847
-2.0000
-0.6847
>> x = [4 3 7 9];
>> y = x.^2
y=
16 9 49 81
>> x.*y
ans =
64 27 343 729
Operaţia de concatenare
Operatorul […] permite combinarea de matrice sau de vectori între ele în scopul
formării unor matrice sau vectori mai mari.
9
EXEMPLUL 10. Operaţii de concatenare:
>> x = [4 3 7];
>> y = x.^2;
>> z = [x y]
z=
4 3 7 16 9 49
>> z = [x; y]
z=
4 3 7
16 9 49
Vectorizarea
10
Pentru a obţine o viteză de calcul mare, este foarte importantă aşa-numita vectorizare a
algoritmilor în fişierele MATLAB. Acolo unde alte limbaje folosesc bucle de tip for sau DO,
MATLAB-ul poate utiliza operaţii matriceale sau vectoriale.
Un exemplu simplu este următorul:
for x = 1:100
y(x) = sin(x);
end
plot(x,y);
Versiunea vectorizată a aceluiaşi program este
x = 0:1:100;
y = sin(x);
plot(x,y);
Operatorul :
Expresia
A(1:k,j)
Se referă la primele k elemente ale coloanei j a lui A.
Dacă este utilizat fara valori operatorul : atunci înseamnă că ne referim la toate
elementele unei linii sau coloane
Pentru a trasa graficul functiei de mai sus se introduc urmatoarele comenzi in fereastra
grafic Command Window:
>> n=-2:0.1:2
>> plot (n, logsig(n),'r');grid
11
Se obtine urmatoarea reprezentarea grafica din figura 6, unde se observa o serie de
instrumente ale editorului grafic din Matlab, cu ajutorul carora se poate edita si personaliza
graficul si anume :
- se poate introduce denumirea abscisei x si a ordonatei y (modifica font, culoare, marime, tip
de font etc.)
- se poate modifica background-ul graficului, tipul si marimea liniei de reprezentare a
graficului
- se poate da un titlu graficului
- se pot introduce sageti cu legende
Graficul poate fi salvat in memorie ca un fisier cu extensia .fig, putand fi transportat
intr-un document word, intr-o prezentare power point sau poate fi editat.
Atunci când funcţia plot este utilizată cu un singur argument de tip matrice:
plot(Y)
12
va fi realizat un grafic pentru fiecare coloană a matricii, cu axa x reprezentând indexul de linie
1:m, cu m numărul liniilor din Y.
Comanda plotyy permite crearea unor grafice pentru două seturi de date şi cu
reprezentare dublă a axei Y, pe partea stângă şi pe partea dreaptă.
MATLAB-ul dispune de mai multe tehnici de interpolare, alegerea unei metode sau alteia
făcându-se în funcţie de acurateţea necesară.
Generarea unei suprafeţe mesh fine pentru interpolare:
[xi,yi] = meshgrid(-3:0.25:3);
z = peaks(x,y);
surf(x,y,z)
Operatori aritmetici
+ Adunare : Operatorul două puncte
- Scădere .^ Putere
.* Înmulţire .' Transpusa
./ Împărţire la dreapta ' Transpusa complex conjugată
.\ Împărţire la stânga * Înmulţire de matrici
+ Plus unar / Împărţire matriceală la dreapta
- Minus unar \ Împărţire matriceală la stânga
^ Putere de matrice
care unul dintre ei este scalar. În acest caz MATLAB-ul aplică scalarul fiecărui element al
13
Operatori relaţionali
< Mai mic
<= Mai mic sau egal
> Mai mare
>= Mai mare sau egal
== Egal cu
~= Diferit de
Operatori logici
& AND (ŞI)
| OR (SAU)
~ NOT (NU)
Toate instrucţiunile de salt folosesc comanda end pentru a indica sfârşitul blocului
respectiv.
14
eventual prin underline. Daca nu se respecta aceste reguli fisierele nu pot fi executate, (ele pot
fi insa salvate).
Important! Căi de căutare
MATLAB-ul utilizează o cale de căutare (search path) pentru a găsi fişierele .m . Aceste
fişiere sunt organizate în directoare, din care unele sunt furnizate de MATLAB şi altele sunt
disponibile separat ca toolbox-uri.
Dacă de exemplu tastăm numele fis la prompterul MATLAB, interpreterul MATLAB va
face următoarea căutare:
1. Caută pe fis ca pe o variabilă.
2. Verifică dacă fis este o funcţie tip buit-in.
3. Caută în directorul curent fişierul numit fis.m.
4. Caută în directoarele aflate în calea de căutare fişierul fis.m.
Path Browser
MATLAB-ul furnizează şi un browser al căii de căutare (Path Browser) cu o interfaţă
grafică pentru vizualizarea şi schimbarea căii de căutare. Pentru startarea acestui browser se
utilizează pathtool, sau se selectează Set Path din meniul File, sau se face click pe
butonul Path Browser din toolbar.
3.Desfasurarea lucrarii
15
iar cand numarul r de randuri al lui P este mai mare decat numarul de coloane q
al lui P si coloanele lui P sunt independente, pseudoinversa poate fi calculata cu
formula:
k k 1
k k 0
P k – nr. de ordine din lista grupei ordonata alfabetic.
2k 2*k 0
k k 0
16