UI9 Matlab
UI9 Matlab
matlab
CUPRINS
9.1. Introducere
Obiective
• să realizeze programe în
matlab.
49
9.1. Introducere
MATLAB® = Limbaj de înaltă performanţă pentru proiectarea asistată de
calculator.
Domenii de utilizare:
• Dezvoltarea algoritmilor
MATLAB-ul a evoluat:
50
Sistemul MATLAB constă în cinci părţi principale:
• Limbajul MATLAB
• Handle Graphics®
Tabelul 9.1
Tabelul 9.2
general General purpose commands.
Tabelul 9.3
graph2d Two-dimensional graphs.
Graph3d Three-dimensional graphs.
Specgraph Specialized graphs.
Graphics Handle Graphics.
51
Uitools Graphical user interface tools.
Tabelul 9.4
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.
Pachetul SIMULINK
• SIMULINK® este un pachet software ataşat MATLAB-ului şi
reprezintă un sistem interactiv pentru simularea dinamicii sistemelor
neliniare (bineînţeles şi a celor liniare). Este conceput sub forma unei
interfeţe grafice care permite crearea unui model prin “trasarea”
schemei bloc a sistemului şi apoi simularea dinamicii sistemului.
52
Toolbox-urile MATLAB
Toolbox-urile reprezintă o familie de aplicaţii care permit învăţarea şi
aplicarea tehnologiilor specializate din diverse domenii. Aceste toolbox-uri
sunt colecţii de funcţii MATLAB (functions) (M-files) care extind mediul
MATLAB pentru rezolvarea unor clase particulare de probleme. Câteva din
cele mai utilizate aplicaţii sunt prezentate în figura următoare.
Figura 9.1
9.2. Expresii
MATLAB-ul lucrează cu expresii matematice ca şi celelalte limbaje de
programare, dar spre deosebire de majoritatea acestor limbaje, aceste expresii
implică la scară largă lucrul cu matrici.
• Variabile
53
• Numere
• Operatori
• Funcţii
Variabile
MATLAB-ul este case sensitive - face distincţie între literele mici şi cele
mari.
Exemplu:
» a = 30
Numere
Exemple:
3 -99 0.0001
1i -3.14159j 3e5i
Operatori
54
Tabelul 9.5
+ Adunare
- Scădere
* Multiplicare
/ Împărţire
\ Împărţire la stânga
^ Ridicarea la o putere
' Transpusa complex conjugată
( ) Operatorul de specificare a ordinii de evaluare
Funcţii
Există şi funcţii matematice avansate (funcţii Bessel, gama etc.), multe dintre
acestea acceptând argumente complexe.
» help elfun
» help specfun
» help elmat
O parte din funcţii (cum ar fi sqrt, sin) sunt de tip built-in, adică sunt o
parte a nucleului MATLAB, au o mare eficienţă, dar detaliile constructive nu
sunt accesibile utilizatorului.
55
Numele funcţiilor nu sunt rezervate şi deci este posibilă suprascrierea lor.
Exemplu:
eps = 1.e-6
» clear eps
» rho = (1+sqrt(5))/2
rho =
1.6180
» a = abs(3+4i)
a =
» z = sqrt(besselk(4/3,rho-i))
z =
0.3730+ 0.3214i
» huge = exp(log(realmax))
huge =
1.7977e+308
» toobig = pi*huge
toobig =
Inf
56
9.3. Help on-line, formatul datelor, opţiuni de salvare
Help on-line
Pentru rularea MATLAB pe un PC trebuie pur şi simplu executat un dublu
click cu mouse-ul pe icon-ul MATLAB. Dacă sistemul de operare nu este de
tip Windows (este de tip UNIX) trebuie tastat matlab după prompter-ul
sistemului de operare.
Exemple:
exp Exponential.
57
For complex Z=X+i*Y, exp(Z) =
exp(X)*(COS(Y)+i*SIN(Y)).
y yellow s square
k black d diamond
^ triangle (up)
p pentagram
h hexagram
plot(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines
the plots defined by the (X,Y,S) triples, where the
X's and Y's are vectors or matrices and the S's are
strings.
59
Note that RGB colors in the ColorOrder property
may differ from similarly-named colors in the
(X,Y,S) triples. For example, the second axes
ColorOrder property is medium green with RGB [0 .5
0], while plot(X,Y,'g') plots a green line with RGB
[0 1 0].
Example
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)
60
See also plottools, semilogx, semilogy, loglog,
plotyy, plot3, grid,
Formatul datelor
MATLAB-ul afişează numerele cu 5 zecimale (setare implicită). Această
setare se poate modifica cu ajutorul comenzii format.
Example:
format short, pi, single(pi)
62
displays both double and single pi with 5 digits
as 3.1416 while
format long, pi, single(pi)
displays pi as 3.141592653589793 and single(pi)
as 3.1415927.
Exemple:
» c=1.333456789233
c =
1.3335
» format long
» c
c =
1.33345678923300
» format short e
» c
c =
1.3335e+000
» format long e
» c
c =
1.333456789233000e+000
63
» format
» c
c =
1.3335
Opţiuni de salvare
Pentru salvarea variabilelor curente cu care se lucrează în MATLAB la
încheierea unei sesiuni de lucru se poate utiliza comanda save.
Exemplu:
Exemplu:
» load date
Exemplu:
» who
A c determ
» whos
64
A 2x2 32 double array
Aceste fişiere conţin cod în limbajul MATLAB şi sunt denumite .m files (sau
M-files). Fişierele se creează utilizând un editor de text şi apoi se utilizează
ca o comandă MATLAB obişnuită.
» type iedm
Fişiere Script
Atunci când se apelează la un fişier script, MATLAB-ul execută comenzile
găsite în fişierul respectiv. Fişierele script pot lucra cu date din spaţiul de
lucru (workspace) sau pot crea date noi cu care operează. Script-urile nu
furnizează argumente de ieşire, iar variabilele create rămân în workspace,
pentru a fi eventual folosite în calculele ulterioare.
Fişierele script pot furniza ieşiri grafice folosind funcţii cum ar fi plot,
bar.
65
Exemplu de fişier script:
» magicrank
Figura 9.2
66
Funcţii (rutine)
Aceste fişiere acceptă argumente de intrare şi furnizează argumente de ieşire.
Numele fişierului MATLAB (M-file) şi cel al funcţiei (subrutinei) respective
trebuie să fie identice. Funcţiile (subrutinele) lucrează cu variabile proprii
separate de spaţiul de lucru uzual al MATLAB-ului.
Exemplu:
» type rank
function r = rank(A,tol)
s = svd(A);
67
if nargin==1
end
» rank(A)
» r = rank(A)
» r = rank(A,1.e-6)
Variabile globale
Dacă se doreşte ca mai multe astfel de subrutine să utilizeze o anume variabilă
comună, se declară variabila respectivă ca globală utilizând comanda global
în toate funcţiile respective.
Exemplu:
fişierul falling.m:
function h = falling(t)
global GRAVITY
h = 1/2*GRAVITY*t.^2;
» global GRAVITY
» GRAVITY = 32;
68
» y = falling((0:.1:5)');
Funcţia eval
Funcţia eval lucrează cu variabilă text pentru implementarea unei facilităţi
puternice de tip macro text.
Vectorizarea
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 repetitive, MATLAB-ul poate utiliza operaţii matriceale sau
vectoriale.
Exemplu:
x = 0;
for k = 1:1001
y(k) = log10(x);
x = x + .01;
end
x = 0:.01:10;
y = log10(x);
Funcţii de funcţii
În MATLAB există o clasă de funcţii care lucrează cu funcţii neliniare ca
argument. Funcţiile de funcţii includ:
• găsirea zerourilor;
• optimizare;
• integrare numerică;
69
• ecuaţii diferenţiale ordinare.
Exemplu:
function y = humps(x)
x = 0:.002:1;
y = humps(x);
plot(x,y)
» p = fmins('humps',.5)
p =
0.6370
» humps(p)
ans =
11.2528
70
Figura 9.3
71
Lucrare de verificare nr. 9.
72