Sunteți pe pagina 1din 10

Informatica II

Calcul vectorial i matricial n Matlab

Vocabular si sintaxa Matlab


Structuri de date Matlab
Matlab paradigma functionala, calcul orientat vectorial i matricial
Instructiuni pentru controlul fluxului programului

Introducere
MATLAB, acronim al sintagmei Matrix laboratory, este un limbaj de programare i sistem de
dezvoltare pentru aplicaii tiinifice iinginereti, din diverse domenii. Este dezvoltat de The
MathWorks, Inc., SUA si utilizatori , beneficiind de o dezvoltare continua.
Aplicatii:
Matematic, calcul numeric i simbolic
Dezvoltarea algoritmilor
Modelare, simulare i testarea prototipurilor
Analiza i vizualizarea datelor
Grafica
Dezvoltarea de aplicaii, inclusiv GUI
S-a dezvoltat prin Toolbox-uri, care sunt colectii de functii (scripturi .m/ macroinstructiuni) . Ca
limbaj, este un limbaj de nivel nalt. Orientat spre calcul vectorial i matricial, Matricea fiind
structura fundamental pentru acest limbaj. Este un fimbaj orientat pe funcii, dispunnd de
funcii pentru orice operaie se dorete efectuat, funcii simple sau complexe aplicate matricilor,
ale cor elemente pot fi de acelai tip sou pot fi date eterogene, caz pentru care s-a introdus o nou
structur, celula. Vom avea deci matrici de celule. De asemenea limbajul dispune de instruciuni
de control al fluxului program, alte structuri de date, functii de intrare/ieire, avnd proprieti de
programare orientat pe obiecte.
Mediul matlab este organizat pe 6 directoare:
ops - Operators and special characters.
lang - Programming language constructs.
strfun - Character strings.
iofun - File input/output.
timefun - Time and dates.
datatypes - Data types and structures.

Mediul integrat de dezvoltare (IDE) Matlab


Pachetul Matlab conine:
1. limbajul MATLAB,
2. mediul de lucru MATLAB ce include facilitati pentru manevrarea variabilelor n spaiul de
lucru, importul/exportul de date, dezvoltarea, manipularea, editarea i depanarea fiierelor

MATLAB (.m) i a aplicaiilor MATLAB, organizate in directorul general - General purpose


commands ;
3. Handle Graphics , ce conine comenzi de nivel nalt pentru vizualizarea datelor bi i tridimensionale, procesarea imaginilor, animaie, prezentri grafice si comenzi de nivel sczut
pentru crearea unor interfee grafice GUI; organizate n 5 directoare:
graph2d -Two-dimensional graphs.
graph3d - Three-dimensional graphs.
Specgraph - Specialized graphs.
graphics - Handle Graphics.
uitools - Graphical user interface tools.
4. Biblioteca de funcii matematice , o colecie de algoritmi pentru funcii elementare (sinus,
cosinus etc.) si funcii complexe (inversarea de matrice, valori proprii, funcii Bessel, FFT etc.),
organizate n 8 directoare:
elmat - Elementary matrices and matrix manipulation.
elfun - Elementary math functions.
specfun - Specialized math functions.
matfun - Matrix functions numerical linear algebra.
datafun - data analysis and Fourier transforms.
polyfun - Interpolation and polynomials.
funfun - Function functions and ODE solvers.
sparfun - Sparse matrices.,
5. Interfaa de aplicaii program a MATLAB-ului (API), o bibliotec care permite scrierea de
programe n C sau Fortran care interacioneaz cu MATLAB-ul; include faciliti pentru apelarea
rutinelor din MATLAB, apelarea MATLAB-ului ca main de calcul, scrierea i citirea fiierelor
de tip .MAT .

Simulink
SIMULINK este un pachet software pentru modelarea, simularea i analiza sistemelor
dinamice. Pot fi modelate sisteme mecanice, electrice, etc., liniare, neliniare, continue, discrete,
hibride.
SIMULINK are interfa grafic utilizator (GUI) pentru
crearea modelelor sub forma unor diagrame construite din blocuri, pe baza unor tehnici
de tip click-and-drag realizate cu mouse-ul.
se evit formularea matematic laborioas (sistemele dinamice sunt de regul descrise de
ecuaii difereniale).
Real-time Workshop este un program care permite generarea de cod C pentru schemele bloc
create n SIMULINK i astfel permite rularea de aplicaii n timp real.

Vocabular i sintaxa Matlab


Cuvinte rezervate (Keywords) - 'break' , 'case', try catch, 'continue' ,'else, 'elseif, 'end, 'for'
'function, global, 'if, 'otherwise, 'persistent, 'return, 'switch, 'try, 'while, s.a.  sunt listate
cu ajutorul iskeyword.
Sintaxa generala functie nume functie si argumente, legare variabile prin instantiere:
variabila = expresie

unde expresia = niruire de operanzi i operatori; operanzii: nume de variabile, constante, nume
(sau apel) de funcii.
Matlab lucreaz n mod linie avnd la baz un interpretor (i nu compilator): fiecare instruciune
pe rnd este trimis interpretorului i evaluat.
Prin variabil MATLAB nelegem un nume care se asigneaz unei zone de memorie unde sunt
stocate valori. Prin nume citim/scriem valoarea din/n memorie, i folosim valoarea n expresii.
MATLAB dispune de trei tipuri de variabile:
locale,
globale
persistente.
MATLAB-ul nu necesit declararea dimensiunii variabilelor, deoarece la ntlnirea unui nou
nume de variabil genereaz automat variabila respectiv i aloc spaiul necesar de memorie.
Numele unei variabile este o liter, urmat de un numr orict de mare de litere, cifre sau
simboluri. Din nume numai primele 31 de caractere sunt folosite pentru identificare.
MATLAB-ul este case sensitive .

Operatori i funcii
Operatori aritmetici n cadrul expresiilor:
+ adunare, - scdere, , * multiplicare
/ mprire, \ mprire la stnga,^ ridicare la putere, ` transpusa unei matrice sau complex
conjugata unui numr complex, ( ) operatorul de specificare a ordinii de evaluare (cu prioritate
maxim)
Functii:
sunt un numr mare de funcii matematice elementare standard (abs, sqrt, exp, sin )  (help
elfun) si funcii matematice avansate (funcii Bessel, gama etc.), multe dintre acestea acceptnd
argumente complexe (help elmat / help specfun).
Functii built-in, fac parte din nucleul Matlab, compilate, au vitez de execuie sporit (accesul la
structura funciei nepermis).
Unele funcii sunt implementate ca fiiere MATLAB (M-files) i pot fi modificate.
Pentru a gsi calea spre codul surs a unei funcii MATLAB M-file folosi funcia which.
Functii constante: pi, Exp, i/j, Realmin, Realmax, Inf, NaN.
Este posibil suprascrierea lor.

Tipuri si structuri de date Matlab


Structura fundamental de dat, la baza produsului Matlab, este matricea.
Elementele matriceisunt de acelai tip de dat: ntreg sau real, logic, caracter, structur etc.
Tipurile structur i celule de tablouri stocheaz tipuri diferite de date n cmpurile lor.
Pot fi de asemenea dezvoltate tipuri noi de date proprii utilizatorului folosind clase Matlab (user
classes i Java classes). Sunt 15 tipuri fundamentale de date (matrice sau tablou) variind de la
minim 0 x 0 elemente la n dimensionale.
Structura array, este vzut n Matlab ca tip de dat.

Structuri:

Exemple:
>>patient(1)
ans =
name: John Doe'
billing: 127.00
test: [3x3 double]
>> patient(1).test
ans =

Cell array:
Tabloul(matricea) de celule este folosit la stocarea indexat a datelor de tipuri diferite.
Celulele sunt cmpuri fr nume (dar indexate pentru a putea fi referite).
Exemplu:
A = {[1 4 3; 0 5 8; 7 2 9], 'Maria Rotariu' ; 3+7i, -pi : pi/4 : pi};
Se poate iniializa individual fiecare celul:
>>A(1,1) = {[1 4 3; 0 5 8; 7 2 9]}
>>A(1,2) = {'Maria Rotariu'};
Extindere tablou:
>>A(3,3) = {5};
>>A{1,1} = {[1 4 3; 0 5 8; 7 2 9]} se obine cell array pentru A{1,1}

Prioritatea operaiilor:
Ordinea de evaluare a unei expresii este dat de nivelele de precedena/prioritate ale operatorilor
implicati.
1. Paranteze ()
2. Transpusa (.'), putere (.^), complex conjugate transpose ('), matrice la putere (^)
3. plus unar (+), minus unar (-), negare logic (~)
4. nmulire (.*), mprire la dreapta (./), la stnga (.\), nmulire de matrice (*),
mprire matrice dreapta (/),mprire matrice stnga (\)
5. adunare (+), scdere (-)
6. operatorul dou punce (:)
7. mai mic (<), mai mic sau egal (<=), mai mare (>), mai mare sau egal (>=),
test egalitate (==), test diferit (~=)
8. AND (&)
9. OR (|)

Instruciuni pentru controlul derulrii unui program


-

if, if else, -I elseif

switch case otherwise

ciclu cu contor: for

- ciclu cu test iniial: while


while expresie
grup de instructiuni
end
expresie poate include operatori relationali:
==, <, >, <=, >=, sau ~=.
Exemplu: aproximarea Euler a ecuatiei diferentiale:
y=x-|y|, y(0)=1;
>> h = 0.001;
>> x = [0:h:2];
>> y = 0*x;
>> y(1) = 1;
>> i = 1;
>> size(x) ans = 1 2001
>> max(size(x)) ans = 2001
>> while(i<max(size(x)))
y(i+1) = y(i) + h*(x(i)-abs(y(i)));
i = i + 1;
end
>> plot(x,y,'go')
>> plot(x,y)
- break
Exemplu:
for i=1:10
a(i)=i*10
9

1.4

1.3

1.2

1.1

0.9

0.8

0.7

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

break
b(i)=a(i)+5
end
care calculeaza numai a(1), rezultnd:
a = 10
- continue
Instructiunea continue transfera controlul la urmatoarea iteratie din bucla for sau while
n care apare, sarind celelalte instructiuni ramase ntre aceasta si end.
Exemplu:
for i=1:10
a(i)=i*10
b(i)=a(i)+5 end
Secventa va calcula:
a=
10 20 30 40 50 60 70 80 90 100
b=
15 25 35 45 55 65 75 85 95 105
- return
Instructiunea return comanda o iesire normala din fisierul de tip .m (nume_fisier.m) catre
functia care l-a apelat sau catre tastatura.
Exemplu:
function d = det(A)
if isempty(A)
d = 1;
return
else
...
end

Bibliografie
1. Cleve Moler, Numerical Computing with MATLAB, Electronic Edition: The MathWorks, Inc., Natick,
MA, 2004, http://www.mathworks.com/moler.
2. Hunt, Brian R., Lipsman, Ronald L., Rosenberg, Jonathan M., A Guide to MATLAB for Beginners and
Experienced Users, Cambridge University Press, 2001.
3. Learning SIMULINK, The Mathworks, Student version, 2004.
4. MATLAB - The Language of Technical Computing, MATLAB 7, The MathWorks Inc., 2009.

10

S-ar putea să vă placă și