
ch−¬ng 18
§å ho¹
trong kh«ng gian 3 chiÒu
MATLAB cung cÊp mét sè hµm ®Ó hiÓn thÞ d÷ liÖu 3 chiÒu nh− c¸c hµm vÏ ®−êng th¼ng trong
kh«ng gian 3 chiÒu, c¸c hµm vÏ bÒ mÆt vµ vµ khung d©y vµ mµu cã thÓ ®−îc sö dông thay thÕ cho
chiÒu thø t−.
18.1 §å thÞ ®−êng th¼ng.
LÖnh
plot
tõ trong kh«ng gian hai chiÒu cã thÓ më réng cho kh«ng gian 3 chiÒu b»ng lÖnh
plot3
.
Khu«n d¹ng cña
plot3
nh− sau:
plot3 ( x1, y1, z1, S1, x2, y2, z2, S2, .... )
, trong ®ã xn, yn vµ zn lµ c¸c vector hoÆc ma trËn, vµ
Sn lµ x©u kÝ tù tuú chän dïng cho viÖc khai b¸o mµu, t¹o biÓu t−îng hoÆc kiÓu ®−êng. Sau ®©y lµ mét
sè vÝ dô:
>> t = linspace (0, 10*pi);
>> plot3(sin(t),cos(t),t)
>> title ('Helix'),xlabel('sin(t)')
>> ylabel('cos(t)'),zlabel('t')

129
H×nh 18.1
Chó ý r»ng: hµm
zlabel
t−¬ng øng víi hµm hai chiÒu
xlabel
vµ
ylabel
. T−¬ng tù nh− vËy, lÖnh
axis
còng cã khu«n d¹ng:
axis ( [xmin xmax ymin ymax zmin zmax ] )
thiÕt lËp giíi h¹n cho c¶ 3 trôc.
VÝ dô :
>> axis('ij') % thay ®æi h−íng trôc tõ sau ra tr−íc
H×nh 18.2
Hµm
text
còng cã khu«n mÉu nh− sau:
text ( x, y, z, string )
sÏ ®Æt vÞ trÝ x©u ‘string ‘ vµo to¹ ®é x,
y, z.
18.2 §å thÞ bÒ mÆt vµ l−íi
MATLAB ®Þnh nghÜa bÒ mÆt l−íi b»ng c¸c ®iÓm theo h−íng trôc z ë trªn ®−êng kÎ « h×nh vu«ng
trªn mÆt ph¼ng x-y. Nã t¹o lªn mÉu mét ®å thÞ b»ng c¸ch ghÐp c¸c ®iÓm gÇn kÒ víi c¸c ®−êng th¼ng.
KÕt qu¶ lµ nã tr«ng nh− mét m¹ng l−íi ®¸nh c¸ víi c¸c m¾t l−íi lµ c¸c ®iÓm d÷ liÖu. §å thÞ l−íi nµy
th−êng ®−îc sö dông ®Ó quan s¸t nh÷ng ma trËn lín hoÆc vÏ nh÷ng hµm cã hai biÕn.

130
B−íc ®Çu tiªn lµ ®a ra ®å thÞ l−íi cña hµm hai biÕn z = f (x, y ), t−¬ng øng víi ma trËn
X vµ Y chøa c¸c hµng vµ c¸c cét lÆp ®i lÆp l¹i. MATLAB cung cÊp hµm
meshgrid
cho môc ®Ých nµy.
[ X, Y ] = meshgrid(x, y ), t¹o mét ma trËn X, mµ c¸c hµng cña nã lµ b¶n sao cña vector
x, vµ ma trËn Y cã c¸c cét cña nã lµ b¶n sao cña vector y. CÆp ma trËn nµy sau ®ã ®−îc sö dông ®Ó
−íc l−îng hµm hai biÕn sö dïng ®Æc tÝnh to¸n häc vÒ m¶ng cña MATLAB.
Sau ®©y lµ mét vÝ dô vÒ c¸ch dïng hµm
meshgrid.
>> x = -7.5:.5:7.5;
>> y = x;
>> [X,Y] = meshgrid(x,y);
X, Y lµ mét cÆp cña ma trËn t−¬ng øng mét l−íi ch÷ nhËt trong mÆt ph¼ng x-y. Mäi hµm z=f(x,y)
cã thÓ sö dông tÝnh chÊt nµy.
>> R = sqrt(X.^2+Y.^2)+eps;
>> % find the distance from the origin (0,0)
>> Z = sin(R)./R; % calculate sin(r)/ r
Ma trËn R chøa b¸n kÝnh cña mçi ®iÓm trong [X,Y], nã lµ kho¶ng c¸ch tõ mçi ®iÓm ®Õn
t©m ma trËn. Céng thªm
eps
®Ó kh«ng ®Ó x¶y ra phÐp chia cho 0. Ma trËn Z chøa sine cña b¸n kÝnh
chia cho b¸n kÝnh mçi ®iÓm trong s¬ ®å. C©u lÖnh sau vÏ ®å thÞ l−íi:
>> mesh(X,Y,Z)
H×nh 18.3
§å thÞ trªn lµ ®¬n s¾c. Tuy nhiªn b¹n cã thÓ thay ®æi mµu s¾c víi sù trî gióp cña MATLAB
rÊt rÔ dµng nÕu b¹n ®äc ®Õn phÇn colormaps..
Trong vÝ dô nµy, hµm
mesh
x¾p xÕp gi¸ trÞ cña c¸c phÇn tö cña ma trËn vµo c¸c ®iÓm
(XÞ,YÞ,ZÞ) trong kh«ng gian ba chiÒu.
mesh
còng cã thÓ vÏ mét ma trËn ®¬n t−¬ng tù nh− víi mét
®èi sè;
mesh(Z)
, sö dông c¸c ®iÓm (i,j,ZÞ). Nh− vËy Z ®−îc vÏ ng−îc l¹i víi c¸c chØ sè cña nã,
trong tr−êng hîp nµy
mesh(Z)
chØ ®¬n gi¶n lµ chia l¹i ®é kh¾c c¸c trôc x, y theo c¸c chØ sè cña ma
trËn Z. B¹n h·y thö t¹o vÝ dô cho tr−êng hîp nµy?.

131
§å thÞ bÒ mÆt cña cïng mét ma trËn Z tr«ng nh− ®å thÞ l−íi tr−íc ®ã, ngo¹i trõ kho¶ng c¸ch gi÷a
hai ®−êng lµ kh¸c nhau (gäi lµ patchs). §å thÞ lo¹i nµy dïng hµm
surf,
nã cã tÊt c¶ c¸c ®èi sè nh− hµm
mesh
. H·y xem vÝ dô d−íi ®©y (H×nh 18.4):
>> surf(X,Y,Z)
H×nh 18.4
§Ó lµm râ thªm mét vµi chñ ®Ò, chóng ta cïng quay l¹i hµm
peaks
®· ®a ra ë phÇn tr−íc. §å thÞ
l−íi trong kh«ng gian 3 chiÒu cña hµm nµy ®−îc ®−a ra nh− sau (h×nh 18.5):
>> mesh(peaks)
>> title('Mesh Plot of Peaks function')
H×nh 18.5

132
§å thÞ ®êng viÒn cho ta thÊy ®−îc ®é n©ng hoÆc ®é cao cña h×nh. Trong MATLAB ®å thÞ ®−êng
viÒn trong kh«ng gian hai chiÒu t−¬ng tù nh− trong kh«ng gian ba chiÒu nhng hµm gäi cña nã lµ
contour3. §å thÞ sö dông c¸c lÖnh sÏ ®−îc minh ho¹ trong b¶ng kh¾c mµu.
18.3 Thao t¸c víi ®å thÞ
MATLAB cho phÐp b¹n khai b¸o gãc ®Ó tõ ®ã quan s¸t ®−îc ®å thÞ trong kh«ng gian ba chiÒu.
Hµm
view(azimuth, elevation )
thiÕt lËp gãc xem b»ng viÖc khai b¸o
azimuth
vµ
elevation
. “Elevation
“ m« t¶ vÞ trÝ ng−êi quan s¸t, xem nh− lµ gãc ®o b»ng ®é trªn hÖ trôc x-y. ”Azimut m« t¶ gãc trong hÖ
trôc n¬i ng−êi quan s¸t ®øng.
Azimuth
®−îc ®o b»ng ®é tõ phÇn ©m trôc y. PhÝa ©m trôc y cã thÓ quay theo chiÒu kim ®ång hå
mét gãc -37.5 ®é tõ phÝa b¹n.
Elevation
lµ gãc mµ t¹i ®ã m¾t b¹n thÊy ®−îc mÆt ph¼ng x-y. Sö dông
hµm
view
cho phÐp b¹n cã thÓ quan s¸t h×nh vÏ tõ c¸c gãc ®é kh¸c nhau. VÝ dô nÕu
elevation
thiÕt lËp
lµ ©m, th×
view
sÏ nh×n h×nh tõ phÝa d−íi lªn. NÕu
azimuth
thiÕt lËp d−¬ng, th× h×nh sÏ quay ng−îc
chiÒu kim ®ång hå tõ ®iÓm nh×n mÆc ®Þnh.ThËm chÝ b¹n cã thÓ nh×n trùc tiÕp tõ trªn b»ng c¸ch thiÕt
lËp
view(0,90 )
. Thùc ra th× ®©y lµ ®iÓm nh×n mÆc ®Þnh 2 chiÒu, trong ®ã x t¨ng tõ tr¸i qua ph¶i, vµ y
t¨ng tõ trªn xuèng d−íi, khu«n d¹ng
view(2)
hoµn toµn gièng nh− mÆc
®Þnh cña
view(0, 90 )
, vµ
view(3)
thiÕt lËp mÆc ®Þnh trong kh«ng gian 3 chiÒu.
LÖnh
view
cã mét d¹ng kh¸c mµ rÊt tiÖn Ých khi sö dông lµ
view([X,Y,Z ])
cho phÐp b¹n quan s¸t
trªn mét vector chøa hÖ trôc to¹ ®é decac trong kh«ng gian 3 chiÒu. Kho¶ng c¸ch tõ vÞ trÝ b¹n quan
s¸t ®Õn gèc to¹ ®é kh«ng bÞ ¶nh h−ëng. VÝ dô,
view([0 10 0 ])
,
view([0 -1 0 ])
vµ
view(0, 0 )
cho
c¸c kÕt qu¶ nh− nhau. C¸c th«ng sè
azimuth
vµ
elevation
mµ b¹n ®ang quan s¸t cã thÓ lÊy l¹i ®−îc
b»ng c¸ch dïng
[az, e] = view
. VÝdô:
>> view([-7 -9 7])
>> [az,el] = view
az =
-37.8750
el =
31.5475
Mét c«ng cô h÷u dông kh¸c lµ quan s¸t ®å thÞ kh«ng gian 3 chiÒu bëi hµm
rotate3d.
C¸c th«ng sè
Azimtuh
vµ
elevation
cã thÓ ®−îc t¸c ®éng bëi chuét,
rotate3d on
cho phÐp chuét can thiÖp,
rotate3d
off
kh«ng cho phÐp.
LÖnh
hidden
dÊu c¸c nÐt khuÊt. Khi b¹n vÏ ®å thÞ, th× mét sè phÇn cña nã bÞ che khuÊt bëi c¸c
phÇn kh¸c, khi ®ã nÕu dïng lÖnh nµy th× c¸c nÐt khuÊt sÏ bÞ dÊu ®i, b¹n chØ cã thÓ nh×n phÇn nµo ë
trong tÇm nh×n cña b¹n. NÕu b¹n chuyÓn ®Õn
hidden off
, b¹n cã thÓ thÊy phÇn khuÊt ®ã qua m¹ng
l−íi. D−íi ®©y lµ vÝ dô:
>> mesh(peaks(20)+7)
>> hold on
>> pcolor(peaks(20))
>> hold off
>> title('Mesh with hiden on')

