Sunteți pe pagina 1din 23

Lucrarea nr.

1
1

PREZENTARE GENERAL MATLAB

MATLAB ofera inginerilor un sistem interactiv, puternic si usor de utilizat.
Utilizari tipice includ:
- calcul matematic (numeric si simbolic);
- algoritmi de dezvoltare;
- modelare si simulare;
- analiza de date, explorarea si vizualizarea acestora;
- grafica;
- aplicatii de dezvoltare, incluznd realizarea de interfete grafice utilizator.

Numele MATLAB provine de la Matrix laboratory
- Firma productoare este The MathWorks, Inc., SUA

Elementul de baza este matricea care nu trebuie declarata nainte de folosire si care nu
are o dimensiune ce trebuie specificata. n sens larg, un vector este o matrice cu o linie
sau o coloana, iar un scalar este un vector cu dimensiunea 1.

MATLAB lucreaza fie n modul linie de comanda, situatie n care fiecare linie este
prelucrata imediat, rezultatele putnd fi afisate, fie cu programe (mai multe instructiuni
MATLAB, cu posibilitatea apelarii altor fisiere de acelasi tip si a apelarii recursive) continute
in fisiere numite fisiere M ("M-files") deoarece au extensia .m.

MATLAB are o familie de aplicatii specifice numite "toolboxes", care sunt o colectie de
functii MATLAB ("M-files") ce extind mediul MATLAB sa rezolve clase particulare de
probleme.

Sunt dou tipuri de fiiere .m:
Fiiere Script, care nu accept argumente de intrare i nu returneaz argumente de
ieire. Aceste fiiere execut o serie de instruciuni MATLAB. Script-urile
opereaz cu datele din workspace sau pot crea date noi. Aceste date sunt
disponibile dup terminarea execuiei fiierului.
Fiiere Funcii (rutine), care accept argumente de intrare i returneaz argumente
de ieire. Variabilele utilizate sunt variabile locale (interne) ale funciei.

Caracteristicile celor dou tipuri de fiiere sunt prezentate n tabelul urmtor:
Fiiere Script Fiiere Function
Nu acccept argumente de intrare i nu
returneaz ieiri.
Accept argumente de intrare i returneaz ieiri.
Opereaz cu datele din workspace. Variabilele interne ale funciei sunt locale (implicit).
Utile pentru automatizarea unei serii de
pai care trebuie executai de multe ori.
Utile pentru extinderea limbajului
MATLAB pentru diverse aplicaii.
+ O parte din funcii (cum ar fi sqr t , si n) sunt de t i p built-in, adic sunt o parte a
nucleului MATLAB, au o mare eficien, dar detaliile constructive nu sunt accesibile
utilizatorului.
+ Alte funcii sunt implementate ca fiiere MATLAB (M-files) i pot fi chiar modificate.

Lucrarea nr. 1
2
Prile componente ale unui fiier de tip function
O funcie .m are urmtoarele pri componente:
- Linia de definire a funciei
- Linia de prim help H1
- Textul Help-ului
- Corpul funciei
- Comentarii

Linia de definire
Aceast linie informeaz MATLAB-ul c fiierul conine o funcie i specific
argumentele. Forma general a primei linii a unui fiier de tip funcie este:

function [param_ieire] = nume_funcie(param_intrare)
unde:
function este cuvnt cheie care declar fiierul ca fiier funcie (obligatoriu)
nume_funcie numele funciei, adic numele sub care se salveaz fiierul, fr extensie
param_ieire parametrii de ieire, care trebuie separai cu virgul i cuprini ntre
paranteze drepte
param_intrare parametrii de intrare, care trebuie separai cu virgul i cuprini ntre
paranteze rotunde

Linia H1
Linia H1 este o linie de comentariu care ncepe cu semnul "%" i furnizeaz prima linie
text atunci cnd utilizatorul tasteaz hel p function_name la prompterul MATLAB.
Textul Help-ului
Se poate crea un help online prin introducerea uneia sau mai multor linii de comentariu
dup linia H1, fiecare linie ncepnd cu "%".
Corpul funciei
Corpul funciei conine toate instruciunile n cod MATLAB care permit efectuarea
calculelor i asigneaz valori argumentelor de ieire. Declaraiile din corp pot conine apelri
de funcii, instruciuni de salt, intrri/ieiri interactive, calcule etc.
Comentarii
O linie de comentariu ncepe dup cum s-a precizat cu semnul "%" i poate fi plasat
oriunde ntr-un fiier.

EXEMPLU: Fiierul .m poate fi creat cu un editor de text i apoi poate fi folosit ca orice
funcie sau comand MATLAB:

Lucrarea nr. 1
3
1. Crearea unui fiier cu un
editor de text.
2. Apelarea fiierului .m de
la linia de comand sau
din alt fiier .m.


Operatorii MATLAB pot fi clasificai n trei categorii:
- Operatori aritmetici
- Operatori relaionali care compar operanzii cantitativ
- Operatori logici
Operatori aritmetici
+
Adunare
:
Operatorul dou puncte
-
Scdere
. ^
Putere
. *
nmulire
. '
Transpusa
. /
mprire la dreapta
'
Transpusa complex conjugat
. \
mprire la stnga
*
nmulire de matrici
+
Plus unar
/
mprire matriceal la dreapta
-
Minus unar
\
mprire matriceal la stnga


^
Putere de matrice

Cu excepia unor operatori matriceali, operatorii aritmetici lucreaz cu elementele
corespondente ale unor tablouri de dimensiuni egale. Semnul . indic efectuarea
operaiilor n ordinea element cu element. Pentru vectori i tablouri dreptunghiulare ambii
operanzi trebuie s aib aceeai dimensiune, cu excepia situaiei n care unul dintre ei este
scalar. n acest caz MATLAB-ul aplic scalarul fiecrui element al celuilalt operand
(proprietatea de expansiune scalar).
Operatori relaionali
<
Mai mic
<=
Mai mic sau egal
>
Mai mare
>=
Mai mare sau egal
==
Egal cu
~=
Diferit de

Lucrarea nr. 1
4
Operatorii relaionali compar elementele corespondente ale unor tablouri de dimensiune
egal. Operatorii relaionali lucreaz totdeauna element cu element.

Exemplu:

A = [ 2 7 6; 9 0 5; 3 0. 5 6] ;
B = [ 8 7 0; 3 2 5; 4 - 1 7] ;

A == B
ans =
0 1 0
0 0 1
0 0 0
Operatori logici
& AND (I)
| OR ( SAU)
~ NOT ( NU)
- O expresie care utilizeaz operatorul & este adevrat dac ambii operanzi sunt
adevrai. n termeni numerici, expresia este adevrat dac ambii operanzi sunt
nenuli. Exemplu:
u = [ 1 0 2 3 0 5] ;
v = [ 5 6 1 0 0 7] ;
u & v
ans =
1 0 1 0 0 1

- O expresie care utilizeaz operatorul | este adevrat dac unul dintre operanzi este
logic adevrat sau dac ambii operanzi sunt adevrai. n termeni numerici, expresia
este fals dac ambii operanzi sunt nuli. Exemplu:
u | v
ans =
1 1 1 1 0 1

- O expresie care utilizeaz operatorul NOT, ~, neag operandul. n termeni numerici,
orice operand nenul devine nul i orice operand nul devine unu. Exemplu:
~u
ans =
0 1 0 0 1 0

Operatorii logici lucreaz cu elementele corespondente ale unor tablouri de dimensiuni
egale. Pentru vectori i tablouri dreptunghiulare ambii operanzi trebuie s aib aceeai
dimensiune, cu excepia situaiei n care unul dintre ei este scalar. n acest caz, ca i la
operatorii aritmetici, MATLAB-ul aplic scalarul fiecrui element al celuilalt operand.
Funcii logice
n plus fa de operatorii logici MATLAB-ul furnizeaz i funcii logice:
Funcie Descriere Exemple
Lucrarea nr. 1
5
xor
Realizeaz sau exclusiv. Returneaz logic adevrat
dac unul din operanzi este adevrat i cellalt fals.
n termeni numerici, returneaz 1 dac un operand
este nenul i cellalt este zero.
a = 1;
b = 1;
xor ( a, b)
ans =
0
al l
Returneaz 1 dac toate elementele unui vector sunt
adevrate sau nenule. Opereaz i cu matrici (pe
coloane).
u = [ 0 1 2 0] ;
al l ( u)
ans =
0

A = [ 0 1 2; 3 5 0] ;
al l ( A)
ans =
0 1 0
any
Returneaz 1 dac oricare din elementele
argumentului sunt adevrate sau nenule; n caz
contrar returneaz 0. Opereaz i cu matrici (pe
coloane).
v = [ 5 0 8] ;
any( v)
ans =
1
any( A)
ans =
1 1 1
n Matlab matricile pot fi introduse n urmtoarele moduri:
Introducerea unei liste explicite de elemente
ncrcarea dintr-un fiier extern
Generarea de matrici folosind funciile de generare interne (matlab)
Generarea de matrici folosind funciile de generare create de utilizator

Elementele dintr-un rnd vor fi desprite de virgul sau spaiu
Se folosete ; la terminarea fiecrui rnd
Intreaga list de elemente se pune ntre [ ].
Pentru a introduce matricea vom tasta n Command Window urmtoarele

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

Odat matricea introdus aceasta va fi memorat n workspace i se va putea apela prin
tastarea numelui matricii A.

Indici
Elementul din rndul i i coloana j a matricei A poate fi apelat prin A(i,j). De exemplu A(4,2)
este elementul din randul 4 i coloana 2.
Este de asemenea posibil sa ne referim la elementul unei matrici printr-un indice A(k). Acesta
este modul obinuit ce referire in cadrul vectorilor rnd sau coloan. Dac ne referim n
acelai mod n cazul unei matrici bidimensionale atunci sirul de elementele va fi considerat ca
un singur vector coloana format din coloanele matricei originale.
Dac se ncearca apelarea unei locaii din afara matricei matlab-ul va returna un mesaj de
eroare:
t = A(4,5)
Index exceeds matrix dimensions.

Operatorul dou puncte (:)
Lucrarea nr. 1
6
Operatorul dou puncte (:), este unul dintre cei mai importani operatori ai Matlabului. Acest
operator se poate regsi n una din urmtoarele situaii:
>> 1: 10
ans =
1 2 3 4 5 6 7 8 9 10
Pentru a obine o incrementare neunitar a irului, va trebui specificat valoarea
incrementului:
>> 100: - 7: 50
ans =
100 93 86 79 72 65 58 51

A(:,j) selecteaz coloana j a matricei A
A(i,:) selecteaz linia i a matricei A
A(:,:) selecteaz ntreaga matrice A
A(j:k) selecteaz elementele A(j), A(j+1),...,A(k) ala vectorului A
A(:,j:k) selecteaz toate liniile i coloanele de la j la k ale matricei A
A(:) selecteaz toate elementele matricei A, privite ca o singur coloan (ncepnd cu
prima)

Vectorizarea
Pentru a obine o vitez de calcul mare, este foarte important aa-numita vectorizare a
algoritmilor n fiierele MATLAB. Acolo unde alte limbaje folosesc bucle de tip f or sau DO,
MATLAB-ul poate utiliza operaii matriceale sau vectoriale.
Un exemplu simplu este urmtorul:
x = 0;
f or k = 1: 1001
y( k) = l og10( x) ;
x = x + . 01;
end
Versiunea vectorizat a aceluiai program este
x = 0: . 01: 10;
y = l og10( x) ;

Polinoame
Polinoamele sunt descrise n MATLAB prin vectori linie ale cror elemente sunt de
fapt coeficienii polinoamelor n ordinea descresctoare a puterilor.

Exemplu: polinomul p(x)=x
3
+5x+6 este reprezentat n MATLAB astfel:

p = [ 1 0 5 6]

Un polinom poate fi evaluat pentru o valoare a lui x cu ajutorul funciei pol yval :

>> pol yval ( p, 1)
ans =
12

Se pot afla cu uurin rdcinile polinomului folosind funcia r oot s:

>> r =r oot s( p)
Lucrarea nr. 1
7
r =
0. 5000 + 2. 3979i
0. 5000 - 2. 3979i
- 1. 0000

Exist numeroase alte funcii i comenzi care se ocup cu operaii asupra polinoamelor


Funcie Descriere
conv
Multiplic polinoamele.
deconv
mparte polinoamele.
pol y
Returneaz coeficienii dac se dau
rdcinile; Polinomul caracteristic.
pol yder
Calcul derivatei unui polinom.
pol yf i t
Gsirea coeficienilor unui polinom din
aproximarea unui set de date.
pol yval
Evaluarea unui polinom.
pol yval m
Evaluarea unui polinom cu argument
matriceal.
r esi due
Descompunere n fracii simple.
r oot s
Gsirea rdcinilor unui polinom.
Interpolarea
Interpolarea este un proces de estimare a valorilor dintre date (puncte) cunoscute.
MATLAB-ul dispune de mai multe tehnici de interpolare, alegerea unei metode sau alteia
fcndu-se n funcie de acurateea necesar, de viteza de execuie i de gradul de utilizare a
memoriei.

Funcie Descriere
gr i ddat a
Interpolare pe suprafee.
i nt er p1
Interpolare 1-D.
i nt er p2
Interpolare 2-D.
i nt er p3
Interpolare 3-D.
i nt er pf t
Interpolare 1-D utiliznd metoda transformatei Fourier
spl i ne
Interpolare spline (cubic).

Exemplu. Fie urmtoarele date ale unei funcii de o singur variabil:
x -2 -1 0 1 2
y 6 2 3 1 7
S se estimeze cu funcia i nt er p1 valoarea y care corespunde lui x1=-1 i x2=1.5 folosind
interpolarea liniar, cubic i spline cubic.

x=[ - 2 - 1 0 1 2] ;
y=[ 6 2 3 1 7] ;
yi l =i nt er p1( x, y, [ - 1, 1. 5] , ' l i near ' )
yi s=i nt er p1( x, y, [ - 1, 1. 5] , ' spl i ne' )
yi c=i nt er p1( x, y, [ - 1, 1. 5] , ' cubi c' )
r ez=[ yi l ; yi s; yi c]
Lucrarea nr. 1
8

r ez =

2. 0000 4. 0000
2. 0000 2. 0156
2. 0000 2. 7500

Rezolvarea ecuaiilor liniare

Una din cele mai importante probleme ale calculului din domeniul tehnic este
soluionarea sistemelor de ecuaii liniare.
Definirea problemei este pe scurt urmtoarea:

Dac se dau dou matrici A i B, exist o matrice unic X astfel nct
AX = B sau XA = B ?
MATLAB utilizeaz notaia din cazul scalar i pentru descrierea soluiei unui sistem de
ecuaii liniare. Cele dou simboluri utilizate n cazul scalar al diviziunii (mpririi) i anume
slash, /, i backslash, \, sunt folosite pentru definirea soluiei:
X =A\B este soluia ecuaiei matriceale AX = B B A -
1

X =B/A este soluia ecuaiei matriceale XA = B.
1
- A B

n practic, ecuaiile liniare de forma AX = B sunt mai des ntlnite.

Deoarece matricea A, care conine de fapt coeficienii sistemului, poate s nu fie ptratic
ci de tipul general mxn, exist trei cazuri posibile:
m = n. Sistem ptratic. Se poate cuta o soluie exact.
m > n. Sistem supradeterminat (incompatibil). Se caut o soluie de tip cele
mai mici ptrate.
m < n. Sistem nedeterminat. Se poate cuta o soluie cu cel mult m
componente nenule.

Sisteme ptratice
Cel mai simplu caz este cel corespunztor unei matrice ptratice A i a unui vector
coloan b. Soluia x =A\b are aceeai dimensiune ca b.
Dac A i B sunt ptratice de aceleai dimensiuni atunci soluia X =A\B are aceeai
dimensiune ca A sau B.
Observaie: Dac matricea A este singular (determinant nul) atunci soluia ecuaiei AX
= B nu exist sau nu este unic.
Lucrarea nr. 1
9

Aplicaie
Calculai valorile curenilor I
1
, I
2
, I
3
folosind teoremele lui Kirchoff si operaiile cu matrici din
MATLAB. Cele 3 ecuatii puneti-le sub forma [R]*[I]=[U], unde [R] reprezinta o matrice
cunoscuta de coeficienti 3x3, [I] reprezinta un vector coloana necunoscut care contine cei 3
curenti, iar [U] reprezinta un vector coloana cunoscut.

10 V
1 O 2 O 3 O
20 V
I
1
I
2
I
3

Lucrarea nr. 1
10
REPREZENTRI GRAFICE N MATLAB

Reprezentari grafice 2-D

Funciile de baz folosite la plotare sunt prezentate n tabelul urmtor:
Funcie Utilizare
Pl ot
Genereaz grafice 2-D cu scalare liniar a axelor
l ogl og
Genereaz grafice cu scalare logaritmic a axelor
semi l ogx
Genereaz grafice cu scalare liniar a axei y i cu scalare logaritmic a axei x
semi l ogy
Genereaz grafice cu scalare liniar a axei x i cu scalare logaritmic a axei y
pl ot yy
Genereaz grafice cu dubl reprezentare a axei y (pe stnga i pe dreapta)
Funcia pl ot are diferite forme n funcie de argumentele de intrare.
Dac de exemplu y este un vector, pl ot ( y) produce un grafic liniar al
elementelor lui y versus indexul elementelor sale.
Dac se specific doi vectori ca argumente, pl ot ( x, y) produce graficul lui y
versus x.

Exempl u:
t = 0: pi / 100: 2*pi ;
y = si n( t ) ;
pl ot ( t , y)
gr i d on


Se pot realiza grafice multiple utiliznd un singur apel al funciei pl ot . MATLAB-ul
realizeaz automat o reprezentare cu culori diferite pentru a permite distingerea graficelor.

Exempl u:
t = 0: pi / 100: 2*pi ;
y = si n( t ) ;
y2 = si n( t - 0. 25) ;
y3 = si n( t - 0. 5) ;
pl ot ( t , y, t , y2, t , y3)

Lucrarea nr. 1
11


Suprapunerea unor grafice peste un grafic existent
Se pot aduga grafice peste unul existent cu comanda hol d. Dac se seteaz hol d on,
MATLAB-ul nu nltur graficul existent, ci suprapune noul grafic n aceeai fereastr
grafic.

Exempl u:
semi l ogx( 1: 100, ' +' )
hol d on
pl ot ( 1: 3: 300, 1: 100, ' - - ' )
hol d of f


Afiarea unor grafice multiple n aceeai fereastr grafic

Se poate realiza o afiare a mai multor grafice n aceeai fereastr prin intermediul
funciei subpl ot .
Funcia subplot(m,n,i) desparte fereastra de tip figur ntr-o matrice m x n de mici
subploturi (subgrafice) i selecteaz subplotul i ca grafic curent.

Exempl u:
t = 0: pi / 20: 2*pi ;
[ x, y] = meshgr i d( t ) ;
subpl ot ( 2, 2, 1)
pl ot ( si n( t ) , cos( t ) )
axi s equal
subpl ot ( 2, 2, 2)
z = si n( x) +cos( y) ;
pl ot ( t , z)
axi s( [ 0 2*pi - 2 2] )
subpl ot ( 2, 2, 3)
z = si n( x) . *cos( y) ;
pl ot ( t , z)
Lucrarea nr. 1
12
axi s( [ 0 2*pi - 1 1] )
subpl ot ( 2, 2, 4)
z = ( si n( x) . ^2) - ( cos( y) . ^2) ;
pl ot ( t , z)
axi s( [ 0 2*pi - 1 1] )
-1 -0.5 0 0.5 1
-1
-0.5
0
0.5
1
0 2 4 6
-2
-1
0
1
2
0 2 4 6
-1
-0.5
0
0.5
1
0 2 4 6
-1
-0.5
0
0.5
1

Comenzi de marcare, etichetare i gradare a graficelor

MATLAB-ul furnizeaz comenzi de etichetare a fiecrei axe i de plasare a unui text n
orice loc din grafic. Comenzile sunt prezentate n tabelul urmtor.
Comand

Descriere
t i t l e
Adaug un titlu
xl abel
Adaug o etichet pe axa x
yl abel
Adaug o etichet pe axa y
zl abel
Adaug o etichet pe axa z
l egend
Adaug o legend
Text
Afieaz un text la o locaie specificat
Gt ext
Plaseaz textul pe grafic utiliznd mouse-ul
Etichetarea axelor
Se pot aduga etichete pe axe cu comenzile xl abel , yl abel , zl abel .
Exempl u:
t = 0: pi / 100: 2*pi ;
y = si n( t ) ;
pl ot ( t , y)
Lucrarea nr. 1
13
xl abel ( ' t = 0 t o 2\ pi ' , ' Font Si ze' , 14)
yl abel ( ' si n( t ) ' , ' Font Si ze' , 14)
t i t l e( ' \ i t {Val ue of t he Si ne f r om0 t o 2\ Pi }' , ' Font Si ze' , 14)
0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
t =0 to 2t
s
i
n
(
t
)
Valoarea Sin de la 0 la 2


MATLAB-ul interpreteaz caracterele care urmeaz dup backslash "\" ca i comenzi
TeX. Aceste comenzi permit reprezentarea unor simboluri cum ar fi literele greceti sau
sgeile.

Grafice 2 D specializate
MATLAB-ul permite lucrul cu o mare varietate de tipuri de grafice, astfel nct
informaiile s poat fi prezentate eficient.
Tipul de grafic selectat depinde n mod esenial de natura datelor prelucrate.
- Graficele de tip bare sau arie (bar , ar ea) sunt utile pentru vizualizarea unor
rezultate, compararea lor i afiarea unei contribuii individuale din total.
- Graficele de tip statistic (pi e char t s) indic contribuiile individuale dintr-un total.
- Histogramele (hi st ogr am) sunt utile pentru a indica distribuia valorilor datelor.
- Graficele de tip st emi st ai r st ep sunt utile pentru date discrete.
- Graficele compass, f eat her , qui ver sunt utile pentru plotarea vectorilor de
tip direcie i vitez.
- Graficele de tip contur (cont our ) sunt utile la reprezentarea unor regiuni de valori
egale ale datelor.
- Plotrile interactive (i nt er act i ve) permit selectarea unor puncte de plotare n mod
interactiv.
- Graficele de tip animaie (ani mat i ons) adaug date la grafice consecutive i
creeaz o animaie.


Grafice de tip Bar i Area
Funcie Descriere
Lucrarea nr. 1
14

Bar
Afieaz coloanele unor matrici mxn ca m grupe de n bare verticale
Bar h
Afieaz coloanele unor matrici mxn ca m grupe de n bare orizontale
bar 3
Afieaz coloanele unor matrici mxn ca m grupe de n bare verticale 3-D
bar 3h
Afieaz coloanele unor matrici mxn ca m grupe de n bare orizontale tridimensionale
3-D
Ar ea
Afieaz datele din vectori ca suprafee
Grafice Bar grupate
Ca setare implicit, un grafic cu bare reprezint fiecare element dintr-o matrice cu o
singur bar. n cazul unui grafic 2-D, barele create cu funcia bar sunt distribuite de-a lungul
axei x, cu fiecare element dintr-o coloan desenat la alt locaie. Toate elementele dintr-o linie
sunt reprezentate grupat la aceeai locaie pe axa x.

Exempl u:
Y = [ 5 2 1
8 7 3
9 8 6
5 5 5
4 3 2] ;
bar ( Y)

Grupele de coloane
reprezint linii din
Y.


Grafice statistice - pie charts
Graficele pi e afieaz procentul cu care fiecare element al unui vector sau matrice
contribuie la suma tuturor elementelor. Funciile pi e i pi e3 creeaz grafice 2-D i 3-D.
n continuare prezentm un exemplu de vizualizare a ponderii a trei produse din totalul
vnzrilor. Se consider o matrice X, pent r u car e fiecare coloan reprezint
vnzrile anuale pentru cte un produs, pe o perioad de nregistrri de 5
ani :
X = [ 19. 3 22. 1 51. 6;
34. 2 70. 3 82. 4;
61. 4 82. 9 90. 8;
50. 5 54. 9 59. 1;
29. 4 36. 3 47. 0] ;

Se pot calcula vnzrile pentru fiecare produs n cei 5 ani cu ajutorul funciei:
Lucrarea nr. 1
15
x = sum( X) ;

Dac utilizm argumentul de intrare expl ode putem reprezenta ntr-un mod explodat care
dintre produse a avut o contribuie mai mare la vnzri (de exemplu). Programul are
urmtoarea form:

expl ode = zer os( si ze( x) ) ;
[ c, of f set ] = max( x) ;
expl ode( of f set ) = 1;
h = pi e( x, expl ode) ; col or map summer

25%
34%
42%

Reprezentari grafice 3-D

Reprezentarea unei matrice ca o suprafa
MATLAB-ul definete o suprafa prin coordonatele z ale punctelor de deasupra unui
caroiaj dreptunghiular n planul x-y. Graficul este format prin unirea punctelor adiacente cu
linii drepte. Plotrile de suprafee sunt utile pentru vizualizarea matricilor care sunt prea mari
pentru a fi afiate n form numeric i pentru trasarea graficelor funciilor de dou variabile.
MATLAB-ul poate crea diferite forme de trasare a suprafeelor:

Funcie Utilizare

pl ot 3
Reprezentarea grafica tridimensionala a datelor continute n vectori sau
matrice
mesh, sur f
Trasare a unei suprafee

meshc, sur f c
Trasarea suprafeei, inclusiv conturul

meshz
Trasarea suprafeei, inclusiv planul de referin

Lucrarea nr. 1
16
pcol or
Plotare plan a suprafeei (valorile sunt proporionale doar cu culoarea)
sur f l
Trasarea suprafeei luminat din direcia specificat

sur f ace
Funcie de nivel sczut pentru crearea unor obiecte tip grafice suprafa

Pentru a afisa sub forma unui grafic tridimensional datele continute n trei vectori sau matrice
se foloseste functia pl ot 3 cu una din sintaxele:

pl ot 3( X1, Y1, Z1, . . . )
pl ot 3( X1, Y1, Z1, Speci f i car e_At r i but e, . . . )
pl ot 3( . . . , 'Nume_Pr opr i et at e', Val oar e_Pr opr i et at e, . . . )
h = pl ot 3( . . . )

Functia pl ot 3( X1, Y1, Z1, . . . ) , unde X1, Y1, Z1 sunt vectori de aceeasi dimensiune,
afiseaza, n spatiul tridimensional, o curba obtinuta prin interpolarea liniara a punctelor ale
caror coordonate sunt elementele vectorilor X1, Y1 si Z1. Ca si n cazul functiei pl ot , sunt
acceptate mai multe seturi de date, deci mai multe triplete de argumente.
Daca X1, Y1, Z1 sunt matrice de aceeasi dimensiune, MATLAB reprezinta cte o curba
pentru fiecare coloana a matricelor, folosind ciclic culorile de baza.
Prin perechi de argumente de tipul 'Nume_Pr opr i et at e', Val oar e_Pr opr i et at e,
se pot stabili, nca de la creare, oricte valori ale proprietatilor obiectelor grafice de tip Li ne
create prin acest apel de functie.
Sintaxa h = pl ot 3( . . . ) furnizeaza vectorul coloana h, care contine identificatorii
tuturor obiectelor grafice de tip Li ne create.

Exempl u:
t =- 5: 0. 005: 5;
x=( 1+t . ^2) . *si n( 20*t ) ;
y=( 1+t . ^2) . *cos( 20*t ) ;
z=t ;
pl ot 3( x, y, z)
gr i d on
xl abel ( ' x( t ) ' , ' Font Si ze' , 14) ;
yl abel ( ' y( t ) ' , ' Font Si ze' , 14) ;
zl abel ( ' z( t ) ' , ' Font Si ze' , 14) ;
t i t l e( ' {\ i t Exempl u} pl ot 3' , ' Font Si ze' , 14)
Lucrarea nr. 1
17

-30
-20
-10
0
10
20
30
-30
-20
-10
0
10
20
30
-5
0
5
x(t)
Exempl u plot3
y(t)
z
(
t
)

Reprezentarea suprafetelor sub forma unei retele (mesh)

Exista trei functii MATLAB pentru reprezentarea grafica 3D a matricelor de date sub forma
unei retele de linii colorate:
- mesh, care realizeaza o suprafata mesh fara linii de contur;
- meshc, care adauga retelei linii de contur reprezentate sub suprafata;
- meshz, care adauga retelei un plan de referinta la cota zero (un piedestal).
Fiecare dintre acestea poate avea una din sintaxele de mai jos, exemplificate pentru functia
mesh.
mesh( X, Y, Z, C)
mesh( X, Y, Z)
mesh( Z)
h = mesh( . . . )
n cazul cel mai general, cnd functiile au patru argumente, sunt create suprafete
parametrizate specificate prin matricele X, Y si Z, cu culorile specificate prin matricea C.
MATLAB realizeaza o transformare lineara asupra datelor din C pentru a obtine culorile din
paleta de culori curenta. Daca X, Y si Z sunt matrice, C trebuie sa aiba aceeasi dimensiune ca
si acestea.
Sintaxa mesh( X, Y, Z) , n care matricea C este omisa, considera C=Z, culoarea fiind
proportionala cu naltimea suprafetei.
Daca X si Y sunt vectori de dimensiune n, respectiv m, iar Z este o matrice de dimensiune m
x n, punctele de coordonate (X(j), Y(i), Z(i,j)) sunt intersectiile liniilor de grid care compun
reteaua mesh. Se constata ca indexul lui Y corespunde coloanelor lui Z, n timp ce indexul
lui X corespunde liniilor lui Z.
Daca X si Y sunt matrice, intersectiile liniilor retelei au coordonatele (X(i,j), Y(i,j),Z(i,j)).
Cu sintaxa mesh( Z) se creeaza o retea mesh care utilizeaza X = 1: n si Y = 1: m,
unde[ m, n] =si ze( Z) , iar culoarea este proportionala cu naltimea suprafetei.

Reprezentarea suprafetelor pline
Pentru reprezentarea grafica a suprafetelor pline se folosesc functiile surf si surfc.
Lucrarea nr. 1
18
Sintaxele acestora si semnificatia argumentelor sunt similare celor ale functiilor utilizate
pentru reprezentarea suprafetelor sub forma unei retele de linii. Spre deosebire de surf, functia
surfc afiseaza si liniile de nivel, pe acelasi grafic si sub suprafata.

Reprezentarea grafica a functiilor de doua variabile
Pentru a reprezenta grafic o functie de doua variabile, y =f(x,y), sub forma unei suprafete de
tip retea de linii colorate sau suprafata plina, nainte de apelul functiei grafice dorite este
necesara generarea matricelor X si Y ce definesc domeniul de definitie prin suprafete
parametrizate.
Pentru transformarea domeniului specificat prin doi vectori x si y de dimensiuni 1 x n,
respectiv 1 x m, n matricele X si Y de dimensiuni m x n, astfel nct liniile lui X sunt copiile
lui x, iar coloanele lui Y sunt copiile lui y, se foloseste functia meshgr i d, care poate avea
una din sintaxele:

[ X, Y] = meshgr i d( x, y)
[ X, Y] = meshgr i d( x) echivalent cu [ X, Y] = meshgr i d( x, x)

Exempl u: Sa se reprezinte grafic suprafata definita de:
s s + y x, 0 pt. ) cos( ) sin(
2 2
x y x y
x=0: 0. 1: pi ; y=0: 0. 1: pi ;
[ X, Y] =meshgr i d( x, y) ;
Z=si n( Y. ^2+X) - cos( Y- X. ^2) ;
subpl ot ( 221)
mesh( Z)
subpl ot ( 222)
meshc( Z)
subpl ot ( 223)
sur f ( x, y, Z)
Lucrarea nr. 1
19
0
20
40
0
20
40
-2
0
2
0
20
40
0
20
40
-2
0
2
0
2
4
0
2
4
-2
0
2




Lucrarea nr. 1
20
Aplicaie: Metoda punct cu punct

Aceast metod de calcul punctual se utilizeaz la verificarea condiiilor iluminatului
confortabil i se particularizeaz n funcie de tipul de sistem de iluminat folosit.
Aplicaia trateaz surse de lumin punctuale aparate de iluminat echipate cu lmpi
incandescente, cu lmpi cu descrcri n vapori metalci sau lmpi fluorescente compacte.
Se consider o surs punctual concentrat n punctul O.

O
I
o,|
n
H
n
V
l
h
d
u
o
|
P
(H)
(V)


Pe baza legii generale a iluminrii, rezult iluminarea n punctul P din planul orizontal,
intensitatea luminoas fiind
,
I ,
2
,
cos
l
I
M E
f P



=
unde
f
M este factorul de meninere ( 1 <
f
M )
,
I - intensitatea luminoas spaial
- unghi de inciden

Pentru aparatele de iluminat simetrice, intensitatea luminoas depinde numai de o (unghi de
nlime).

2
3
cos
h
I
M E
f P


=
Etape :
Lucrarea nr. 1
21
Suprafaa panului util se mparte n ptrate cu latura 0.5 2 m, centrele acestor ptrate
reprezentnd punctele de calcul ale iluminrii. Se determin unghiul
h
d
arctg
i
i
= format
ntre punctul de calcul i fiecare aparat de iluminat pe rnd.

1 2
k
m

Punctele de calcul
L
l
dL/2
d
l
d
l/
2
dL
Amplasarea aparatelor de iluminat

Corespunztor unghiului
i
exprimat n grade, din curba fotometric a aparatului de
iluminat folosit se determin intensitatea luminoas
1000
I pentru lampa convenional de
1000 lm.
Se calculeaz
1000
1000
AIL
I I
u
=

unde
AIL
u este fluxul luminos al aparatului de iluminat
Lucrarea nr. 1
22
Se calculeaz iluminarea produs de fiecare aparat de iluminat n punctul de calcul
considerat :

2
3
) ( cos ) (
h
I
M E
i i
f Pi


=
Se nsumeaz contribuiile tuturor aparatelor de iluminat (n)obinnd :

=
=
n
i
Pi k
E E
1

Se procedeaz similar pentru fiecare punct de calcul k
Se calculeaz iluminarea medie a ncperii

m
E
E
m
k
k
med

=
=
1
, m reprezint numrul punctelor de calcul.


Sursa MATLAB
%Se i nt r oduce cur ba f ot omet r i ca a cor pul ui de i l umi nat sub
%f or ma a doi vect or i unghi _cf , i nt _cf
unghi _cf =[ 0 5 15 25 35 45 55 65 75 85 90 95 105 115 125 . . .
135 145 155 165 175 180] ;
i nt _cf =[ 2589 2673 2820 2559 1694 693 113 33 15 0 0 170 565 . . .
664 816 922 831 776 706 587 542] ;
%Se i nt r oduc di mensi uni l e geomet r i ce al e i ncaper i i
l u=i nput ( ' l ungi mea i ncaper i i ' )
l a=i nput ( ' l at i mea i ncaper i i ' )
h=i nput ( ' i nal t i mea i ncaper i i ' )
mc=i nput ( ' numar ul si r ur i l or de cor pur i de i l umi nat ' )
nc=i nput ( ' numar ul cor pur i l or de i l umi nat pe si r ' )
p=i nput ( ' pasul punct ul ui de cal cul ' )
n=l u/ p;
m=l a/ p;
xi =p/ 2;
yi =p/ 2;
dh=l u/ nc;
dv=l a/ mc;
xci =dh/ 2;
yci =dv/ 2;
f or j =1: m
f or i =1: n
e( j , i ) =0;
end
end
f or k=1: n
i f k==1
x( k) =xi ;
el se
x( k) =x( k- 1) +p;
Lucrarea nr. 1
23
end
f or r =1: m
i f r ==1
y( r ) =yi ;
el se
y( r ) =y( r - 1) +p;
end
f or i =1: nc
i f i ==1
xc( i ) =xci ;
el se
xc( i ) =xc( i - 1) +dh;
end
f or j =1: mc
i f j ==1
yc( j ) =yci ;
el se
yc( j ) =yc( j - 1) +dv;
end
d=sqr t ( ( xc( i ) - x( k) ) . ^2+( yc( j ) - y( r ) ) . ^2) ;
unghi =at an( d/ h) ;
unghi _gr ade=180*unghi / pi ;
i nt ensi t at ea=i nt er p1( unghi _cf , i nt _cf , unghi _gr ade) ;
e( r , k) =e( r , k) +i nt ensi t at ea*cos( unghi ) ^3/ h^2;
end
end
end
end
di sp( e)