Plotari tridimensionale (3-D)
Pasii
tipici care trebuie parcursi pentru trasarea unor grafice tridimensionale
sunt prezentati in continuare.
Etapa
|
Instructiuni
|
1.Pregatirea
datelor
|
Z
= peaks(20);
|
2.
Selectarea ferestrei grafice si pozitionarea graficului in
fereastra
|
figure(1) subplot(2,1,2)
|
3.
Apelarea unei functii de plotare 3-D
|
h
= surf(Z);
|
4a.
Setarea unei harti de culori si a unui algoritm de umbrire
|
colormap
hot
shading
interp
set(h,'EdgeColor','k')
|
4b.
Adaugarea unei iluminari
|
light('Position',[-2,2,20]) lighting
phong
material([0.4,0.6,0.5,30]) set(h,'FaceColor',[0.7
0.7 0],
'BackFaceLighting','lit')
|
5.
Setarea unui punct de vizualizare
|
view([30,25]) set(gca,'CameraViewAngleMode','Manual')
|
6. Setarea limitelor axelor si a marcajelor
|
axis([5
15 5 15 -8 8])
set(gca'ZTickLabel','Negative||Positive')
|
7.
Setarea proportionalitatii
|
set( gca,'PlotBoxAspectRatio',
[2.5 2.5 1])
|
8. Completarea graficului cu etichete, legenda,
text
|
xlabel('X
Axis')
ylabel('Y
Axis')
zlabel('Function
Value')
title('Peaks')
|
9.
Operatiuni de tiparire
|
set(gcf,'PaperPositionMode','auto') print -dps2
|
Reprezentarea unei matrice ca o suprafata
MATLAB-ul defineste o suprafata
prin coordonatele z ale
punctelor de deasupra unui caroiaj dreptunghiular in planul x-y. Graficul
este format prin unirea punctelor adiacente cu linii drepte. Plotarile de
suprafete sunt utile pentru vizualizarea matricilor care sunt prea mari pentru
a fi afisate in forma numerica si pentru trasarea
graficelor functiilor de doua variabile.
MATLAB-ul poate crea diferite forme de trasare a
suprafetelor:
Functie
|
Utilizare
|
mesh,
surf
|
Trasare
a unei suprafete
|
meshc,
surfc
|
Trasarea
suprafetei, inclusiv conturul
|
meshz
|
Trasarea suprafetei, inclusiv planul de
referinta
|
pcolor
|
Plotare plana a suprafetei (valorile sunt
proportionale doar cu culoarea)
|
surfl
|
Trasarea suprafetei luminata din
directia specificata
|
surface
|
Functie
de nivel scazut pentru crearea unor obiecte tip grafice
suprafata
|
Grafice realizate cu mesh si surf
Comenzile mesh
si surf
genereaza suprafete 3-D
din datele provenite de la matrici. Daca Z
este
o matrice pentru elementele careia Z(i,j)
se
defineste inaltimea unei suprafete peste un caroiaj (i,j)
atunci
mesh(Z)
genereaza o imagine colorata, caroiata a
suprafetei si o afiseaza in vedere 3-D.
Similar,
surf(Z)
genereaza o imagine colorata, continua a
suprafetei si o afiseaza in vedere 3-D.
In cazul comenzii mesh se pot folosi
comenzi de tipul shading
pentru
eliminarea liniilor de tip mesh (shading flat
) sau
pentru interpolarea umbririlor de-a lungul fatetelor suprafetei (shading
interp
Vizualizarea
functiilor de doua variabile
Primul pas care trebuie
parcurs pentru trasarea graficului unei functii de doua variabile, z
= f(x,y), este de a genera matricile X
si Y
care definesc domeniul in care va fi
vizualizata functia. Apoi se utilizeaza aceste matrici pentru
evaluare si trasarea graficului functiei.
Functia meshgrid
transforma domeniul specificat prin doi vectori, x
si y
, in matricile X
si Y
. Liniile matricei X
sunt
copii ale vectorului x
si
coloanele matricei Y
sunt copii
ale vectorului y
Pentru a
vedea cum se foloseste meshgrid
,
vom considera functia sin(r)/r (numita functia sinc).
Pentru a evalua functia intre -8 si 8 si pentru x
si pentru y, este necesar doar un argument de tip vector pentru meshgrid
,
care va fi utilizat in ambele directii:
[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps;
Matricea R
contine distantele de la centru (originea), iar eps
este adaugat pentru a evita impartirea la zero.
Acum se
poate forma functia sinc si se poate realiza plotarea cu mesh
Z = sin(R)./R; mesh(Z)
Se poate realiza o imbunatatire a
reprezentarii grafice in conditiile utilizarii acelorasi
date, prin folosirea unor facilitati de iluminare si ajustare a imaginii (daspect, axis, camlight, view).
Exemplu:
surf(X,Y,Z,'FaceColor','interp','EdgeColor','none',
'FaceLighting','phong')
daspect([5 5 1]);axis tight;view(-50,30);camlight left
Harta
culorilor
Fiecare
fereastra grafica MATLAB are asociata o harta a culorilor
(colormap), care este o matrice cu trei coloane a caror lungime este
egala cu numarul de culori definite. Fiecare linie
a matricii defineste o culoare particulara prin specificarea a trei
valori in domeniul 0 – 1. Aceste valori definesc componentele RGB (red, green,
blue) (adica intensitatile componentelor video rosu, verde
si albastru). Functia colormap
fara argumente returneaza harta figurii curente.
Functia colorbar
afiseaza in fereastra grafica harta curenta a culorilor,
sub forma unei bare asezate langa grafic. Exemplu:
[x,y] = meshgrid([-2:.2:2]);Z = x.*exp(-x.^2-y.^2); surf(x,y,Z,gradient(Z));colorbar