Part I Basic

You might also like

Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 73

start on 5/8/2001 If you keep anything long enough, you can throw it

away.
Matlab

part I
Basis and languge
PhÇn 1. NhËp m«n vÒ ng«n ng÷ Matlab
Ch¬ng 1. C¸c kh¸i niÖm c¬ b¶n.
1.1 Khëi ®éng matlab (trong windows 9x).
1.2 C¸c phÝm chuyªn dông vµ c¸c lÖnh th«ng
dông hÖ thèng.
1.3 BiÕn vµ thao t¸c biÕn
1.4 Sè phøc
1.5 Lµm viÖc ë chÕ ®é héi tho¹i (command
window).
1.6 Lµm viÖc ë chÕ ®é so¹n ch¬ng tr×nh (edit
window).
1.7 S¬ lîc vÒ ®å ho¹.
1.8 C¸c hµm ©m thanh.
Ch¬ng 2. Ma trËn vµ c¸c phÐp to¸n ma trËn
2.1 V« híng, vector vµ ma trËn.
2.2 C¸c ma trËn ®Æc biÖt.
2.3 C¸c phÐp to¸n v« híng
2.4 C¸c phÐp to¸n ma trËn
Ch¬ng 3. LËp tr×nh trong Matlab
3.1 C¸c phÇn tö c¬ b¶n
3.2 Hµm vµ t¹o hµm
3.3 C©u lÖnh CÊu tróc
Ch¬ng 4. §å ho¹ 2 chiÒu
4.1 C¸c phÐp biÕn ®æi ®å ho¹.
4.2 PhÐp biÕn ®æi Affine trong mÆt ph¼ng
4.3. C¸c hµm chuÈn ®å ho¹ 2 chiÒu
Ch¬ng 5. §å ho¹ kh«ng gian 3D
5.1. Hµm ®ång møc (contour).
5.2. Chia líi.
5.3. §å ho¹ 3D.
5.4. MÆt líi ®å ho¹ 3D.
5.5. §å ho¹ bÒ mÆt.
5.6. §iÓm nh×n vµ phÐp phèi c¶nh.
5.7. MÆt c¾t (slice).

Page 1 of 73
5.8. MÇu s¾c vµ c¸c hÖ mµu

part II
matlab symbolic

part III
numerical method

Page 2 of 73
Basic concepts
ma trËn (matrix):
vÐc t¬ (vector):
v« híng (scalar):
kiÓu khèi(cell):

Page 3 of 73
PhÇn I
NhËp m«n vÒ ng«n ng÷ Matlab
Giíi thiÖu
-Matlab lµ phÇn mÒm cña c«ng ty Math Works céng hoµ SÐc.
-C«ng dông : Matlab lµ ch¬ng tr×nh phÇn mÒm trî gióp cho viÖc
tÝnh to¸n vµ hiÓn thÞ c¸c bµi to¸n kü thuËt. Matlab ®îc ®iÒu khiÓn
bëi tËp hîp c¸c lÖnh, t¸c ®éng qua bµn phÝm trªn cöa sæ ®iÒu
khiÓn (Command Window). Nã còng cho phÐp mét kh¶ n¨ng lËp
tr×nh víi th«ng dÞch tËp hîp lÖnh-lËp tr×nh scrip file.
-Matlab lµ viÕt t¾t cña tõ Matrix Laboratory.
-§Æc ®iÓm cña ng«n ng÷ Matlab:
+Xö lý c¸c ma trËn thùc, phøc, c¸c x©u kÝ tù.
+KÕt hîp phÐp tÝnh logic víi sè häc..
+C¸c hµm ®å ho¹ m¹nh vµ dÔ dµng kÕt hîp víi qu¸ tr×nh tÝnh
to¸n.
+Hç trî c¸c c«ng cô m¹nh cho c¸c øng dông cô thÓ
-ChÕ ®é lµm viÖc:
+Héi tho¹i ngêi-m¸y (user-machine at command window): Cho
phÐp nhËp lÖnh tõ bµn phÝm vµ thu ®îc c¸c kÕt qu¶ sö
lýlÖnh tõ m¸y tÝnh.
+ChÕ ®é lËp tr×nh: C¸c lÖnh ®îc chuÈn bÞ trªn mét file ch¬ng
tr×nh vµ cho phÐp ch¹y ch¬ng tr×nh tõ c¸c file lÖnh nµy.
-Cã nhiÒu phiªn b¶n kh¸c nhau (versions), cho phÐp ch¹y trªn c¸c
m¸y tÝnh cã hÖ ®iÒu hµnh kh¸c nhau nh DOS, UNIX, APPLE,
WINDOWS, LINUX...

-Víi Matlab, c¸c vÊn ®Ò cÇn gi¶i quyÕt cña b¹n sÏ ®îc ph©n tÝch vµ
xö lý theo 5 bíc nh sau[1]:
Bíc 1: §Æt vÊn ®Ò.
Bµi to¸n ®Æt ra cÇn ®îc ph©n tÝch, biÓu diÔn mét
c¸ch râ rµng vµ cô thÓ. §©y lµ bíc më ®Çu rÊt quan
träng, nã quyÕt ®Þnh toµn bé híng gi¶i quyÕt tiÕp theo
cña bµi to¸n ®Æt ra.
Bíc 2: M« t¶ c¸c gi¸ trÞ d÷ liÖu vµo/ra.
ViÖc m« t¶ c¸c th«ng tin cÇn gi¶i ®¸p cã liªn quan trùc
tiÕp ®Õn c¸c tham sè ®îc sö dông trong qu¸ tr×nh tÝnh
to¸n, bëi vËy bíc nµy cÇn ®îc tiÕn hµnh cÈn träng. Trong
nhiÒu trêng hîp, s¬ ®å khèi ®îc sö dông ®Ó x¸c ®Þnh
vÞ trÝ luång vµo/ra, tuy nhiªn ®«i khi chóng chØ lµ hép
®en v× kh«ng thÓ x¸c ®Þnh ®îc luång ra t¹i mét
®iÓm nµo ®ã trong c¸c bíc. MÆc dÇu vËy, ta vÉn chØ
ra ®îc nh÷ng th«ng tin ®Ó tÝnh to¸n luång ra.

Page 4 of 73
Bíc 3: C¸c tÝnh to¸n b»ng tay víi c¸c tËp d÷ liÖu ®Çu vµo
®¬n gi¶n
§©y lµ bíc ®Ó nh»m t×m kiÕm nh÷ng gi¶i ph¸p cô thÓ,
b¹n kh«ng nªn bá qua kÓ c¶ ®èi víi c¸c bµi to¸n ®¬n
gi¶n. NÕu trong bíc nµy b¹n cha lÊy ®îc d÷ liÖu hay cha
tÝnh ®îc ®Çu ra th× cã thÓ chuyÓn sang bíc kÕ tiÕp.
Bíc 4: ChuyÓn bµi to¸n sang gi¶i ph¸p b»ng Matlab.
ë bíc nµy b¹n sÏ sö dông c¸c hµm to¸n, còng lµ c¸c lÖnh
®Ó m« t¶ bµi to¸n theo Matlab
Bíc 5: KiÓm tra.
§©y lµ bíc cuèi cïng trong tiÕn tr×nh gi¶i bµi to¸n. Bµi
to¸n ®îc kiÓm tra b»ng c¸c d÷ liÖu ®Çu vµo. Matlab
thùc hiÖn bµi to¸n vµ cho b¹n kÕt qu¶ ë ®Çu ra.
Trong trêng hîp kh«ng cã kÕt qu¶ hoÆc kÕt qu¶ sai th×
®iÒu ®ã cã nghÜa lµ Matlab cha thùc hiÖn ®îc bµi to¸n,
b¹n cÇn kiÓm tra l¹i c¶ tÝnh to¸n b»ng tay vµ thao t¸c b»ng
Matlab.

Page 5 of 73
Ch¬ng 1
C¸c kh¸i niÖm c¬ b¶n

1.1 Khëi ®éng matlab (trong windows 9x).

-Khíi ®éng matlab: KÝch chuét vµo nót Start  chän Program 
chän Matlab  chän Matlab 5.3 hoÆc kÝch chuét vµo biÓu t-
îng cña Matlab trªn Desktop.
-Giao diÖn cña Matlab gåm :
+Mét cöa sæ lÖnh (command window)
+Mét cöa sæ so¹n (edit window)
th¶o
+NhiÒu cöa sè ®å (figures)
ho¹
-ViÖc ng¾t ch¬ng tr×nh ®ang thùc hiÖn kh«ng ®óng theo yªu cÇu
th«ng qua phÝm nãng Ctrl+C .
-§Ó tho¸t ra khái m«i trêng lµm viÖc Matlab, chóng ta cã thÓ sö
dông c¸c lÖnh cña Matlab lµ : » quit hoÆc » exit

1.2 C¸c phÝm chuyªn dông vµ c¸c lÖnh th«ng dông hÖ thèng.

C¸c phÝm lÖnh th«ng dông:


 hoÆc Ctrl-p Gäi l¹i lÖnh võa thùc hiÖn tríc ®ã.
 hoÆc Ctrl-n Gäi l¹i lÖnh ®· ®¸nh vµo tríc ®ã.
 hoÆc Ctrl-f ChuyÓn con trá sang ph¶i 1 kÝ tù.
 hoÆc Ctrl-b ChuyÓn con trá sang tr¸i 1 kÝ tù.
Ctrl-l hoÆc Ctrl- ChuyÓn con trá sang tr¸i 1 tõ.

Ctrl-r hoÆc Ctrl- ChuyÓn con trá sang ph¶i 1 tõ.

Ctr-a hoÆc ChuyÓn con trá vÒ ®Çu dßng.
Home
Ctrl-k Xo¸ tõ con trá ®Õn cuèi dßng.
Back Space Xo¸ kÝ tù tríc con trá.
Del Xo¸ kÝ tù t¹i vÞ trÝ con trá.

C¸c lÖnh hÖ thèng:


clc Xo¸ toµn bé cöa sæ dßng lÖnh.
clf Xo¸ cöa sæ ®å ho¹
compute LÖnh in dßng kÝ tù cho biÕt lo¹i m¸y tÝnh.
r
ctrl-c Dõng ch¬ng tr×nh khi r¬i vµo t×nh tr¹ng lÆp v«
h¹n.
demo LÖnh cho xem c¸c ch¬ng tr×nh mÉu.
exit,quit Tho¸t khái m«i trêng Matlab.
help LÖnh xem trî gióp vÒ ng«n ng÷, hµm,…

Page 6 of 73
input NhËp d÷ liÖu tõ bµn phÝm
load T¶i c¸c biÕn lu trong 1 file ®a vµo vïng lµm viÖc.
pause LÖnh t¹m thêi dõng ch¬ng tr×nh ®Õn phÝm bÊt
k× ®îc nhÊn.
save Lu gi÷ c¸c biÕn vµo file Matlab.mat
version Cho biÕt phiªn b¶n hiÖn t¹i cña Matlab.
ver Cho biÕt phiªn b¶n hiÖn t¹i cña c¸c toolbox ®· cã.
what Cho biÕt danh s¸ch Matlab-file th môc hiÖn t¹i.
which Cho biÕt ®êng dÉn cña 'file_name'.

1.3 BiÕn vµ thao t¸c biÕn.

1.3.1 BiÕn trong Matlab.

Tªn biÕn trong Matlab (tõ 5.3 trë ®i) cã thÓ dµi tíi 31 kÝ tù bao
gåm c¸c ch÷ c¸i A-Z hay a-z cïng c¸c ch÷ sè vµ dÊu g¹ch díi '_', tªn
ph¶i ®îc b¾t ®Çu b»ng ch÷ c¸i, tªn biÕn kh«ng ®îc ®Æt trïng víi
tªn c¸c tõ kho¸. Tªn c¸c hµm ®· ®îc ®Æt còng cã thÓ ®îc sö dông
lµm tªn cña biÕn, vµ hµm nµy sÏ mÊt t¸c dông cho ®Õn khi biÕn ®ã
®îc xo¸.
C¸c hµm t¸c ®éng lªn biÕn:
clear all Xo¸ tÊt c¶ c¸c biÕn hiÖn cã trong
vïng nhí.
clear ChØ xo¸ c¸c biÕn cã tªn chØ ®Þnh.
name2,name2,...
exist('name') Tr¶ vÒ ®Þnh nghÜa cña 'name':
0 nÕu 'name' kh«ng tån t¹i.
1 nÕu 'name' lµ biÕn.
2 nÕu 'name' lµ tªn m-file.
3 nÕu 'name' lµ MEX-file.
4 nÕu 'name' lµ MDL-file.
5 nÕu 'name' hµm built-in.
6 nÕu 'name' lµ P-file.
7 nÕu 'name' lµ tªn th môc.
pack LÖnh thùc hiÖn s¾p xÕp l¹i vïng nhí
cho c¸c biÕn. Khi bé nhí m¸y tÝnh
®Çy, lÖnh pack cho phÐp t¹o ra
thªm vïng nhí cho biÕn mµ kh«ng
ph¶i xo¸ c¸c biÕn ®· tån t¹i.
who HiÓn thÞ tªn c¸c biÕn.
whos HiÓn thÞ tªn vµ kiÓu c¸c biÕn.
who global HiÓn thÞ c¸c biÕn côc bé.
who -file 'filename' HiÓn thÞ c¸c biÕn trong tªp
filename.mat.

1.3.2 KÝch thíc cña biÕn.

Page 7 of 73
§é lín, hay chiÒu dµi cña biÕn vector còng nh ma trËn ®îc x¸c
qua c¸c hµm cã s½n cña Matlab.
size(A) Tr¶ vÒ vector 2 phÇn tö, phÇn tö ®Çu cho biÕt
sè hµng cña ma trËn, phÇn tö ®Çu cho biÕt sè
cét cña ma trËn
[m,n]=size( Tr¶ gi¸ trÞ ®é lín cña ma trËn, m-sè hµng, n-sè
A) cét.
size(A,p) Tr¶ vÒ sè hµng nÕu p=1 vµ sè cét nÕu p2.
length(x) Tr¶ vÒ gi¸ trÞ sè lîng phÇn tö cña x.
length(A) Tr¶ gi¸ vÒ trÞ max(m,n) víi [m,n]=size(A).

1.3.3 Mét sè biÕn ®îc ®Þnh nghÜa tríc.

ans BiÕn cã s½n ®îc dïng lu kÕt qu¶ phÐp tÝnh cuèi cïng.
eps Tr¶ vÒ ®é chÝnh x¸c t¬ng ®èi tÝnh to¸n cña m¸y x¸c
®Þnh kho¶ng tõ 1.0 ®Õn sè ph¶y ®éng lín nhÊt tiÕp
theo. EPS ®îc sö dông lµ sai sè cho phÐp mÆc ®Þnh
cña pinv, rank vµ c¸c hµm kh¸c.
pi Tr¶ vÒ trÞ 3.1415926535897…
realmax Cho biÕt gi¸ trÞ lín nh
Êt m¸y tÝnh cã thÓ tÝnh to¸n ®îc, c¸c sè lín h¬n gi¸
trÞ nµy sÏ g©y trµn trªn.
realmin Cho biÕt gi¸ trÞ nhá nhÊt m¸y tÝnh cã thÓ tÝnh to¸n
®îc, c¸c sè lín bÐ gi¸ trÞ nµy sÏ g©y trµn díi.
inf biÓu diÔn sè v« cïng 
NaN biÓu diÔn kÕt qu¶ 0/0, -

1.4 Sè phøc.

1.4.1 C¸c phÐp to¸n ®èi víi sè phøc.


Cho c¸c sè phøc z1=a1+i*b1, z2=a2+i*b2, víi a1,a2,b1,b2 lµ c¸c sè
thùc.
PhÐp to¸n KÕt qu¶
z1z2 (a1+a2)i(b1+b2)
z1*z2 (a1*a2-b1*b2)+i(a1*b2+a2*b1)
z1 (a1 * a2  b1 * b2 )  i (a2 * b1  a1b2 )
z2 a22  b22
|z1| a12  b12 §é lín (magnitude)hay modul cña sè
phøc.
z1* a1-ib1 Sè phøc liªn hîp.

1.4.2 Mét sè hµm ®Æc biÖt cña sè phøc.

real(a+i*b) Hµm cho gi¸ trÞ phÇn thùc a cña sè phøc.


imag(a+i*b Hµm cho gi¸ trÞ phÇn ¶o b cña sè phøc.
)
conj(a+i*b) Hµm tr¶ vÒ sè phøc liªn hîp a-i*b.

Page 8 of 73
abs(a1+i*b1 Tr¶ vÒ modul a12  b12 cña sè phøc
)
angle(a+i*b TÝnh gãc cã gi¸ trÞ lµ atan2(b,a), gi¸ trÞ gãc 
)

1.4.3 To¹ ®é biÓu diÔn sè phøc.


Ta cã thÓ biÓu diÔn sè phøc a+i*b trªn hÖ trôc to¹ ®é. §èi víi
hÖ trôc to¹ ®é ®Òc¸c phÇn thùc ®îc biÓu diÔn trªn trôc x: x=a,
phÇn ¶o ®îc biÓu diÔn trªn trôc y: y=b. §èi víi hÖ to¹ ®é cùc, sè
phøc ®îc biÓu diÔn bëi ,.
Trong ®ã: y
  a 2  b2 , (a,b
b b
  tan 1 .  )
a
ngîc l¹i:  a x
a   cos( ),
b   sin( ).

H×nh BiÓu diÔn sè phøc


Trong hÖ to¹ ®é cùc: ®é lín (magnitude) vµ pha (phase) cña sè
phøc sÏ ®îc tÝnh to¸n nh sau:
>>r=abs(z);
>>theta=angle(z);
BiÓu diÔn sè phøc theo ®é lín vµ phase nh sau:
>>z=r*axp(i*theta);
Trong hÖ to¹ ®é ®Òc¸c, phÇn thùc (real) vµ phÇn ¶o
(imaginary) se ®îc tÝnh to¸n nh sau:
>>a=real(z);
>>b=imag(z);
BiÓu diÔn sè phøc:
>>z=a+i*b;

1.5 Lµm viÖc ë chÕ ®é héi tho¹i (command window).

-T¹i dÊu mêi » gâ dßng lÖnh, dßng lÖnh sÏ ®îc thùc hiÖn ngay lËp
tøc sau khi nhÊn phÝm Enter  . KÕt qu¶ sÏ ®îc ®a ra cöa sæ lÖnh
hoÆc cöa sæ ®å ho¹. NÕu cã lçi, lçi sÏ ®îc ghi ngay t¹i cöa sæ
lÖnh.
-Qui t¾c viÕt dßng lÖnh:
+Trªn 1 dßng cã thÓ viÕt nhiÒu lÖnh, c¸c lÖnh ®îc ph©n c¸ch
bëi dÊu ',' hoÆc ';'. NÕu kÕt qu¶ lÖnh tr¶ vÒ gi¸ trÞ sè vµ kÕt thóc
bëi dÊu ',' kÕt qu¶ sÏ ®îc in trªn cöa sæ lÖnh, cßn nÕu kÕt thóc bëi
dÊu ';' kÕt qu¶ sÏ kh«ng ®îc in ra. Víi c¸c lÖnh kh«ng tr¶ vÒ biÕn
nµo, dÊu ph©n c¸ch lÖnh ',' vµ ';' lµ nh nhau.
+Khi lÖnh qu¸ dµi, hoÆc muèn viÕt trªn nhiÒu dßng lÖnh dïng
dÊu ... ®Ó matlab nhËn dßng tiÒp theo.

Page 9 of 73
-ChØ nªn sö dông chÕ ®é héi tho¹i khi gi¶i bµi to¸n cã cÊu tróc ®¬n
gi¶n. Cßn víi bµi to¸n cã cÊu tróc phøc t¹p nªn sö dông chÕ ®é lËp
tr×nh.

VÝ dô : Gi¶i ph¬ng tr×nh 3x2-2x-1=0; vµ ax2+bx+c=0;


» eq=[3 -2 -1]; » syms a b c x;
» n0=roots(eq) » eq=a*x^2+b*x+c;
» n0=solve(eq,x)
n0 =
n0 =
1.0000
-0.3333 [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]

1.6 Lµm vÖc ë chÕ ®é viÕt ch¬ng tr×nh.

-T¹i cöa sæ lÖnh (Command Window) chän File menu  New  m-


file ®Ó vµo chÕ ®é so¹n th¶o viÕt ch¬ng tr×nh. HoÆc më m-file
cã s½n ®Ó söa, chän File menu  Open  chän m-file cÇn söa,
hoÆc viÕt t¹i cöa sæ lÖnh dßng lÖnh » edit filename.

-Ch¹y file ch¬ng tr×nh ®· so¹n th¶o: Cã 3 c¸ch.


+Ch¹y ngay t¹i cöa sæ so¹n th¶o: Tool menu  Run , chØ dïng
®îc khi file ®îc lu (Save) vµo th môc hiÖn t¹i (current path).
+Ch¹y trong cöa sæ lÖnh: >>edit tªn_m_file  .
+Ch¹y trong cöa sæ lÖnh: File menu Run Script... viÕt tªn
file, hoÆc chän Browse ®Ó t×m m-file cÇn ch¹y.

1.7 S¬ lîc vÒ ®å häa.

1.7.1 C¸c lÖnh ®å ho¹ th«ng dông.

Kh¶ n¨ng ®å ho¹ trong Matlab rÊt phong phó cho phÐp vÏ hÇu
hÕt c¸c d¹ng ®å thÞ vµ c¸c d¹ng biÓu ®å cho c¸c th«ng tin trong
mÆt ph¼ng (2D) vµ trong kh«ng gian (3D).
c¸c lÖnh ®å ho¹ ®¬n gi¶n:
plot(x1,y1,s1,x2,y VÏ c¸c ®å thÞ trong mÆt ph¼ng to¹
2,s2,..) ®é ®Òc¸c víi kiÓu ®êng chØ ®Þnh
trong s1,s2..
plot(y) NÕu y lµ d·y sè
thùcplot(i=1:length(y),y).
nÕu y lµ sè
phøcplot(real(y),imag(y)).
plot3(x1,y1,z1,s1,. VÏ c¸c ®å thÞ trong kh«ng gian to¹
.) ®é ®Òc¸c víi kiÓu ®êng chØ ®Þnh
trong s1,..
title('tiªu ®Ò ®å §a tiªu ®Ò ®å thÞ.

Page 10 of 73
thÞ')
xlabel, ylabel, §a vµo c¸c nh·n cho c¸c trôc x, y, z.
zlabel
legend LÖnh ®a vµo chó thÝch ®êng vÏ.
grid LÖnh vÏ c¸c ®êng dãng trªn ®å thÞ.
Vi du ve ham 3D

VÝ dô:
» t=linspace(0,2*pi,40); 8

» plot3(sin(t),t.*cos(t),t);
6
» title('Vi du ve ham 3D');
» xlabel('x'),ylabel('axis y'), 4

t
» zlabel('t'), grid on; 2

0
10
1
5
0.5
0 0
-0.5
axis y -5 -1
x

1.7.2 In Ên trªn cöa sæ ®å H×nh §å thÞ kh«ng gian


ho¹. 3D
ViÖc in c¸c ¶nh ®å ho¹ cã thÓ thùc hiÖn th«ng qua c¸c menu
lÖnh trªn cöa sæ ®å ho¹ hoÆc c¸c lÖnh cña Matlab.
>>print; %In cöa sæ ®å ho¹ hiÖn thêi ra m¸y in.
>>print filename % In cöa sæ ®å ho¹ hiÖn thêi ra tÖp filename.fig.

1.7.3 Mét vµi vÝ dô minh ho¹.


VÏ ®å thÞ c¸c hµm y=sin(x), y=x*cos(x), y=ln(x 2+1) trong
kho¶ng -2x2.
» x=linspace(-2,2);
» y1=sin(x);y2=x.*cos(x);y3=log(x.^2+1);
» plot(x,y1,x,y2,x,y3);
» legend('sin(x)','xcos(x)','ln(x^2+1)');
2
sin(x)
xcos(x)
ln(x2+1)
1.5

0.5

-0.5

-1
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

x  t 3  3t  1;
VÏ ®êng cong tham sè cho bëi ph¬ng tr×nh: 
 y  t 3  3t  1;
» t=linspace(-2.5,2.5);x=t.^3-3*t+1;y=t.^3+3*t-1;
» plot(x,y);grid on;axis tight;
» xlabel('x'); ylabel('y');title('Do thi duong cong tham so');

Page 11 of 73
Do thi duong cong tham so

20

15

10

y
-5

-10

-15

-20

-6 -4 -2 0 2 4 6 8
x

H×nh

VÏ phæ mµu cña mÆt z  f ( x, y )  ( x 2  3 y 2 )e  ( x , trong kh«ng gian


2
 y2 )

2D.
» [x,y]=meshgrid(linspace(-2,2));
» z=(x.^2-3*y.^2).*exp(-(x.^2+y.^2));pcolor(x,y,z);
» shading interp; colorbar;

H×nh

1.8 C¸c hµm ©m thanh.

Matlab cho phÐp t¹o ©m thanh th«ng qua c¸c vector bëi hµm
sound().
sound(v) T¹o tÝn hiÖu tõ vector v ra ©m thanh,
vector v ph¶i ®îc chuÈn ho¸ -1y1, c¸c
gi¸ trÞ ngoµi kho¶ng sÏ bÞ c¾t, tèc ®é
mÉu mÆc ®Þnh lµ 8192Hz. Muèn cã ©m
thanh stereo v lµ vector 2 cét.
sound(v,fs) Thùc hiÖn nh hµm sound(v) víi f lµ d¶i
tÇn Hz.
sound(y,fs,bi T¹o ©m thanh víi tèc ®é mÉu bits/mÉu
ts) nÕu cã kh¶ n¨ng. HÇu hÕt c¸c thiÕt bÞ

Page 12 of 73
cho phÐp bits=8 hay 16.
soundsc(v,sli T¬ng tù sound() nhng sÏ t¹o ©m thamh
m) víi gi¸ trÞ sè bÊt k× cña v, v sÏ ®îc chuÈn
ho¸ theo slim=[slow s high], mÆc ®Þnh
slim=[min(v) max(v)]

Page 13 of 73
ch¬ng 2
Ma trËn vµ c¸c phÐp to¸n ma trËn
2.1 V« híng, vector vµ ma trËn.
Ma trËn (matrix) lµ 1 b¶ng sè mµ c¸c phÇn tö cña nã ®îc s¾p
xÕp theo hµng vµ cét. Ma trËn chØ cã mét hµng hoÆc mét cét ®îc
gäi lµ vÐc t¬ (vector). Ma trËn chØ cã mét hµng vµ mét cét ®îc gäi
lµ ®¹i lîng v« híng (scalar).
KÝ hiÖu to¸n häc ma trËn vµ vector:

Ma trËn (mxn) Vector cét vc, vector


hµng vr
 a11 a12  a1n   v1 
   
a a22  a2 n   v2 
Amn   21 vc   
   
   
a am 2  amn  v 
 m1  q

vr  v1 v2  vp 
Víi aij (i=1..n; j=1..m), vk (k=1..q; k=1.p) lµ c¸c trÞ v« h-
íng.
KÝch thíc cña ma trËn thÓ hiÖn b»ng kÝ hiÖu (mxn),
nghÜa lµ cã m hµng vµ n cét.
kÝch thíc cña vector vr lµ (1xp), cña vc lµ (qx1), cña v« h-
íng lµ (1x1).
§é lín hay chiÒu dµi cña vector vr lµ p, cña vc lµ q.
§Ó cho tiÖn tõ ®©y vÒ sau gäi ma trËn ®¹i diÖn cho vector
hay v« híng.

2.1.1 NhËp gi¸ trÞ cho ma trËn.


Cã 4 c¸ch vµo d÷ liÖu cho c¸c biÕn ma trËn.
+LiÖt kª trùc tiÕp c¸c phÇn tö cña ma trËn.
+§äc d÷ liÖu tõ mét file d÷ liÖu.
+Sö dông to¸n tö (:).
+Vµo d÷ liÖu trùc tiÕp tõ bµn phÝm.
Qui t¾c ®Þnh nghÜa ma trËn trong Matlab:
Tªn_matrËn=[a11,a12,a13; a21 a22,a23; a31 a32 a33];
+Tªn_matrËn ®Æt theo qui c¸ch tªn biÕn.
+Néi dung trong ngoÆc vu«ng [ ] ®Ó ®Þnh nghÜa c¸c
phÇn tö.
+DÊu chÊm phÈy (;) dïng ®Ó ph©n c¸ch c¸c hµng. C¸c gi¸
trÞ trong hµng ®îc ph©n c¸ch bëi dÊu phÈy (,), hoÆc dÊu
c¸ch (space bar).
Ma trËn rçng ®îc kÝ hiÖu lµ [ ].
a. LiÖt kª trùc tiÕp.
Lµ c¸ch ®Þnh nghÜa ®¬n gi¶n nhÊt. C¸c phÇn tö ®îc liÖt kª
trong dÊu ngoÆc vu«ng.
>>c=5.8978; %v« híng

Page 14 of 73
>>b=[1.2 -2 3.01 4+i*3.234]; %vector hµng
>>e=[-2;3;i]; %vector cét
>>A=[1 0 0; 0 1 0; 0 0 1]; %ma trËn 3x3
Cã thÓ xuèng dßng ®Ó ph©n biÖt tõng hµng cña ma trËn.
>>e=[-2
3
i];
>>A=[1 0 0
010
0 0 1];
Cã thÓ ®Þnh nghÜa ma trËn tõ c¸c phÇn tö kh¸c.
>>a=[1 2.4 -4.7];
>>b=[1.3 -34.67 a];
>>A=[a;a];
Ma trËn b cã gi¸ trÞ lµ [1.3 -34.67 1 2.4 -4.7];
Ma trËn A cã gi¸ trÞ lµ[1 2.4 -4.7;1 2.4 -4.7];
Truy cËp c¸c phÇn tö cña ma trËn b»ng c¸ch sö dông chØ sè cña
nã:
>>s=a(3); %s cã gi¸ trÞ lµ -4.7
>>a(1)=3.14; %phÇn tö thø nhÊt cña a thay ®æi tõ 1 thµnh
3.14
Còng cã thÓ më réng ma trËn b»ng c¸ch thªm cho nã phÈn tö
míi. Cho c©u lÖnh sau:
>>a(4)=-1.98;
ma trËn a lóc nµy sÏ cã 4 phÇn tö a=[1 2.4 -4.7 -1.98];
cßn víi c©u lÖnh:
>>a(7)=2.07;
th× ma trËn a sÏ cã 7 phÇn tö, c¸c phÇn tö a(5), a(6) sÏ tù ®éng
nhËn gi¸ trÞ lµ 0.

b. §äc d÷ liÖu tõ 1 file d÷ liÖu.


Sö dông hµm load ®Ó t¶i d÷ liÖu tõ c¸c biÕn ®· ®îc t¹o tríc
®ã.

c. Sö dông to¸n tö (:). xem '2.4.4 C¸c thao t¸c ma trËn'

d. Vµo sè liÖu trùc tiÕp tõ bµn phÝm.


Sö dông có ph¸p nhËp d÷ liÖu tõ bµn phÝm nh sau:
>>A=input('NhËp d÷ liÖu cho A: ');
Khi thùc hiÖn lÖnh nµy m¸y sÏ hiÓn thÞ x©u kÝ tù 'NhËp d÷
liÖu cña A: ' vµ ®îi ngêi sö dông nhËp sè liÖu vµo. Néi dung nhËp
liÖu t¬ng tù c©u lÖnh th«ng thêng cho ma trËn, vµ cell.

2.1.2 HiÓn thÞ ma trËn.


Matlab cho phÐp hiÓn thÞ ma trËn sè theo nhiÒu d¹ng kh¸c
nhau vµ cung cÊp nhiÒu hµm ®Ó xö lý viÖc hiÓn thÞ ma trËn sè.
C¸c d¹ng thøc (format) biÓu diÔn sè:

Page 15 of 73
format short Sè dÊu phÈy cè ®Þnh, víi 5 ch÷ sè cã nghÜa
sau dÊu ph¶y
format long Sè dÊu phÈy cè ®Þnh, víi 15 ch÷ sè cã
nghÜa sau dÊu ph¶y
format short Sè dÊu phÈy ®éng, víi 5 ch÷ sè cã nghÜa sau
e dÊu ph¶y
format long Sè dÊu phÈy ®éng, víi 15 ch÷ sè cã nghÜa
e sau dÊu ph¶y
format short Lùa chän tèt nhÊt phÈy cè ®Þnh hay ®éng
g víi 5 ch÷ sè cã nghÜa sau dÊu ph¶y
format long Lùa chän tèt nhÊt phÈy cè ®Þnh hay ®éng
g víi 15 ch÷ sè cã nghÜa sau dÊu ph¶y
format rat BiÓu thÞ sè thùc vÒ sè h÷u tØ gÇn nhÊt.
disp HiÓn thÞ néi dung cña biÕn.
fprintf Hµm cho phÐp hiÓn thÞ theo c¸c khu«n d¹ng
chØ ®Þnh.
sprintf Hµm tr¶ vÒ x©u kÝ tù in theo c¸c khu«n d¹ng
chØ ®Þnh.

2.2 C¸c ma trËn ®Æc biÖt.


Matlab cung cÊp nhiÒu hµm lu c¸c h»ng cho phÐp sinh ma trËn
cã d¹ng ®Æc biÖt.
Ma trËn Gi¶i thÝch Ma trËn vu«ng
mxn nxn
rezos(m,n) ma trËn kh«ng rezos(n)
ones(m,n) ma trËn ®¬n vÞ ones(n)
eye(m,n) ma tr©n ®¬n vÞ ®êng chÐo më eye(n)
réng
rand(m,n) ma trËn ngÉu nhiªn ph©n bè rand(n)
®Òu  (0,1)
randn(m,n) ma trËn ngÉu nhiªn ph©n bè randn(n)
chuÈn thuéc (-1,1) .
linspace(a,b t¹o vect¬ n phÇn tö c¸ch ®Òu tõ a ®Õn b, m¨c ®Þnh
,n) n=100;
logspace(a, vect¬ n phÇn tö hµm mò thËp ph©n tõ 10 a ®Õn 10b,
b,n) mÆc ®Þnh n=50;
magic(n) sinh ma trËn ma ph¬ng cÊp n
pascal(n) sinh ma trËn Pascal
compan(p) sinh ma trËn cã ®a thøc ®Æc
trng p
[out1,out2,...] = gallery(matname, param1, param2, ...)% Xem
help gallery.
hadamard, hankel,hilb, invhilb, kron, roserr, toeplitz,vander,
wilkinson.

2.3 C¸c phÐp to¸n v« híng

Page 16 of 73
2.3.1 BiÓu thøc sè häc cho v« híng.
PhÐp to¸n BiÓu thøc sè häc Matlab
Céng a+b a+b
Trõ a-b a-b
Nh©n a.b a*b
Chia a/b a/b
Chia tr¸i b:a a\b
Luü thõa ab a^b

2.3.2 Thø tù u tiªn c¸c to¸n tö.


Khi mét sè to¸n tö kÕt hîp trong biÓu thøc, ®iÒu quan träng
nhÊt lµ ph¶i biÕt thø tù u tiªn c¸c to¸n tö trong biÓu thøc.
Thø tù u tiªn To¸n tö
1 NgoÆc ®¬n ().
2 Gäi hµm.
3 Luü thõa.
4 Nh©n, chia tõ tr¸i qua ph¶i.
5 Céng, trõ tõ tr¸i qua ph¶i.

2.3.3 C¸c phÐp to¸n vector.


PhÐp to¸n C«ng thøc Matlab
Céng a+b a+b
Trõ a-b a-b
Nh©n m¶ng a.b a.*b
Chia ph¶i m¶ng a/b a./b
Chia tr¸i m¶ng a\b a.\b
Luü thõa m¶ng ab a.^b
C¸c phÐp to¸n trªn ¸p dông cho c¸c ma trËn cïng kÝch thíc,
hoÆc ma trËn víi v« híng.
VÝ dô:
A=[1 2 3;7 -6 5;3 0 -1];
B=[1.1 2.4 5.6;-1 -3.6 8;-3 2 -1];
a=[1 2 7 -2];
b=[1 0 2 2];
c=2;
A.*B a.*b
ans = ans =
1.1000 4.8000 16.8000 1 0 14 -4
-7.0000 21.6000 40.0000 a./b
-9.0000 0 1.0000 Warning: Divide by zero.
ans =
A.^B 1.0000 Inf 3.5000 -1.0000
ans = b.\a
1.0e+005 * ans =
0.0000 0.0001 0.0047 1.0000 0 0.2857 -1.0000
0.0000 0.0000 + 0.0000i 3.9063 a.^b
0.0000 0 -0.0000 ans =
1 1 49 4

Page 17 of 73
A.^c a+b
ans = ans =
1 4 9 2 2 9 0
49 36 25 b.^c
9 0 1 ans =
A+B 1 0 4 4
ans = c.^a
2.1000 4.4000 8.6000 ans =
6.0000 -9.6000 13.0000 2.0000 4.0000 128.0000
0 2.0000 -2.0000 0.2500
a+c
B+c
ans =
ans =
3 4 9 0
3.1000 4.4000 7.6000
c./a
1.0000 -1.6000 10.0000
ans =
-1.0000 4.0000 1.0000
2.0000 1.0000 0.2857
-1.0000

2.4 C¸c phÐp to¸n ma trËn

2.4.1 C¸c phÐp to¸n ma trËn.

PhÐp to¸n C«ng thøc Matlab


ChuyÓn vÞ Bnm=ATmnvíi A.'
B={bÞj=aji}nm
ChuyÓn vÞ vµ lÊy liªn Bnm=ATmnvíi A'
hîp phøc B={bÞj=a*ji}nm
Céng, trõ {aijbij}mn=AmnBmn AB
Nh©n n A*B
{ cij   aik bkj
k 1
}mp=Amn*Bnp
Chia ph¶i Cnp=Amn/Bpm A/B
Chia tr¸i Cqn=Apq\Bpn A\B
Luü thõa ma trËn p
A nn, (p-nguyªn) A^p
Ma trËn nghÞch ®¶o A-1nn inv(A), A^(-1)
-1
Ma trËn tùa nghÞc ®¶o Tnm=A mn pinv(A)
TÝch v« híng cña hai  m  sum(A.*B)
ma trËn Amn Bmn   ci   aij bij  tÝch v« híng
 j 1 1n cña c¸c cét
KÝ hiÖu vÕ ph¶i lµ kÕt qu¶ cña phÐp to¸n, chØ sè mxn lµ cho
ma trËn bÊt k×, chØ sè nxn lµ chØ cho ma trËn vu«ng; trong c¸c
c«ng thøc cã cïng chØ sè lµ b¾t buéc ph¶i tho¶ m·n míi ¸p dông ®îc
phÐp to¸n.
VÝ dô:
A=[1 2 3; 4 -5 6];
D=[i 2 -6;5 4 2-i];
E=[1;i;-3];
B=[1 -1;-1 2];
C=[1 -1;2 -1;-1 3];

Page 18 of 73
A+D D.'
ans = ans =
1.0000 + 1.0000i 4.0000 -3.0000 0 + 1.0000i 5.0000
9.0000 -1.0000 8.0000 - 1.0000i 2.0000 4.0000
-6.0000 2.0000 -
1.0000i
A*E B*A D'
ans = ans = ans =
-8.0000 + -3 7 -3 0 - 1.0000i 5.0000
2.0000i 7 -12 9 2.0000 4.0000
-14.0000 - 5.0000i -6.0000 2.0000 - 1.0000i
inv(B) B^3 pinv(A)
ans = ans = ans =
2 1 5 -8 0.0310 0.0471
1 1 -8 13 0.2291 -0.1006
0.1702 0.0514
B*inv(B) A*pinv(A) pinv(E)
ans = ans = ans =
1 0 1.0000 -0.0000 0.0909 0 - 0.0909i -0.2727
0 1 0.0000 1.0000
A\D A/D
ans = ans =
0 0 0 -0.3023 - 0.0284i 0.3874
-0.5556 + 0.2222i 0.0000 + 0.0562i
-1.5556 + 0.1111i -1.1033 - 0.0920i 0.1669 +
0.3704 + 0.1852i 0.6667 -0.9630 - 0.0984i
0.0741i

2.4.2 C¸c thao t¸c ma trËn.

Matlab cung cÊp nhiÒu hµm cho phÐp thao t¸c trªn ma trËn:
Hµm Thao t¸c
Rot90(A,n) C¸c phÇn tö cña ma trËn A ®îc quay mét gãc 90o ng-
îc chiÒu kim ®ång hå. NÕu cã thªm tham sè n sÏ
quay n lÇn.
fliplr(A) §¶o c¸c phÇn tö cña ma trËn A tõ tr¸i sang ph¶i.
flipud(A) §¶o c¸c phÇn tö cña ma trËn A tõ trªn xuèng díi.
Bpq=Reshape(A §Þnh d¹ng l¹i ma trËn, yªu cÇu pxq=mxn.
mn)

sort(A) Tr¶ vÒ ma trËn víi c¸c cét ®îc s¾p xÕp tõ nhá ®Õn lín. Sè
phøc ®îc xÐt b»ng modul cña nã.
ChÝch c¸c phÇn tö cña ma trËn.
diag(A) LÊy c¸c phÇn tö cña ma trËn trªn ®êng chÐo chÝnh, tr¶ vÒ
vector cét
diag(A,k LÊy c¸c phÇn tö cña ma trËn trªn ®êng chÐo tuú chän k:
) k=0 chän ®êng chÐo chÝnh.
k>0 chän ®êng chÐo thø k ë phÝa trªn ®êng chÐo
chÝnh.
k<0 chän ®êng chÐo thø k ë phÝa díi ®êng chÐo
chÝnh.
triu(A) Lµ ma trËn cïng cì víi A. LÊy c¸c phÇn tö trªn ®êng chÐo

Page 19 of 73
chÝnh thø vµ phÝa trªn ®êng chÐo chÝnh. c¸c vÞ trÝ kh¸c
b»ng kh«ng.
triu(A,k) LÊy c¸c phÇn tö ë phÝa trªn ®êng chÐo thø k vµ phÝa trªn.
tril(A) Lµ ma trËn cïng cì víi A. LÊy c¸c phÇn tö trªn ®êng chÐo
chÝnh vµ n»m díi ®êng chÐo chÝnh. c¸c vÞ trÝ kh¸c b»ng
kh«ng.
tril(A,k) LÊy c¸c phÇn tö ë phÝa díi ®êng chÐo chÝnh thø k vµ phÝa
díi.
Thao t¸c c¸c phÇn tö cña ma trËn.
A(i,j) Thao t¸c phÇn tö aij cña ma trËn A.
i=1,m; [m,n]=size(A).
j=1,n
: To¸n tö
x=a:d:b T¹o vector hµng x=a:d:b, t¹o cÊp sè p phÇn tö (p=[(b-
y=a:b a)/d], p lµ phÇn nguyªn) x(i)=a+i*d víi i=1,2,..,p.
b>a nÕu d>0.
b<a nÕu d<0.
nÕu d=1 viÕt y=a:b;
A(:,k) Thao t¸c cét thø k cña ma trËn.
A(l,:) Thao t¸c hµng thø l cña ma trËn.
A(:) Nèi c¸c cét cña ma trËn A thµnh vector cét.
end To¸n tö
A(end) Thao t¸c phÇn tö cuèi cïng cña ma trËn.
A(end,k) Thao t¸c phÇn tö cuèi cïng cña cét thø k.
A(l,end) Thao t¸c phÇn tö cuèi cïng cña hµng thø l.
A(p:q,k) Thao t¸c phÇn tö tõ vÞ trÝ p ®Õn vÞ trÝ q cña cét thø
k.
A(l,p:q) Thao t¸c phÇn tö tõ vÞ trÝ p ®Õn vÞ trÝ q cña hµng
thø l.
A(p:q,l:k Thao t¸c ma trËn con .
)
x(v) Thao t¸c c¸c phÇn tö ®îc cho trong vector chØ sè v.
A(:,v) Thao t¸c c¸c cét chØ ®Þnh trong vector chØ sè v.
A(v,:) Thao t¸c c¸c hµng chØ ®Þnh trong vector chØ sè v.

C¸c hµm läc ma trËn:


find(exprA) Tr¶ vÒ chØ sè c¸c phÇn tö cña A tho¶ m·n
biÓu thøc logic exprA cña A.
find(A) Tr¶ vÒ vÞ trÝ c¸c phÇn tö cña A kh¸c kh«ng.
y=A(exprA) Tr¶ vÒ c¸c phÇn tö cña A tho¶ m·n biÓu
y=A(A>0) thøc.
y=A(fimag(A)==0) Tr¶ vÒ c¸c phÇn tö cña A lín h¬n kh«ng.
y=A(a<=A&A<b) Tr¶ vÒ c¸c phÇn tö cña A lµ sè thùc.
Tr¶ vÒ c¸c phÇn tö cña A thuéc ®o¹n [a,b).
VÝ dô 1:
A=[1 3 5 7; 2 4 6 8;9 8 7 6];
B=rot90(A);

Page 20 of 73
C=rot90(A,2);
E=fliplr(A);
D=flipud(A);
F=reshape(A,6,2);
a=A(:);
b=A(:,2);
c=A(3,:);
d=A(1:3,2);
e=A(end);
f=A(1:2,2:3);
v=[1 3 5 7];
g=A(v);

Page 21 of 73
A= F= b=
1 3 5 7 1 5 3
2 4 6 8 2 6 4
9 8 7 6 9 7 8
B= 3 7 c=
7 8 6 4 8 9 8 7 6
5 6 7 8 6 d=
3 4 8 a= 3
1 2 9 1 4
C= 2 8
6 7 8 9 9 e=
8 6 4 2 3 6
7 5 3 1 4 f=
E= 8 3 5
7 5 3 1 5 4 6
8 6 4 2 6 v=
6 7 8 9 7 1 3 5 7
D= 7 g=
9 8 7 6 8 1 9 4 5
2 4 6 8 6
1 3 5 7
VÝ dô 2:
A=[1+i 1-3*i 12; 1 2.3 -4;2 -1-2.1*i -1; 1 2 4];
rA=A(find(imag(A)==0));
pA=A(find(A>0));
nA=A(find(A<0));
aAb=A(find(1<A&A<4));
sA=sort(A);
rA = -1.0000 - 2.1000i
1.0000 -4.0000
2.0000 -1.0000
1.0000
2.3000 aAb =
2.0000 2.0000
12.0000 2.3000
-4.0000 2.0000
-1.0000
4.0000 sA =
pA = 1.0000 2.0000 -1.0000
1.0000 + 1.0000i 1.0000 2.3000 4.0000
1.0000 1.0000 + 1.0000i -1.0000 - 2.1000i -4.0000
2.0000 2.0000 1.0000 - 3.0000i 12.0000
1.0000
1.0000 - 3.0000i
2.3000
2.0000
12.0000
4.0000
nA =
VÝ dô 3:
A=[1+i 1-3*i 12; 1 2.3 -4;2 -1-2.1*i -1; 1 2 4];
tuA=triu(A)
tuA1=triu(A,2)
tuA1=triu(A,-1)
tlA=tril(A)
tlA1=tril(A,2)
tlA1=tril(A,-1)
tuA = 0 -1.0000 - 2.1000i
1.0000 + 1.0000i 1.0000 - 3.0000i -1.0000
12.0000 0 0
0 2.3000 4.0000
-4.0000
0 0
-1.0000 tlA =
0 0 1.0000 + 1.0000i 0
0 0
tuA1 = 1.0000 2.3000
0 0 12 0
0 0 0 2.0000 -1.0000 - 2.1000i
0 0 0 -1.0000
0 0 0 1.0000 2.0000
tuA1 = 4.0000
1.0000 + 1.0000i 1.0000 - 3.0000i tlA1 =
12.0000 1.0000 + 1.0000i 1.0000 - 3.0000i
1.0000 2.3000 12.0000
-4.0000 1.0000 2.3000
-4.0000
2.0000 -1.0000 - 2.1000i 0 0 0
-1.0000 1.0000 0 0
1.0000 2.0000 2.0000 -1.0000 - 2.1000i 0
4.0000 1.0000 2.0000
tlA1 = 4.0000
Ch¬ng3
LËp tr×nh trong matlab
3.1. C¸c phÇn tö c¬ b¶n

3.1.1 Giíi h¹n gi¸ trÞ sè.


C¸c gi¸ trÞ sè trong Matlab cho phÐp trong kho¶ng tõ realmin
®Õn realmax. C¸c gi¸ trÞ sè lín h¬n gi¸ trÞ realmax sÏ g©y lçi trµn
trªn (exponent overflow). Gi¸ trÞ cña kÕt qu¶ lín h¬n gi¸ trÞ cho
phÐp cña biÕn nhí m¸y tÝnh. Trong Matlab, kÕt qu¶ nµy ®îc biÓu
diÔn lµ Inf.
VÝ dô:
» a=realmax*1e2
a =

Inf
C¸c gi¸ trÞ sè nhá h¬n gi¸ trÞ realmin sÏ g©y lçi trµn díi (exponent
underflow). Gi¸ trÞ cña kÕt qu¶ vît miÒn gi¸ trÞ cho phÐp cña biÕn
nhí m¸y tÝnh. Trong Matlab, kÕt qu¶ nµy ®îc biÓu diÔn lµ 0.
» b=realmin*1e-16
b =

3.1.2 C¸c kÝ tù ®Æc biÖt.

: C¸ch ghi ma trËn tæng qu¸t.


() NgoÆc ®¬n.
[] §Þnh nghÜa ma trËn.
{} §Þnh nghÜa biÕn cell.
. DÊu thËp ph©n.
. To¸n tö m¶ng. T¸c ®éng t¬ng øng phÇn tö-phÇn tö trong
c¸c to¸n tö .* , .^ , ./ , .\ hay .', vÝ dô C = A ./ B lµ ma trËn
thµnh phÇn cña nã c(i,j) = a(i,j)/b(i,j).
. Thao t¸c phÇn tö (field) cña biÕn cÊu tróc. A.field vµ
A(i).field, khi A lµ biÕn cÊu tróc, thao t¸c néi dung cña tr-
êng "field". NÕu A kh«ng ph¶i lµ cÊu tróc v« híng, sÏ ph¸t
sinh thao t¸c danh s¸ch. Cã thÓ lång c¸c cÊu tróc nh
X(2).field(3).name. Cã thÓ kÕt hîp cÊu tróc, m¶ng khèi,
ngoÆc chØ sè ®Ó thao t¸c trªn c¸c biªn cÊu tróc.
.. DÊu ®¹i diÖn th môc cha. VÝ dô cd ..
... ChØ dÊu dßng tiÕp theo liªn kÕt víi dßng trªn.
, DÊu ph©n c¸ch chØ sè, ph©n c¸ch c©u lÖnh cã hiÓn thÞ
néi dung biÕn.
; DÊu ph©n c¸ch c©u lÖnh kh«ng hiÓn thÞ néi dung biÕn.
% ChØ dÊu b¾t ®Çu dßng ghi chó, tÊt c¶ c¸c lÖnh sau "%" sÏ
bÞ bá qua hoÆc ®îc in bëi lÖnh .
! Thi hµnh lÖnh hÖ ®iÒu hµnh.
= To¸n tö g¸n.
' To¸n tö string. 'HELLO' lµ vector tæ hîp c¸c thµnh phÇn kÝ
tù m· ASCII. §Ó ghi kÝ tù nµy trong x©u kÝ tù viÕt 2 lÇn kÝ
tù nµy. VÝ dô: 'Let''s Go.'
.' To¸n tö chuyÓn vÞ.
' To¸n tö chuyÓn vÞ vµ lÊy liªn hîp phøc.
[,] GhÐp c¸c phÇn tö theo hµng ngang.
[;] GhÐp c¸c phÇn tö theo hµng däc.
() Thao t¸c phÇn tö.
NgoÆc ®¬n ®îc sö dông u tiªn trong c¸c biÓu thøc sè
häc vµ chøa ®ùng c¸c tham sè cña hµm. Chóng ®îc sö
dông ®Ó ®¸nh chØ sè cho vector, ma trËn. NÕu X vµ V lµ
c¸c vector, th× X(V) lµ [X(V(1)), X(V(2)), ..., X(V(N))]. C¸c
phÇn tö cña V ph¶i lµ c¸c sè nguyªn lµm chØ sè. SÏ xuÊt
hiÖn lçi nÕu c¸c chØ sè <1 hoÆc lín h¬n kÝch thíc cña X.
NgoÆc ®¬n cã thÓ bao hµm c¸c chØ sè logic (hay 0-1).
NÕu V lµ biÕn logic, c¸c phÇn tö kh¸c kh«ng cña V x¸c
®Þnh mÆt n¹ lªn m¶ng X . M¶ng logic ®îc ph¸t sinh do
c¸c to¸n tö quan hÖ vµ to¸n tö locgic hay c©u lªnhl logic.
NgoÆc ®¬n ®îc ®îc hç trî cña tÊt c¶ c¸c kiÓu d÷ liÖu
trong Matlab nh lµ m¶ng sè thËp ph©n, cÊu tróc, cell, vµ
m¶ng kÝ tù.
VÝ dô:
X(3) lµ phÇn tö thø 3 cña X.
X([1 2 3]) lµ ba phÇn tö ®Çu tiªn cña X.
NÕu X cã N thµnh phÇn, X(N:-1:1) ®¶o l¹i d·y.
X(X>0.5) tr¶ vÒ c¸c phÇn tö > 0.5 cña X.
thao t¸c chØ sè t¬ng tù cho ma trËn vµ m¶ng.
NÕu V cã M thµnh phÇn vµ W cã N thµnh phÇn, th×
A(V,W) lµ ma trËn MxN h×nh thµnh tõ c¸c phÇn tö cña A,
víi c¸c chØ sè lµ phÇn tö cña V vµ W. VÝ dô, A([1,5],:) =
A([5,1],:) ho¸n vÞ 2 hµng 1 vµ 5 cña A.
{} §îc sö dông ®Ó t¹o m¶ng cell. Nã t¬ng tù ngoÆc vu«ng [ ]
ngo¹i trõ cho phÐp chøa c¸c lo¹i d÷ liÖu kh¸c nhau.
{magic(3) 6.9 'hello'} lµ m¶ng khèi cã 3 phÇn tö.
{magic(3),6.9,'hello'} lµ m¶ng gièng nh trªn.
{'This' 'is' 'a';'two' 'row' 'cell'} lµ m¶ng khèi 2x3. DÊu
";" kÕt thóc hµng.
{1 {2 3} 4} lµ m¶ng khèi 3 phÇn tö, víi phÇn tö thø 2
lµ m¶ng khèi.
Braces còng dïng ®Ó ®¸nh ®Þa chØ néi dung m¶ng
khèi. Thao t¸c nh parentheses vµ tr¶ vÒ néi dung t¹i ®Þa
chØ ®ã.
VÝ dô:
X{3} lµ néi dung phÇn tö thø 3 cña X.
X{3}(4,5) lµ thµnh phÇn (4,5) c¶u phÇn tö thø 3.
X{[1 2 3])} lµ danh s¸ch 3 phÇn tö cho trong
vector chØ sè. Nã t¬ng tù nh X{1},X{2},X{3} and makes
sense inside [] ,{}, or in function input or output lists (see
LISTS).
Cã thÓ lÆp ®Þnh ®Þa chØ cho c¸c m¶ng khèi lång
nhau X{1}{2} lµ néi dung cña phÇn tö thø 2 cña m¶ng
khèi trong X. Nã ho¹t ®éng gièng nh c¸c cÊu tróc lång
nhau, nh X(2).field(3).name hoÆc tæ hîp c¸c m¶ng khèi vµ
cÊu tróc, nh Z{2}.type(3).
[] §Ó sinh c¸c vector vµ ma trËn.
[6.9 9.64 SQRT(-1)] lµ vector 3 thµnh phÇn ph©n c¸ch
nhau b»ng dÊu c¸ch. [6.9, 9.64, sqrt(-1)] t¬ng tù nh trªn.
[1+I 2-I 3] vµ [1 +I 2 -I 3] kh«ng gièng nhau. Vector
®Çucã 3 phÇn tö, vector thø 2 cã 2 phÇn tö.
[11 12 13; 21 22 23] lµ ma trËn 2x3. Dêu ";" kÕt thóc
hµng ®Çu tiªn.
C¸c vector vµ ma trËn cã thÓ nèi víi nhau bëi ngoÆc
vu«ng [].
[A B; C] lµ hîp lÖ nÕu sè hµng cña A b»ng sè hµng cña
B vµ b»ng sè cét cña C.
A = [] sinh ma trËn rçng A.
Sö dông [ vµ ] ë vÕ tr¸i cña phÐp g¸n = ë c¸c c©u lÖnh
g¸n nhiÒu biÕn, xemc¸c hµmLU, EIG, SVD vµ c¸c hµm kh¸c.

3.1.2 BiÕn.

a. C¸c biÕn gi¸ trÞ ®Æc biÖt.

pi Gi¸ trÞ cña sè .


i,j BiÕn gi¸ trÞ ¶o i2=j2=-1.
Inf BiÕn ®¹i diÖn cho gi¸ trÞ  hay > realmax, thÓ hiÖn kÕt
qu¶ chia cho 0.
NaN Gi¸ trÞ kh«ng x¸c ®Þnh: 0 chia 0, hoÆc -.
clock Hµm tr¶ vÒ vector cho biÕt gi¸ trÞ thêi gian hiÖn t¹i.
date Tr¶ vÒ x©u kÝ tù th¸ng-ngµy-n¨m hiÖn t¹i.
eps Hµm x¸c ®Þnh ®é chÝnh x¸c cña sè thùc trong qu¸ tr×nh
tÝnh to¸n.
ans BiÕn lu gi¸ trÞ kÕt qu¶ tÝnh to¸n gÇn nhÊt

b. BiÕn string.
BiÕn string trong matlab ®îc lu trong vector vøi mçi phÇn tö lµ
1 kÝ tù. C¸c kÝ tù ®îc lu trong vector ë d¹ng m· ASCII, khi hiÓn thÞ
biÕn string dßng kÝ tù sÏ ®îc hiÓn thÞ chø kh«ng ph¶i m· cña
chóng.
ViÖc x¸c ®Þnh vÞ trÝ cña mçi phÇn tö cña biÕn string th«ng
qua chØ sè cña nã trong vector. Ma trËn cña c¸c kÝ tù hay string
còng cã thÓ ®îc sö dông nhng mçi phÇn tö (hµng cña ma trËn) ph¶i
b»ng nhau.
VÝ dô:
» test='Wellcome to ITIMS''2000'
test =
Wellcome to ITIMS'2000
-§¶o ngîc x©u kÝ tù.
» daotu=test(end:-1:1)
daotu =

0002'SMITI ot emoclleW
-TrÝch 1 phÇn cña x©u kÝ tù.
» test(1:8)
ans =

Wellcome
-KÕt hîp c¸c x©u kÝ tù:
» hodem='Nguyen Hoang';ten='Viet';
» hoten=[hodem ' ' ten]
hoten =

Nguyen Hoang Viet


hoÆc sö dông hµm strcat(s1,s2,...) ®Ó nèi c¸c x©u.
-C¸c hµm víi biÕn string (xem help strfun).
abs(str)
double(str) Tr¶ l¹i gi¸ trÞ lµ 1 vector víi c¸c phÇn tö lµ c¸c m· cña
c¸c kÝ tù trong chuçi str.
char(x) ChuyÓn vector x víi c¸c phÇn tö lµ c¸c sè nguyªn 0->65535
thµnh chuçi str theo m· cña chóng.
str2mat(s1,s2,...)
ChuyÓn d·y x©u s1, s2, ... thµnh ma trËn, víi c¸c hµng lµ
c¸c x©u ®· cho, c¸c x©u ng¾n h¬n ®îc g¸n thªm c¸c kÝ tù trèng
vµo bªn ph¶i. KÝch thíc cña hµng lµ ®é dµi cña x©u kÝ tù dµi
nhÊt.
strvcat(s1,s2,...) T-
¬ng tù str2mat, nhng x©u kÝ tù rçng bÞ bá qua.
num2str(s,h) ChuyÓn ®¹i lîng v« híng s thµnh x©u kÝ tù dÊu phÈy
®éng, h sè lîng ch÷ sè sau dÊu phÈy, gi¸ trÞ mÆc ®Þnh lµ
4.
int2str(n) ChuyÓn ®æi sè nguyªn n thµnh x©u kÝ tù sè.
rats(x,len) ChuyÓn ®æi sè cã dÊu phÈy ®éng x thµnh x©u kÝ
tù ph©n thøc xÊp xØ, len lµ chiÒu dµi cña chuçi tr¶ vÒ, mÆc
®Þnh len=13. Khi chiÒu dµi x©u kh«ng ®ñ cho x©u kÝ tù
tr¶ vÒ, nã sÏ tr¶ vÒ x©u cã chøa kÝ tù '*'.
bin2dec(sb) ChuyÓn ®æi x©u kÝ tù biÓu diÔn sè nhÞ ph©n vÒ
sè thËp ph©n.
dec2bin(d,n) ChuyÓn ®æi sè thùc d¬ng < 252 vÒ x©u kÝ tù biÓu
diÔn hÖ nhÞ ph©n, vµ ®a vÒ víi sè bÝt nhá nhÊt cho bëi n
hex2dec(sb) ChuyÓn ®æi x©u kÝ tù biÓu diÔn sè thËp lôc vÒ sè
thËp ph©n.
dec2hex(d,n) ChuyÓn ®æi sè thùc d¬ng < 252 vÒ x©u kÝ tù hÖ
thËp lôc, vµ ®a vÒ víi sè ch÷ sè nhá nhÊt cho bëi n
base2dec(d,b) ChuyÓn ®æi x©u kÝ tù biÓu diÔn sè c¬ sè b
(2b36) vÒ sè thËp ph©n.
dec2base(d,b) ChuyÓn ®æi sè thùc d¬ng < 252 vÒ x©u kÝ tù c¬ sè
b (2b36), vµ ®a vÒ víi sè ch÷ sè nhá nhÊt cho bëi n
eval(str) Thùc hiÖn lÖnh trong biÓu thøc cña x©u str
vectorize(bt) vect¬ ho¸ biÓu thøc x©u kÝ tù bt.
sprintf Tr¶ vÒ x©u kÝ tù d÷ liÖu theo ®Þnh d¹ng.
fprintf In d÷ liÖu theo ®Þnh d¹ng thµnh x©u kÝ tù
sscanf §äc d÷ liÖu trong x©u kÝ tù theo theo ®Þnh d¹ng.
fscanf §äc d÷ liÖu tõ file theo theo ®Þnh d¹ng.
lower Hµm chuyÓn x©u vÒ x©u kÝ tù thêng.
upper Hµm chuyÓn x©u vÒ x©u kÝ tù hoa.
findstr T×m x©u kÝ tù con trong x©u kÝ tù nµo ®ã.

eval Thc hiÖn c©u lÖnh trong biÓu thøc Matlab. eval(s), víi s lµ
x©u kÝ tù, thi hµnh c¸c biÓu thøc vµ c¸c c©u lÖnh ghi trong x©u s.
eval(s1,s2) ®a ra tÝnh n¨ng b¾t lçi. Nã thi hµnh x©u s1, nÕu
kh«ng cã lçi nã trë vÒ hÖ ®iÒu hµnh. NÕu hÖ ®iÒu hµnh ph¸t sinh
lçi, x©u kÝ tù s2 ®îc thi hµnh tríc khi trë vÒ hÖ ®iÒu hµnh. Sö dông
nh eval('try','catch'). X©u kÝ tù lçi ph¸t sinh bëi 'try' cã thÓ nhËn tõ
biÕn LASTERR.
[X,Y,Z,...] = eval(s) tr¶ vÒ c¸c ®èi theo thø tù biÓu thøc cã trong s.
X©u kÝ tù vµo cho eval thêng eval ®îc t¹o bëi kÕt hîp c¸c x©u con
trong ngoÆc vu«ng.
VÝ dô:
Ph¸t sinh lÇn lît c¸c biÕn ma trËn cã tªn M1 ®Õn M12:
for n = 1:12
eval(['M' num2str(n) ' = magic(n)'])
end

Ch¹y script file lùa chän tõ tËp hîp c¸c m-file script. X©u kÝ tù ®îc
t¹o theo c¸c hµng cña ma trËn D ph¶i cã ®é dµi b»ng nhau.
D = ['odedemo '
'quaddemo'
'fitdemo '];
n = input('Select a demo number: ');
eval(D(n,:))

vectorize vector ho¸ biÓu thøc ®a vÒ c¸c phÐp to¸n m¶ng.


vectorize(S), khi S lµ biÓu thøc x©u kÝ tù, tr¶ vÒ x©u cã chÌn thªm
kÝ tù '.' tíc c¸c to¸n tö '^', '*' hay '/' trong S. vectorize(FCN), khi FCN
lµ hµm INLINE, vector ho¸ c«ng thøc cña FCN. KÕt qu¶ tr¶ vÒ lµ
hµm inline INLINE ®îc vector ho¸.

count = fprintf(fid,format,A,...) ®Þnh d¹ng d÷ liÖu theo c¸c


phÇn thùc cña ma trËn A (vµ theo bÊt k× ®èi sè vµo nµo) theo x©u
kÝ tù ®iÒu khiÓn d¹ng thøc in d÷ liÖu vµ ghi file chØ ®¹i diÖn bëi
fid. count lµ sè byte ®· ghi lªn fid. fid lµ sè nguyªn nhËn d¹ng do
FOPEN tr¶ vÒ. fid =1: XuÊt ra thiÕt bÞ chuÈn (mµn h×nh), fid =2:
B¸o lçi chuÈn. Khi bá ®èi sè fid, xuÊt ra thiÕt bÞ chuÈn.
format lµ x©u kÝ tù chØ ®Þnh ®Þnh d¹ng theo ng«n ng÷ C. ChØ
®Þnh b¾t ®Çu biÕn ®æi b»ng kÝ tù %, c¸c cê lùa chän, chiÒu réng
lùa chän vµ kiÓu trêng, chØ ®Þnh kiÓu con lùa chän vµ c¸c kÝ tù
®Þnh d¹ng d, i, o, u, x, X, f, e, E, g, G, c, and s.
C¸c ®Þnh d¹ng ®Æc biÖt \n,\r,\t,\b,\f ph¸t sinh ng¾t dßng, xuèng
dßng, tab, lïi vÒ tríc 1 kÝ tù, vÒ ®Çu dßng. Sö dông \\ ®Ó lÊy kÝ tù
"\" vµ %% ®Ó lÊy kÝ tù"%".
fprintf ho¹t ®éng gièng ANSI C theo chØ ®Þnh vµ më réng nh sau:
1. ChØ phÇn thùc cña tham sè ®îc xö lý.
2. C¸c chØ ®Þnh kiÓu con kh«ng chuÈn cung cÊp cho chuyÓn
®æi kiÓu lµ o, u, x, and X.
t - Trong C ®Þnh nhÜa kiÓu thùc ®¬n, trong Matlab lµ kiÓu
nguyªn kh«ng dÊu.
b - Trong C ®Þnh nhÜa kiÓu thùc kÐp, trong Matlab lµ kiÓu
nguyªn kh«ng dÊu.
VÝ dô, ®Ó in ra sè thËp lôc gi¸ trÞ thùc kÐp sö dông ®Þnh d¹ng
nh sau '%bx'.
3. fprintf sÏ "vectorized" khi A kh«ng ph¶i lµ v« híng. X©u kÝ tù
®Þnh d¹ng ®îc lÆp l¹i cho c¸c tÊt c¶ c¸c phÇn tö cña A (theo
cét) . T¬ng tù cho c¸c tham sè ma trËn kh¸c.
VÝ dô, c¸c c©u lÖnh
x = 0:.1:1; y = [x; exp(x)];
fid = fopen('exp.txt','w');
fprintf(fid,'%6.2f %12.8f\n',y);
fclose(fid);
sinh ra file text cã chøa b¶ng gi¸ trÞ cña hµm mò:
0.00 1.00000000
0.10 1.10517092
...
1.00 2.71828183

[S,ERRMSG] = SPRINTF(FORMAT,A,...) ®Þnh d¹ng d÷ liÖu theo


c¸c phÇn thùc cña ma trËn A (vµ theo bÊt k× ®èi sè vµo nµo) theo
x©u kÝ tù ®iÒu khiÓn d¹ng thøc, tr¶ vÒ x©u kÝ tù ®· ®îc ®Þnh
d¹ng vµo biÕn S. ERRMSG lµ ®èi sè lùa chän tr¶ vÒ x©u kÝ tù
th«ng b¸o lçi nÕu cã ma trËn rçng hoÆc thiÕu ®èi sè yªu cÇu trong
FORMAT. SPRINTF hoat ®éng t¬ng tù FPRINTF ngo¹i trõ nã tr¶ vÒ
x©u kÝ tù thay v× ghi lªn file.
VÝ dô:
sprintf('%0.5g',(1+sqrt(5))/2) 1.618
sprintf('%0.5g',1/eps) 4.5036e+15
sprintf('%15.5f',1/eps) 4503599627370496.00000
sprintf('%d',round(pi)) 3
sprintf('%s','hello') hello
sprintf('The array is %dx%d.',2,3) The array is 2x3.
sprintf('\n') is the line termination character on all platforms.

FSCANF §äc d÷ liÖu tõ file.


[A,COUNT] = FSCANF(FID,FORMAT,SIZE) ®äc d÷ liÖu tõ file chØ
®Þnh bëi FID, ®Þnh d¹ng d÷ liÖu ®îc ®äc chØ ®Þnh bëi x©u
FORMAT, vµ tr¶ vÒ d÷ liÖu lu trong ma trËn A. COUNT lµ ®èi sã ra
tuú chän cho biÕt sè phÇn tö ®äc ®îc kh«ng cã lçi.
FID lµ sè nguyªn chØ ®Þnh thiÕt bÞ ®äc tõ FOPEN.
SIZE lµ tuú chän; nã ®Æt giíi h¹n sè phÇn tö tèi ®a ®äc tõ file; nÕu
kh«ng chØ ®Þnh, toµn bé file ®îc ®äc; nÕu chØ ®Þnh, gi¸ trÞ hîp
lÖ lµ:
N ®äc tèi ®a N phÇn tö vµo vector cét.
inf ®äc hÕt cho ®Õn cuèi file.
[M,N] ®äc tèi ®a M * N phÇn tö vµ ®iÒn vµo ma trËn MxN,
theo thø tù cét. N cã thÓ lµ inf, M ph¶i lµ sè x¸c ®Þnh.
NÕu chØ cã ®Þnh d¹ng kÝ tù vµ SIZE kh«ng ph¶i d¹ng [M,N] th× A
cã d¹ng vector hµng.
FORMAT lµ x©u kÝ tù chØ ®Þnh nh ng«n ng÷ C. ChØ ®Þnh chuyÓn
®æi ®îc b¾t ®Çu b»ng kÝ tù %, lùa chän kiÓu trêng d÷ liÖu, vµ
kÝ tù chuyÓn ®æi d, i, o, u, x, e, f, g, s, c, vµ [. . .] (scanset).
Khi kÝ tù chØ ®Þnh %s ®îc sö dông, phÇn tö ®äc vµo sÏ cho mçi
phÇn tö cña ma trËn lµ 1 kÝ tù. X©u kÝ tù ®îc tr¶ vÒ kh«ng chøa kÝ
tù trèng.
Hçn hîp chØ ®Þnh kÝ tù vµ sè sÏ dÉn tíi ma trËn kÕt qu¶ lµ ma trËn
sè vµ c¸c kÝ tù ®äc ®îc lµ gi¸ trÞ m· cña nã.
QuÐt tíi vÞ trÝ cuèi cïng cña x©u S khi NEXTINDEX lín h¬n is ®é lín
x©u S.
FSCANF kh¸c so víi ng«n ng÷ C ë khÝa c¹nh sau- nã ®îc "vectorized"
theo thø tù ®èi sè ma trËn. X©u kÝ tù ®Þnh d¹ng ®îc lÆp l¹i ®Õn
hÕt x©u S hoÆc tæng sè lîng lÇn ®äc vît qu¸ SIZE.
VÝ dô:
S = fscanf(fid,'%s') ®äc (vµ tr¶ vÒ) x©u kÝ tù.
A = fscanf(fid,'%5d') ®äc vµo sè thùc víi 5ch÷ sè th¹p ph©n.

[A,COUNT,ERRMSG,NEXTINDEX] = SSCANF(S,FORMAT,SIZE)
®äc d÷ liªu tõ x©u kÝ tù S, t¹o d÷ liÖu theo x©u ®Þnh d¹ng chØ
®Þnh FORMAT vµ tr¶ vÒ ma trËn A. COUNT lµ ®èi sè ra lùa chän tr¶
vÒ sè phÇn tö ®äc thµnh c«ng. ERRMSG lµ ®èi sè ra lùa chän tr¶
vÒ x©u kÝ tù th«ng b¸o lçi. NEXTINDEX lµ ®èi sè ra lùa chän tr¶ vÒ
sè chØ ®Þnh kÝ tù ®îc quÐt trong S.
SSCANF t¬ng tù FSCANF ngo¹i trõ nã ®äc d÷ liÖu tõ x©u kÝ tù thay
v× ®äc tõ file.
SIZE lµ tham sè lùa chän; nã ®Æt giíi h¹n sè phÇn tö ®îc quÐt tõ
x©u S; nÕu kh«ng chØ ®Þnh SIZE, toµn bé x©u S ®îc quÐt; NÕu
chØ ®Þnh SIZE, c¸c gi¸ trÞ hîp lÖ lµ:
N ®äc nhiÒu nhÊt N phÇn tö vµo vector cét.
inf ®äc c¶ x©u S.
[M,N] ®äc vµo nhiÒu nhÊt M * N phÇn tö theo d¹ng thøc ma
trËn MxN, theo thø tù c¸c cét. N cã thÓ lµ inf, M ph¶i lµ sè x¸c
®Þnh.
NÕu ma trËn kÕt qu¶ A ®îc h×nh thµnh tõ ®Þnh d¹ng kÝ tù vµ SIZE
kh«ng cã d¹ng [M,N] th× A cã d¹ng vector hµng.
FORMAT lµ x©u kÝ tù chØ ®Þnh nh ng«n ng÷ C. Xem FSCANF.
VÝ dô:
»S = '2.7183 3.1416';
»a = sscanf(S,'%f')
a =

2.7183
3.1416
tr¶ vÒ vector 2 phÇn tö chøa sè gÇn dóng e vµ pi.
c. Kh¸i niÖm biÕn ma trËn (scalar, vector, matrix), biÕn khèi
vµ biÕn cÊu tróc.
Matlab cung cÊp kiÓu biÕn (líp ®èi tîng) lµ sè thùc kÐp
(double), kÝ tù (char), ma trËn, kÝ hiÖu (sym), m¶ng ®èi tîng (cell),
cÊu tróc (struct), biÕn hµm inline...
Matlab cung cÊp 2 kiÓu v« híng c¬ b¶n:
+V« híng thùc (double), cã ®é lín 8 byte.
+KiÓu v« híng kÝ tù (char), cã ®é lín 2 byte.
C¸c biÕn vector, ma trËn lµ c¸c m¶ng thuÇn tuý chøa c¸c v« h-
íng thùc hoÆc kÝ tù. C¸c biÕn nµy cßn gäi lµ c¸c biÕn thuÇn nhÊt.
BiÕn cell lµ m¶ng ®èi tîng víi c¸c phÇn tö lµ ®èi tîng bÊt k×, cã
thÓ lµ v« híng, vector, ma trËn, x©u kÝ tù, biÕn hµm inline, biÕn
sym, biÕn cÊu tróc, inline...
BiÕn cÊu tróc lµ d¹ng biÕn c¸c phÇn tö (trêng-field) cña nã ®îc
truy cËp theo tªn cña trêng, c¸c trêng cã thÓ cã kiÓu v« híng,
vector, ma trËn, biÕn hµm inline, symbolic, cell,...
C¸c biÕn ®îc ph©n biÖt theo kiÓu d÷ liÖu th«ng qua hµm
class(var), hµm class tr¶ vÒ biÕn char chøa x©u kÝ tù ph©n lo¹i
kiÓu d÷ liÖu ('double', 'char', 'inline', 'sym', 'cell', 'struct'...).
ViÖc th©m nhËp (acess) ®Õn c¸c phÇn tö d÷ liÖu:
+V« híng th«ng qua tªn: a,x,z....
+Vector, ma trËn th«ng qua c¸c chØ sè: A(i,j,...),A(i,j),v(i)....
+BiÕn cell th«ng qua chØ sè (gièng vector, ma trËn)
C{i,j,...},C{i,j},a{j}
+BiÕn cÊu tróc th«ng qua tªn trêng: S.a,S.field2,...
X¸c ®Þnh chiÒu c¸c biÕn m¶ng: v« híng, vector, ma trËn. Tõ
lÖnh [m,n,..]=size(var) vµ p=length(size(var)):
+m=n=1, p=2: BiÕn var lµ v« híng.
+m=1, n>1 hoÆc n=1, m>1; p=2 BiÕn
vector.
+m>1,n>1,p=2 BiÕn ma trËn.
+p>2 BiÕn m¶ng khèi.
X¸c ®Þnh sè phÇn tö cña biÕn thuÇn nhÊt:
members=prod(size(var)).
ViÖc x¸c ®Þnh sè chiÒu cña biÕn cell t¬ng tù nh biÕn v« híng,
vector, ma trËn.

3.2 Hµm vµ t¹o hµm

3.2.1 Hµm trong Matlab.


Matlab cung cÊp ®Þnh nghÜa hµm c¬ b¶n lµ hµm néi (built_in),
hµm inline vµ hµm m-files.
+C¸c hµm built-in lµ c¸c hµm néi t¹i cña Matlab, lµ c¸c phÇn tö
c¬ b¶n cña ng«n ng÷ Matlab, néi dung cña c¸c hµm built-in lµ
kh«ng thay ®æi ®îc.
+C¸c hµm inline, c¸c hµm ®îc x©y ®ùng trªn c¬ së tæ hîp c¸c
biÓu thøc vµ gäi hµm, hµm inline cã thÓ gäi c¸c hµm m-files, hoÆc
hµm built-in. Thêng sö dông ®Ó x©y dùng c¸c hµm ®¬n gi¶n.
+C¸c hµm m-files, hµm sö dông kÜ thuËt lËp tr×nh cho kh¶
n¨ng më réng hµm rÊt phong phó, hµm m-files cã thÓ sö dông tæ
hîp c¸c c©u lÖnh (t¬ng tù script-files), gäi c¸c hµm built-in, gäi c¸c
hµm m-files kh¸c vµ cã thÓ gäi l¹i chÝnh nã (®Ö qui)...

Chó ý:
+Néi dung cña c¸c hµm inline vµ m-files cã thÓ thay ®æi ®îc.
+§Ó biÕt tªn c¸c hµm ®· ®îc gäi tríc ®©y sö dông lÖnh » inmem
.

a. X©y dùng c¸c hµm inline vµ sö dông.


inline(expr) t¹o ®èi tîng hµm inline tõ x©u biÓu thøc trong
x©u kÝ tù expr. BiÓu thøc expr cã d¹ng biÓu thøc th«ng thêng viÕt
trong Matlab nh c¸c biÓu thøc to¸n häc, c¸c biÓu thøc logic, c¸c
phÐp to¸n trªn ma trËn, x©u kÝ tù, lêi gäi hµm... C¸c ®èi sè vµo ®-
îc tù ®éng x¸c ®Þnh theo tªn biÕn cã trong biÓu thøc. NÕu kh«ng
cã biÕn nµo ®èi sè mÆc ®Þnh lµ 'x'.
inline(expr,arg1,arg2,...) T¹o ra hµm inline cã nhiÒu ®èi sè,
c¸c ®èi sè ®îc chØ ®Þnh bëi c¸c x©u kÝ tù arg1,arg2,... C¸c kÝ
hiÖu biÕn cã thÓ cã tªn dµi h¬n 1 kÝ tù. inline(expr,N), víi N lµ v«
híng, t¹o hµm inline cã N+1 ®èi sè vµo 'x', 'P1','P2', ..., 'PN'.
Khi sö dông hµm inline ph¶i truyÒn ®ñ tham sè cho c¸c biÕn
trong biÓu thøc expr, trÞ tr¶ vÒ cña hµm inline x¸c ®Þnh theo trÞ
tr¶ vÒ cña biÓu thøc expr. Hµm inline cã t¸c dông nh biÕn nhí, do
®ã chØ cã t¸c dông kÓ tõ lóc biÕn hµm ®îc x©y dùng cho ®Õn khi
biÕn hµm bÞ xo¸. Cã thÓ lu tr÷ vµ t¶i tõ file d÷ liÖu nh c¸c biÕn
th«ng thêng.
VÝ dô:
g = inline('t^2')
g = inline('sin(2*pi*f + theta)')
g = inline('sin(2*pi*f + theta)', 'f', 'theta')
g = inline('x^P1', 1)
h=inline('[x(1).*x(2);cos(x(1)*pi+x(2))]')
f=inline('(-x-1).*(x<-1)+(x.^2-1).*(-1<=x&x<=1)+(x.^3-1).*(x>1)')

» g = inline('sin(2*pi*f + theta)')
g =

Inline function:
g(f,theta) = sin(2*pi*f + theta)
» a=g(50,pi/4)
a =

0.7071
b. X©y dùng c¸c hµm m-file.(xem 3.3.2)

3.2.2 C¸c hµm to¸n häc.


Matlab cung cÊp c¸c hµm logarit, c¸c hµm lîng gi¸c,c¸c hµm mò
c¸c hµm ®¹i sè, ... ®Ó tÝnh to¸n.
c¸c hµm nµy ®óng
Lêi gäi hµm nh sau: [biÕn_ra]=tªn_hµm(C¸c_®èi_sè_vµo).

3.3 C¸c d¹ng M-file sö dông trong Matlab.


Cã hai lo¹i M-file lµ script M-file vµ hµm M-file.
Script M-file Hµm M-file
•Kh«ng chÊp nhËn tham sè •Cã thÓ chÊp nhËn tham sè
vµo hoÆc tr¶ vÒ tham vµo vµ tr¶ vÒ tham sè.
sè.
•Ho¹t ®éng trªn d÷ liÖu cña •C¸c biÕn trong th©n hµm
workspace. mÆc ®Þnh lµ côc bé.
•Thêng dïng ®Ó tù ®éng •Cã t¸c dông më réng ng«n
thùc hiÖn mét chuçi c¸c ng÷ MATLAB cho øng
thao t¸c cÇn thiÕt ®Ó dông cña b¹n.
thùc thi nhiÒu lÇn.

D¹ng cña M-file.


Xem vÝ dô díi ®©y vÒ c¸c thµnh phÇn cña mét hµm M-file:

Dßng ®Þnh function f = fact(n)


nghÜa hµm
dßng H1 (trî gióp % FACT Factorial.
1) % FACT(N) returns the factorial of N, usually denoted
V¨n b¶n trî gióp
by N!.
Th©n hµm % Put simply, FACT(N) is PROD(1:N).
f = prod(1:n);

Hµm nµy cã mét sè thµnh phÇn chung cho tÊt c¶ c¸c hµm
MATLAB:
•Dßng ®Þnh nghÜa hµm. §©y lµ hµm ®Þnh nghÜa tªn hµm, sè
lîng vµ trËt tù ®èi sè vµo vµ ra.
•Dßng H1. H1 chuyÓn chuÈn dßng “trî gióp 1”. MATLAB hiÓn
thÞ dßng H1 cho hµm khi b¹n sö dông hµm lookfor hoÆc yªu
cÇu trî gióp lèi vµo th môc.
•V¨n b¶n trî gióp. MATLAB hiÓn thÞ dßng nhËp trî gióp liÒn kÒ
nhau ngay sau dßng H1 khi b¹n yªu cÇu trî gióp ë hµm chØ
®Þnh.
•Th©n hµm. PhÇn nµy cã chøa m· thùc thi c¸c tÝnh to¸n thùc
tÕ vµ g¸n gi¸ trÞ cho ®èi sè ra bÊt k×.
T¹o M-File: Truy cËp ch¬ng tr×nh so¹n th¶o v¨n b¶n.
M-file thêng lµ file v¨n b¶n, b¹n cã thÓ t¹o b»ng c¸c tr×nh so¹n
th¶o v¨n b¶n. MATLAB còng cung cÊp tr×nh so¹n th¶o v¨n b¶n built-
in, mÆc dï b¹n cã thÓ sö dông ch¬ng tr×nh so¹n th¶o bÊt k× b¹n
quen dïng ®Ó so¹n th¶o.
C¸ch ®Ó so¹n mét M-file tõ dßng lÖnh MATLAB lµ dïng c©u lÖnh
edit. VÝ dô,
edit poof
më tr×nh so¹n th¶o so¹n th¶o file poof.m. Bá qua tªn file sÏ më
tr×nh so¹n th¶o so¹n th¶o file cã tªn untitled*. (* lµ c¸c ch÷ sè)
B¹n cã thÓ t¹o hµm fact ë trªn b»ng c¸ch më tr×nh so¹n th¶o cña
b¹n, nhËp c¸c dßng ®· nªu, vµ cÊt v¨n b¶n lªn file cã tªn fact.m
trong th môc hiÖn hµnh cña b¹n.
Mét khi b¹n ®· t¹o file nµy, sau ®©y lµ vµi c«ng viÖc b¹n cã thÓ
lµm:
•LiÖt kª danh s¸ch tªn c¸c file trong th môc hiÖn hµnh
what
•LiÖt kª v¨n b¶n m· cña M-file fact.m
type fact
•Gäi hµm fact
fact(5)
ans =
120

Chó ý§Ó më tr×nh so¹n th¶o trªn m¸y vi tÝnh PC, chän menu File
chän môc New vµ sau ®ã chän M-File.

C¸c hµm hÖ thèng t¬ng t¸c víi M-file t¹i cöa sæ lÖnh, trong script vµ
hµm :
echo on Cho phÐp hiÓn thÞ c¸c c©u lÖnh cña script file ®ang ®îc
thùc hiÖn .
echo of Kh«ng hiÓn thÞ c¸c c©u lÖnh cña script file ®ang ®îc
thùc hiÖn.
echo func BËt/t¾t hiÓn thÞ c¸c c©u lÖnh ®îc thùc hiÖn cña hµm
on/of "func" .
echo func LËt tr¹ng th¸i hiÓn thÞ c©u lÖnh trong hµm "func".
echo on/of BËt/t¾t hiÓn thÞ c©u lÖnh ®îc thi hµnh cña c¸c hµm cã
all trong inmem.
help name HiÖn c¸c dßng chó thÝch ®Çu tiªn, liªn tôc cã trong file
"name.m".
type HiÓn thÞ néi dung cña file cã tªn filename, mÆc ®Þnh më
filename réng lµ "*.m".
NÕu cã 2 file test vµ test.m c©u lÖnh "type test" cho néi
dung file test, ®Ó hiÓn thÞ ®óng tªn file nªn cã phÇn më
réng "type test.m".
dbtype T¬ng tù type, nhng cã chØ sè dßng ë ®Çu dßng cña file
name cã tªn "name".
which name Cho biÕt ®¬ng dÉn cña file "name", mÆc ®Þnh më réng
lµ "*.m".

3.3.1 Scrip file.


Script lµ d¹ng M-file ®¬n gi¶n nhÊt - chóng kh«ng cã ®èi sè vµo
vµ ra. Chóng cã t¸c dông cho viÖc tù ®éng tÝnh to¸n mét chuçi c¸c
c©u lÖnh MATLAB, nh c¸c phÐp tÝnh cÇn tÝnh to¸n lÆp l¹i nhiÒu
lÇn c¸c dßng lÖnh.
Scripts ho¹t ®éng trªn d÷ liÖu hiÖn cã trong workspace, hoÆc
chóng cã thÓ t¹o míi d÷ liÖu b¹n thao t¸c. BÊt k× biÕn nµo do script
tao ra vÉn ®îc duy tr× trong workspace sau khi script kÕt thóc, v×
thÕ b¹n cã thÓ sö dông d÷ liÖu nµy cho c¸c tÝnh to¸n kh¸c.
Ta cã thÓ ch¹y file nµy gièng nh c¸c lÖnh Matlab. Tøc lµ gâ tªn file
kh«ng cã phÇn më réng, sau ®ã nhÊn enter. HoÆc chän menu
File/Run Script.. sau ®ã gâ tªn file hoÆc chän nót bÊm browse...
®Ó chän file ®Ó ch¹y, sau ®ã chän nót Ok.
TËp hîp c¸c c©u lÖnh, thñ tôc sö dông ®îc t¹i dßng lÖnh cöa sæ
command windows ®Òu sö dông cho script file.
Ta cã vÝ dô vÒ script file "welcome.m":
%Welcome.m, Vi du ve lap trinh trong Matlab
%Welcome to you !

%written by Nguyen Hoang Viet


disp('Hello ! What are you?');
name=input('What''s your name?','s');
sd=date;
answer=['Hello. ' name '!. Today is ' sd];
disp(answer);
disp('Have a good day !');

3.3.2 X©y dùng hµm m-files.

Hµm lµ M-file cã c¸c ®èi sè vµo vµ ®èi sè ra. Chóng ho¹t ®éng
trªn c¸c biÕn bªn trong workspace cña riªng nã. Nã ph©n c¸ch víi
workspace b¹n truy cËp t¹i dÊu nh¾c lÖnh MATLAB.

VÝ dô hµm ®¬n gi¶n.


Hµm average lµ M-file ®¬n gi¶n tÝnh to¸n gi¸ trÞ trung b×nh cña
c¸c phÇn tö cña vector.
function y = average(x)
% AVERAGE Mean of vector elements.
% AVERAGE(X), where X is a vector, is the mean of vector elements.
% Non­vector input results in an error.
[m,n] = size(x);
if (~((m == 1) | (n == 1)) | (m == 1 & n == 1))
error(’Input must be a vector’)
end
y = sum(x)/length(x); % Actual computation
NÕu b¹n muèn, thö nhËp c¸c lÖnh vµo M-file cã tªn average.m.
Hµm average chÊp nhËn mét ®èi sè vµo vµ tr¶ vÒ mét ®èi sè ra.
Gäi hµm average, nhËp:
z = 1:99;
average(z)
ans =
50

Thµnh phÇn c¬ b¶n cña hµm M-File.


Hµm M-file gåm cã:
•Dßng ®Þnh nghÜa hµm
•Dßng H1
•V¨n b¶n trî gióp
•Th©n hµm
•Chó thÝch
TiÕp trang 330
C¸c hµm do ngêi sö dông viÕt còng ®îc lu trong c¸c m-files.
Chóng ®îc sö dông gièng nh c¸c hµm cña Matlab. C¸c file hµm ph¶i
®îc viÕt theo mét qui ®Þnh chÆt chÏ.
C¸c qui t¾c viÕt hµm m-files.
1. hµm ph¶i ®îc b¾t ®Çu b»ng tõ function, sau ®ã lÇn lît lµ
c¸c tham sè ®Çu ra, dÊu b»ng "=", tªn hµm, tham sè ®Çu
vµo ®îc bao trong dÊu ngoÆc ®¬n. Dßng ®Þnh nghÜa nµy
ph©n biÖt sù kh¸c nhau gi÷a file hµm vµ c¸c file script. Tªn
file hµm nhÊt thiÕt ph¶i trïng víi tªn hµm.
VÝ dô:
function [s,v,t]=myfun(fn,a,b)
%Hµm tÝnh diÖn tÝch, thÓ tÝch cña hµm fn so víi trôc Ox.
®îc lu trong file myfun.m
2. Mét sè dßng ®Çu tiªn nªn viÕt chó thÝch hµm. Khi sö dông
lÖnh help víi tªn hµm, chó thÝch cña hµm sÏ ®îc hiÓn thÞ.
3. C¸c th«ng tin tr¶ l¹i cho hµm ®îc lu vµo tham sè (ma trËn)
®Çu ra. V× vËy lu«n kiÓm tra ch¾c ch¾n r»ng trong hµm cã
chøa c©u lÖnh Ên ®Þnh gi¸ trÞ cña tham sè ®Çu ra.
4. C¸c biÕn cïng tªn cã thÓ ®îc sö dông bëi c¶ hµm vµ ch¬ng
tr×nh cÇn ®Õn nã. Kh«ng cã sù lén xén nµo x¶y ra v× c¸c
hµm vµ ch¬ng tr×nh ®Òu ®îc thùc hiÖn t¸ch biÖt nhau. C¸c
biÕn sö dông bªn trong th©n hµm vµ c¸c tham sè ®Çu ra
kh«ng chÞu t¸c ®éng cña ch¬ng tr×nh. C¸c tham sè ®Çu vµo
kh«ng chÞu t¸c ®éng cña hµm.
5. NÕu mét hµm cho nhiÒu h¬n mét gi¸ trÞ ®Çu ra ph¶i viÕt
tªn tÊt c¶ c¸c gi¸ trÞ cña hµm thµnh mét vector trong dßng
khai b¸o hµm.
VÝ dô:
function [mean,stdev] = stat(x)
%STAT Interesting statistics.
6. Mét hµm cã nhiÒu tham sè ®Çu vµo cÇn ph¶i liÖt kª chóng
khi khai b¸o hµm. C¸c tham sè cã thÓ ®îc thay ®æi nhê c¸c
biÕn côc bé ®Æc biÖt nargin, nargout-x¸c ®Þnh sè c¸c tham
sè ®Çu vµo, ®Çu ra, c¸c biÕn côc bé varargin,varargout cho
phÐp thiÕt lËp tuú biÕn sè lîng, kiÓu tham sè ®Çu vµo, ®Çu
ra.
7. Hµm m-files cã thÓ gäi c¸c hµm m-files kh¸c vµ hµm cã thÓ
gäi ®Õn chÝnh nã (®Ö qui).
8.Hµm cã thÓ cã hµm riªng (subfunction), chØ cã t¸c dông bªn
trong th©n hµm m-files. Hµm riªng ®îc ®Þnh nghÜa nh hµm
m-files nhng ®îc ®Þnh nghÜa bªn díi hµm chÝnh (Hµm ®Þnh
nghÜa ®Çu tiªn).
VÝ dô: avg lµ hµm riªng trong file STAT.M:
function [mean,stdev] = stat(x)
%STAT Interesting statistics.
n = length(x);
mean = avg(x,n);
stdev = sqrt(sum((x-avg(x,n)).^2)/n);

%-------------------------
function mean = avg(x,n)
%MEAN subfunction
mean = sum(x)/n;
C¸c hµm riªng cã thÓ gäi lÉn nhau.

3.3.3 Hµm con vµ hµm riªng.

a.Hµm con.
Hµm M-file cã thÓ chøa m· cña nhiÒu h¬n mét hµm. Hµm ®Çu
tiªn trong file gäi lµ hµm s¬ cÊp ( primary), hµm cã tªn M-file. C¸c
hµm thªm trong filegäi lµ c¸c hµm con mµ chØ thÊy ®îc bëi fµm s¬
cÊp hoÆc c¸c hµm con trong cïng file nµy.
Mçi hµm con b¾t ®Çu víi dßng ®Þnh nghÜa hµm cña nã. C¸c
hµm theo sau trùc tiÕp lÉn nhau. C¸c hµm con kh¸c nhau cã thÓ
xuÊt hiÖn bÊt k× thø tù nµo, n»m sau hµm s¬ cÊp- xuÊt hiÖn ®Çu
tiªn.
function [avg,med] = newstats(u)
% NEWSTATS Find mean and median with internal functions.
n = length(u);
avg = mean(u,n);
med = median(u,n);
function a = mean(v,n)
% Calculate average.
a = sum(v)/n;
function m = median(v,n)
% Calculate median.
w = sort(v);
if rem(n,2) == 1
m = w((n+1)/2);
else
m = (w(n/2)+w(n/2+1))/2;
end
C¸c hµm con mean vµ median tÝnh to¸n trung b×nh vµ ®iÓm
gi÷a cña danh s¸ch vµo. Hµm s¬ cÊp newstats x¸c ®Þnh chiÒu dµi
cña danh s¸ch vµ tÝnh to¸n c¸c hµm con, truyÒn chóng cho danh
s¸ch ®é dµi n. C¸c hµm trong cïng M-file kh«ng thÓ truy cËp c¸c
biÕn cïng tªn trõ phi b¹n khai b¸o nã lµ toµn côc ( global) bªn trong
c¸c hµm thÝch hîp (pertinent), hoÆc truyÒn chóng lµm tham sè.
Ngoµi ra, the help facility can only access the primary function in an
M-file.
Khi b¹n gäi hµm ë bªn trong M-file, MATLAB kiÓm tra tríc tiªn xem
nã cã lµ hµm con kh«ng. Sau ®ã kiÓm tra nã lµ hµm riªng (m« t¶ ë
phÇn tiÕp sau) cã tªn hµm ®ã kh«ng, vµ sau ®ã t×m M-file chuÈn
trªn ®êng dÉn t×m kiÕm file. Do nã kiÓm tra hµm con ®Çu tiªn,
b¹n cã thÓ thay thÕ c¸c hµm M-files ®· cã b»ng hµm con cã cïng
tªn, vÝ dô, mean m· ho¸ ë trªn. Tªn hµm ph¶i duy nhÊt bªn trong M-
file.

b.Hµm riªng
C¸c hµm riªng lµ c¸c hµm hiÖn cã trong th môc ®Æc biÖt cã tªn
private. Chóng chØ thÊy ®îc víi c¸c hµm trong th môc cha. VÝ dô,
gi¶ sö b¹n cã th môc newmath trong ®êng dÉn t×m kiÕm cña
MATLAB. Th môc con private cña th môc newmath cã thÓ chøa c¸c
hµm mµ chØ cã c¸c hµm trong th môc newmath míi cã thÓ gäi ®îc.
Do c¸c hµm riªng lµ kh«ng thÊy ®îc bªn ngoµi th môc cha, chóng cã
thÓ sö dông c¸c tªn hµm trïng nhau víi hµm ë c¸c th môc kh¸c. §iÒu
nµy h÷u Ých khi b¹n muèn t¹o riªng m×nh phiªn b¶n hµm thùc trong
khi vÉn duy tr× hµm gèc ë th môc kh¸c. Do MATLAB t×m kiÕm c¸c
hµm tríc c¸c hµm M-file chuÈn, nã sÏ t×m hµm riªng cã tªn test.m tr-
íc c¸c hµm kh«ng riªng t tªn test.m. B¹n cã thÓ t¹o cho riªng b¹n th
môc riªng t ®¬n gi¶n b»ng c¸ch t¹o th môc cã tªn private qua c¸c
thñ tôc chuÈn ®Ó t¹o th môc hay folder trªn m¸y tÝnh cña b¹n.
Kh«ng nªn ®Æt c¸c th môc riªng t lªn ®êng dÉn cña b¹n.

3.3.4 File d÷ liÖu.


C¸c biÕn biÓu diÔn th«ng tin ®îc lu tr÷ trong c¸c file d÷ liÖu.
Matlab thêng sö dông hai lo¹i file d÷ liÖu Mat-files (*.mat) vµ ASCII
files. Mat-files ®îc lu ®íi d¹ng nhÞ ph©n theo ®Þnh d¹ng cña ch¬ng
tr×nh Matlab. ASCII files lu díi d¹ng c¸c kÝ tù, ®îc sö dông khi c¸c
d÷ liÖu ®îc chia sÎ (import-export) víi c¸c ch¬ng tr×nh kh¸c.
Lu/t¶i c¸c biÕn d÷ liÖu nhÞ ph©n, ta dïng lÖnh sau:
save Lu tÊt c¶ c¸c biÕn hiÖn cã trong "workspace" vµo file
"matlab.mat".
load T¶i tÊt c¶ c¸c biÕn hiÖn cã trong trong file "matlab.mat" vµo
"workspace".
save x y z Lu c¸c biÕn x, y, z vµo file "matlab.mat", cã thÓ dïng dÊu
"*" thay cho c¸c ®¹i diÖn, "save vie*" sÏ cÊt tÊt c¶ c¸c
biÕn cã 3 ch÷ c¸i ®Çu lµ "vie".
load x y z T¶i c¸c biÕn x, y, z tõ file "matlab.mat", cã thÓ dïng dÊu
"*" thay cho c¸c ®¹i diÖn, "load vie*" sÏ t¶i tÊt c¶ c¸c biÕn
cã 3 ch÷ c¸i ®Çu lµ "vie".
save fname Lu/t¶i c¸c biÕn Matlab tõ file cã tªn "fname.mat", tªn biÕn
xyz gäi ra ph¶i ®óng. T«t nhÊt gäi "load fname" sÏ t¶i tÊt c¶
load fname x c¸c biÕn.
yz cã thÓ save víi më réng kh¸c "*.ext", ®Ó ®äc ra cã thªm tham sè "-
load mat".
fname.ext...-
mat
save ... Thªm biÕn míi vµo mat-files ®· cã.
-append
Lu/t¶i c¸c d÷ liÖu ASCII (chØ cho biÕn vector hay ma trËn):
save fname x y Lu c¸c d÷ liÖu ë d¹ng ASCII víi 8 ch÷ sè dÊu
-ascii ph¶y ®éng.
save ... -ascii Lu c¸c d÷ liÖu ë d¹ng ASCII víi 16 ch÷ sè dÊu
-double ph¶y ®éng.
save ... -ascii Lu c¸c d÷ liÖu ph©n c¸ch nhau bëi kÝ tù tab.
-double -tabs
load fname.ext §äc vµo d÷ liÖu ë d¹ng ASCII, víi c¸c hµng d÷
load fname.ext liÖu. Cho phÐp sö dông kÝ tù "%" cho chó
-ascii thÝch. BiÕn ®äc ®îc sÏ cã tªn lµ fname. NÕu c¸c
ch÷ liÒn nhau ®Çu tiªn cña tªn file lµ sè hoÆc
cã chøa kÝ tù ®Æc biÖt sÏ ®îc thay b»ng kÝ tù
g¹ch díi "_".
fprintf, sprintf. xem 3.1.2 a.
VÝ dô:
» a=[1 2 3; 4 5 6];
» s.a=1.234;
» s.h=[1 2 3 4 5 6 7];
» save mydata a s;
SÏ cho ta file d÷ liÖu nhÞ ph©n "mydata.mat" chøa 2 biÕn a vµ s.
» load mydata s;
T¶i tõ file d÷ liÖu nhÞ ph©n biÕn sµ f.
» load mydata;
T¶i tõ file d÷ liÖu nhÞ ph©n tÊt c¶ biÕn trong "mydata.mat".

3.4 C¸c biÓu thøc quan hÖ vµ logic.

3.4.1 C¸c phÐp to¸n quan hÖ.

To¸n tö quan ý nghÜa BiÓu thøc quan hÖ



<, lt(s1,s2) Nhá h¬n. s1<s2
<=, le(s1,s2) Nhá h¬n hoÆc b»ng. s1s2
>, gt(s1,s2) Lín h¬n. s1>s2
>=, ge(s1,s2) Lín h¬n hoÆc b»ng. s1s2
==, eq(s1,s2) B»ng nhau. s1s2
~=, ne(s1,s2) Kh¸c nhau. s1s2
PhÐp so s¸nh hai ma trËn lµ phÐp so s¸nh tõng phÇn tö cña 2
ma trËn cïng kÝch thíc, kÕt qu¶ sinh ra mét ma trËn cïng kÝch thíc
chøa c¸c phÇn tö 0,1; g¸n gi¸ trÞ 1 nÕu phÐp so s¸nh lµ ®óng, ngîc
l¹i nhËn gi¸ trÞ 0.

3.4.2 C¸c phÐp to¸n logic.

To¸n tö logic Matlab BiÓu thøc logic


and &, and(s1,s2) s1 & s2
or |, or(s1,s2) s1 | s2
not ~, not(s1) ~ s1
xor xor(s1,s2) s1  s2
Matlab kh«ng cã lo¹i d÷ liÖu riªng ®Ó m« t¶ c¸c ®¹i lîng logic.
Matlab sö dông sè 0 ®Ó m« t¶ ®¹i lîng logic false, vµ c¸c sè 0 (d-
¬ng, ©m) ®Ó m« t¶ ®¹i lîng logic true.C¸c to¸n tö and-&,or-|, xor lµ
c¸c to¸n tö 2 ng«i, to¸n tö not-~ lµ to¸n tö 1 ng«i.
C¸c phÐp tÝnh logic vµ biÓu thøc sè häc cã thÓ kÕt hîp víi
nhau:
 x  1 x  1

y   x 2  1 1  x  1
x3  1
 x 1
»x=-3:0.1:3;
»y=(-x-1).*(x<-1)+(-x.^2+1).*((-1<=x)&(x<=1))+(x.^3+1).*(x>1);

3.4.3 C¸c hµm quan hÖ logic

any(X) Hµm cho gi¸ trÞ 1 nÕu mét phÇn tö cña X kh¸c 0
all(X) Hµm cho gi¸ trÞ 1 nÕu tÊt c¶ phÇn tö cña X kh¸c 0
find(X) Hµm tr¶ l¹i vector chøa chØ sè c¸c phÇn tö kh¸c 0 cña
X.
Có ph¸p: [i,j]=find(X), hoÆc p=find(X) (t¬ng tù
find(X(:)).
isNaN(X) Tr¶ vÒ ma trËn víi c¸c phÇn tö 0 nÕu c¸c phÇn tö cña X
lµ h÷u h¹n, tr¶ vÒ phÇn tö 1 nÕu phÇn tö lµ NaN.
isinf(X) Tr¶ vÒ ma trËn víi c¸c phÇn tö 0 nÕu c¸c phÇn tö cña X
lµ h÷u h¹n, tr¶ vÒ phÇn tö 1 nÕu phÇn tö lµ Inf.
isfinite(X) Tr¶ vÒ ma trËn víi c¸c phÇn tö 1 nÕu c¸c phÇn tö cña X
lµ h÷u h¹n, tr¶ vÒ phÇn tö 0 nÕu phÇn tö lµ Inf foÆc
NaN.
isempty(X Tr¶ vÒ gi¸ trÞ 1 nÕu X lµ ma trËn rçng, vµ 0 nÕu ngîc
) l¹i.
ischar(X) Tr¶ vÒ 1 nÕu X lµ ma trËn kÝ tù, vµ 0 nÕu X lµ ma trËn
d¹ng kh¸c.
iscell(X) Tr¶ vÒ 1 nÕu X lµ m¶ng khèi, vµ 0 nÕu X cã d¹ng kh¸c.
islogical(XTr¶ vÒ 1 nÕu X lµ ma trËn Logic, vµ 0 nÕu X cã d¹ng
) kh¸c.
isstruct(X)Tr¶ vÒ 1 nÕu X lµ biÕn cÊu tróc, vµ 0 nÕu X cã d¹ng
kh¸c.
isnumeric( Tr¶ vÒ 1 nÕu X lµ biÕn m¶ng sè, vµ 0 nÕu X cã d¹ng
X) kh¸c.
isobject(X Tr¶ vÒ 1 nÕu X lµ biÕn ®èi tîng, vµ 0 nÕu X cã d¹ng
) kh¸c.
issparse(X Tr¶ vÒ 1 nÕu X lµ biÕn m¶ng rêi r¹c, vµ 0 nÕu X cã
) d¹ng kh¸c.
strcmp(s1, So s¸nh 2 x©u s1 vµ s2. Gi¸ trÞ 1 ®îc tr¶ vÒ nÕu 2
s2) x©u gièng hÖt nhau vµ b»ng 0 nÕu 2 x©u cã sù kh¸c
nhau. Cã sù ph©n biÖt ch÷ hoa vµ ch÷ thêng, c¸c kÝ
tù ®Çu dßng vµ c¸c dÊu c¸ch cã trong x©u.

3.5 C©u lÖnh luång cÊu tróc.

3.5.1 LÖnh ®iÒu kiÖn.


a. LÖnh if ®¬n.
Có ph¸p:
if <biÓu thøc logic>
nhãm lÖnh.
end
NÕu biÓu thøc logic lµ ®øng, nhãm lÖnh sÏ ®îc thùc hiªn. NÕu
biÓu thøc logic lµ sai th× ch¬ng tr×nh sÏ nh¶y tíi lÖnh end.
b. LÖnh if lång nhau.
Có ph¸p:
if <biÓu thøc logic 1>
nhãm lÖnh A;
if <biÓu thøc logic 2>
nhãm lÖnh B;
end
nhãm lÖnh C;
end
Nhãm lÖnh D;
NÕu biÓu thøc ®iÒu kiÖn 1 ®óng, ch¬ng tr×nh sÏ thùc hiÖn
c¸c nhãm lÖnh A,C; cßn nÕu biÓu thøc ®iÒu kiÖn 2 ®óng, nhãm
lÖnh B se ®îc thi hµnh ngay tríc nhãm lÖnh C. NÕu biÓu thøc ®iÒu
kiÖn 1 sai, ch¬ng tr×nh sÏ thùc hiÖn ngay nhãm lÖnh D.
c. lÖnh else.
Có ph¸p:
if <biÓu thøc logic 1>
nhãm lÖnh A;
else
nhãm lÖnh B;
end
Cho phÐp thùc hiÖn nhãm lÖnh A nÕu biÓu thøc ®iÒu kiÖn
®óng, ngîc l¹i thùc hiÖn nhãm lÖnh B.
d. LÖnh elseif.
Khi ta cã cÊu tróc nhiÒu lùa chän ®iÒu kiÖn if-else, rÊt khã x¸c
®Þnh nhãm lÖnh nµo sÏ ®îc thùc hiÖn khi biÓu thøc logic ®óng
hoÆc sai. Trong trêng hîp nµy, sö dông mÖnh ®Ò elseif sÏ lµm ch-
¬ng tr×nh trë nªn trong s¸ng vµ dÔ hiÓu.
Có ph¸p:
if <biÓu thøc logic 1>
nhãm lÖnh A;
elseif <biÓu thøc logic 2>
nhãm lÖnh B;
elseif <biÓu thøc logic 3>
nhãm lÖnh C;
else
nhãm lÖnh D;
end
NÕu biÓu thøc 1 ®óng th× thùc hiªn c©u lÖnh A, nÕu biÓu
thøc 1 sai vµ biÓu thøc 2 ®óng th× chØ cã nhãm lÖnh B ®îc thùc
hiÖn. nÕu biÓu thøc 1,2 sai vµ biÓu thøc 3 ®óng th× chØ cã nhãm
lÖnh C ®îc thùc hiÖn. NÕu cã tõ hai biÓu thøc logic trë nªn ®óng
th× biÓu thøc logic ®Çu tiªn x¸c ®Þnh nhãm lÖnh sÏ ®îc thùc hiÖn.
NÕu kh«ng cã biÓu thøc ®iÒu kiÖn nµo ®óng th× kh«ng cã lÖnh
nµo trong cÊu tróc if-elseif ®îc thi hµnh vµ nÕu cã thªm mÖnh ®Ò
else th× nhãm lÖnh D ®îc thi hµnh.
VÝ du:
if I == J
A(I,J) = 2;
elseif abs(I-J) == 1
A(I,J) = -1;
else
A(I,J) = 0;
end
e. LÖnh ®iÒu kiÖn vµ break
Có ph¸p: if <biÓu thøc logic>, break, end
Tõ kho¸ break víi c©u lÖnh if ë th©n vßng lÆp cho phÐp tho¸t
ra khái vßng lÆp nÕu <biÓu thøc logic> trong c©u lÖnh ®iÒu kiÖn
lµ ®óng, ngîc l¹i sÏ thùc hiÖn nhãm lÖnh tiÕp theo trong vßng lÆp
®ã. LÖnh break chØ cã t¸c dông ®èi víi vßng lÆp chøa lÖnh nµy,
c¸c vßng lÆp bªn ngoµi kh«ng bÞ dõng.

3.5.2 LÖnh lùa chän switch-case.


Có ph¸p tæng qu¸t:
SWITCH switch_expr
CASE case_expr,
statement, ..., statement
CASE {case_expr1, case_expr2, case_expr3,...}
statement, ..., statement
...
OTHERWISE,
statement, ..., statement
END
Thùc hiÖn nhãm lÖnh theo biÓu thøc ®iÒu kiÖn lùa chän
switch_expr. ChØ c¸c c©u lÖnh cã switch_expr s¸nh ®óng víi biÓu
thøc ë CASE case_expr ®Çu tiªn sÏ ®îc thi hµnh. Khi biÓu thøc ë
case cã d¹ng cell, bÊt k× phÇn tö nµo trong case_expr s¸nh ®óng
víi switch_expr th× nhãm lÖnh ë CASE ®ã sÏ ®îc thi hµnh. Khi
kh«ng cã biÓu thøc nµo sau case_expr nµo s¸nh ®óng switch_expr
c©u lÖnh s©u OTHERWISE sÏ ®îc thi hµnh (nÕu cã).
switch_expr cã thÓ lµ v« híng hoÆc x©u kÝ tù. switch_expr lµ
v« híng s¸nh ®óng víi case_expr nÕu switch_expr==case_expr.
switch_expr lµ x©u kÝ tù s¸nh ®óng víi case_expr nÕu
strcmp(switch_expr,case_expr) tr¶ vÒ 1 (true).
VÝ dô (gi¶ sö METHOD lµ biÕn x©u kÝ tù):
switch lower(METHOD)
case {'linear','bilinear'}
disp('Method is linear')
case 'cubic'
disp('Method is cubic')
case 'nearest'
disp('Method is nearest')
otherwise
disp('Unknown method.')
end

3.5.3 CÊu tróc lÆp.

a. Vßng lÆp for.


Có ph¸p:
for BiÕn_chØ_sè = biÓu_thøc, lÖnh_1, ..., lÖnh_n end
BiÓu thøc cã thÓ lµ lµ mét ma trËn (vector hay ®¹i lîng v« h-
íng), nhãm lÖnh sÏ ®îc thi hµnh lÆp ®i lÆp l¹i víi sè lÇn b»ng sè cét
cña ma trËn biÓu_thøc. Mçi lÇn lÆp BiÕn_chØ_sè sÏ lÇn lît nhËn gi¸
trÞ c¸c cét cña ma trËn biÓu_thøc.
Chó ý:
+BiÕn_chØ_sè cña vßng lÆp ph¶i lµ biÕn.
+NÕu ma trËn biÓu_thøc lµ rçng th× vßng lÆp for kh«ng thùc
hiÖn. Ch¬ng tr×nh bá qua vßng lÆp.
+NÕu ma trËn biÓu_thøc lµ mét ®¹i lîng v« híng. Vßng lÆp chØ
thùc hiÖn 1 lÇn vµ BiÕn_chØ_sè nhËn gi¸ trÞ cña ®¹i lîng v« h-
íng.
+NÕu biÓu_thøc lµ vector hµng, sau mçi lÇn lÆp BiÕn_chØ_sè
l¹i nhËn gi¸ trÞ tiÕp theo cña hµng.
+NÕu biÓu_thøc lµ ma trËn, sau mçi lÇn lÆp BiÕn_chØ_sè sÏ
nhËn gi¸ trÞ cña cét tiÕp theo cña ma trËn.
+Khi kÕt thóc vßng lÆp, BiÕn_chØ_sè nhËn gi¸ trÞ cña lÇn g¸n
sau cïng.
+NÕu muèn tho¸t khái vßng lÆp tríc khi vßng lÆp kÕt thóc, sö
dông lÖnh break trong biÓu thøc ®iÒu kiÖn ®Ó dõng.
VÝ dô (BiÕt v« híng N):
FOR I = 1:N,
FOR J = 1:N,
A(I,J) = 1/(I+J-1);
END
END
FOR S = 1.0: -0.1: 0.0, END lÆp c¸c bíc víi S gi¶m theo mçi bíc lµ
-0.1
FOR E = EYE(N), ... END g¸n E víi gi¸ trÞ lµ c¸c vector ®¬n vÞ ®é
dµi N.

b. Vßng lÆp while.


Có ph¸p:
while biÓu_thøc
c¸c_c©u_lÖnh
end
NÕu tÊt c¶ phÇn thùc cña kÕt qu¶ biÓu thøc kh¸c kh«ng th×
c¸c c©u lÖnh ®îc thi hµnh. Trong nhãm lÖnh statements ph¶i t¸c
®éng lªn biÕn trong biÓu thøc expression ®Ó lËp ®iÒu kiÖn tho¸t
vßng lÆp (Tån t¹i phÇn thùc cña kÕt qu¶ biÓu thøc b»ng kh«ng).
BiÓu thøc expression thêng lµ kÕt qu¶ tr¶ vÒ cña expr rop expr víi
re rop lµ c¸c to¸n tö ==, <, >, <=, >=, hoÆc ~=. C©u lÖnh break
®îc sö dông ®Ó huû vßng lÆp khi cÇn thiÕt. §Ó tho¸t khái vßng lÆp
v« h¹n, sö dông phÝm lÖnh Ctrl+C ®Ó huû ch¬ng tr×nh ®ang ch¹y.
VÝ dô (gi¶ sö biÕn A ®· cã):
E = 0*A; F = E + eye(size(E)); N = 1;
while norm(E+F-E,1) > 0,
E = E + F;
F = A*F/N;
N = N + 1;
end

3.6 NhËn th«ng tin tõ ngêi dïng.


NhËn th«ng tin tõ ngêi dïng trong khi thi hµnh nhiÖm vô tõ M-file,
b¹n cã thÓ:
•HiÓn thÞ lêi nh¾c vµ nhËn th«ng tin tõ bµn phÝm.
•Tam dõng cho ®Õn khi ngêi sö dông nhÊn phÝm.
•X©y dùng giao diÖn ®å ho¹ ngêi dïng hoµn chØnh.
PhÇn nµy xem xÐt 2 chñ ®Ò ®Çu. Cgñ ®Ò thø ba nªu trong phÇn
x©y dùng GUI trong
MATLAB.
3.6.1 HiÓn thÞ lêi nh¾c cho viÖc nhËp th«ng tin tõ bµn
phÝm
Hµm input hiÓn thÞ lêi nh¾c vµ chê ph¶n håi cña ngêi dïng. Nã
cã có ph¸p lµ:
n = input(’prompt_string’)
Hµm hiÓn thÞ x©u kÝ tù prompt_string, chê cho ®Õn khi cã
nhËp liÖu bµn phÝm, vµ sau ®ã tr¶ vÒ gi¸ trÞ nhËp tõ bµn phÝm.
Khi ngêi dïng nhËp biÓu thøc, hµm íc lîng biÓu thøc vµ tr¶ vÒ gi¸ trÞ
cña nã. Hµm nµy cã t¸c dông cho viÖc cµi ®Æt c¸c øng dông ®iÒu
khiÓn menu.
input còng tr¶ vÒ x©u kÝ tù ®îc nhËp, h¬n lµ gi¸ trÞ sè. §Ó nhËn
x©u kÝ tù, thªm 's' vµo danh s¸ch ®èi sè hµm.
name = input(’Enter address: ’,’s’);

3.6.2 Ngng trong khi thùc thi


Vµi M-file lîi dông (benefit from) viÖc t¹m ngng gi÷a c¸c bíc thi
hµnh. VÝ dô, file kÞch b¶n petals.m t¹m ngng gi÷a c¸c ®å thÞ nã
t¹o, cho phÐp ngêi dïng hiÓn thÞ ®å thÞ chõng nµo ngêi dïng bÊm
phÝm ®Ó chuyÓn sang ®å thÞ tiÕp theo.
% An M–file script to produce "flower petal" plots
theta = –pi:0.01:pi;
rho(1,:) = 2*sin(5*theta).^2;
rho(2,:) = cos(10*theta).^3;
rho(3,:) = sin(theta).^2;
rho(4,:) = 5*cos(3.5*theta).^3;
for i = 1:4
polar(theta,rho(i,:));
pause;
end

C©u lÖnh pause, kh«ng cã ®èi sè nµo, dõng thi hµnh cho ®Õn
khi ngêi dïng bÊm phÝm. T¹m ngng trong n gi©y, sö dông:
pause(n)

3.7 Hµm giao diÖn ngoµi (Shell Escape Functions).


§«i khi cã c¸ch tiÖn lîi h¬n lµ truy cËp c¸c ch¬ng tr×nh viÕt b»ng
C hay Fortran b»ng giao diÖn (shell) hµm bªn ngoµi. Shell escape
functions sö dông c©u lÖnh gäi hµm bªn ngoµi !, lµ ch¬ng tr×nh
®éc lËp chuÈn bªn ngoµi ®ãng vai trß nh hµm MATLAB míi. Hµm
giao diÖn ngoµi lµ M-file mµ:
1 CÊt c¸c biÕn thÝch hîp lªn ®Üa.
2 Ch¹y ch¬ng tr×nh bªn ngoµi (sÏ ®äc d÷ liÖu tõ file d÷ liÖu,
xö lý d÷ liÖu, vµ ghi kÕt qu¶ ngîc l¹i cho ®Üa).
3 T¶i file d÷ liÖu ®· xö lý trë l¹i kh«ng gian lµm viÖc.
VÝ dô, xem m· hµm garfield.m. §©y lµ hµm sö dông hµm bªn
ngoµi, gareqn, ®Ó t×m nghiÖm ph¬ng tr×nh Garfield.
function y = garfield(a,b,q,r)
save gardata a b q r
!gareqn
load gardata

M-file nµy:
1 CÊt ®èi sè vµo a, b, q, vµ r lªn file-MAT trong kh«ng gian lµm
viÖc b»ng c©u lÖnh save.
2 Sö dông to¸n tö giao diÖn bªn ngoµi ®Ó truy cËp ch¬ng
tr×nh C, hay Fortran cã tªn gareqn sö dông c¸c biÕn
workspace ®Ó thùc hiÖn tÝnh to¸n cña nã. Hµm gareqn
viÕt kÕt qu¶ trë l¹i file-MAT gardata.
3 T¶i file-MAT gardata ®Ó lÊy kÕt qu¶.
3 ch¬ng 4
§å ho¹ 2D
4.1 C¸c phÐp biÕn ®æi ®å ho¹.

4.1.1 Quay hÖ trôc to¹ ®é.


Trªn h×nh 4.1 biÓu diÔn y1
phÐp quay hÖ to¹ ®é, y
hÖ to¹ ®é gèc ®îc
biÓu thÞ b»ng ®êng P1
liÒn nÐt, hÖ to¹ ®é P
míi biÓu diÔn phÐp x1
quay biÓu thÞ b»ng
®êng nÐt ®øt. ChiÒu 
0 x
quay qui íc lµ d¬ng
nÕu nã quay theo
chiÒu ngîc cña kim H×nh 4.1 Quay hÖ trôc to¹ ®é trªn
mÆt ph¼ng
®ång hå.
ta cã:
x1=x.cos( )+y.sin()
y1=x.sin( )+y.cos( )
kÝ hiÖu:

x x1 cos()sin( )


P P1 ;; A  ta cã thÓ viÕt: P1=A.P;

y y1 sin() cos( )


quan hÖ nghÞch ®¶o cña phÐp biÕn ®æi ®îc thÓ hiÖn nh sau:
P=A-1.P1.

4.1.2 Gãc Euler.


Gãc Euler lµ tham sè qui íc ®Ó m« t¶ viÖc quay trong hÖ kh«ng
gian 3 chiÒu hay hÖ to¹ ®é trùc gi¸c.
Bµi to¸n: tõ to¹ ®é cña ®iÓm P(x,y,z) cho tríc, x¸c ®Þnh ®iÓm
t¬ng øng P1(x1,y1,z1) sau khi quay hÖ to¹ ®é ®i mét gãc. ViÖc x¸c
®Þnh chiÒu quay ©m/d¬ng cña hÖ trôc to¹ ®é theo qui t¾c bµn
tay ph¶i .
Khi quay hÖ trôc to¹ ®é xung quanh trôc Oz 1 gãc , ®iÓm
(x*,y*,z*) t¹o thµnh sÏ ®îc m« t¶ theo c«ng thøc sau:
 x *  cos( ) sin( ) 0  x 
    
 y *  P*    sin( ) cos() 0  y   AP
 z *  0 0 1  z 
  
TiÕp theo quay quanh trôc x 1 gãc . HÖ gi¸ trÞ to¹ ®é míi cña
®iÓm ®· ®îc quay ®îc viÕt díi c«ng thøc:

 x **  1 0 0  x *
    
 y **  P **   0 cos( ) sin( )  y *  BP*  BAP
 z **  0  sin( ) cos( ) z *
    
TiÕp theo quay hÖ trôc quanh trôc y mét gãc . Gi¸ trÞ to¹ ®é
cuèi cïng thu ®îc sÏ lµ:
 x1   cos( ) 0 sin( )  x * * 
    
 y1   P1   0 1 0  y * *  CP * *  CBAP
z    sin( ) 0 cos( )  z * * 
 1   
KÕt qu¶ 3 phÐp quay cho ta: P1=ABCP=DP.

PhÐp biÕn ®æi Czichos(1989) ®îc biÓu diÔn theo c«ng thøc
sau: KÝ hiÖu Ccos(), Ssin()... ta cã ma trËn quay.
 CC  SCS CC  SCS SS 
 
R    SC  CCS  SS  CCC CS 
 SS  SC C 

Hµm biÕn ®æi kh«ng gian - c«ng thøc Euler:
function [R,A,B,C]=eulrotate(si,te,fi)
%euler rotation
A=[cos(si) sin(si) 0;-sin(si) cos(si) 0;0 0 1];
B=[cos(fi) 0 sin(fi);0 1 0;-sin(fi) 0 cos(fi)];
C=[1 0 0;0 cos(te) sin(te);0 -sin(te) cos(te)];
R=C*B*A;
4.2 PhÐp biÕn ®æi Affine trong mÆt ph¼ng.
C¸c phÐp biÕn ®æi affine bao gåm: translation, rotation,
scalling...

4.2.1 To¹ ®é thuÇn nhÊt.


Trong thùc tÕ ®Ó biÓu diÔn c¸c phÐp biÕn ®æi Affine ngêi ta
thêng sö dông phÐp biÕn ®æi ma trËn. Thêng ®å ho¹ m¸y tÝnh vµ
kü thuËt robotics ®ßi hái mét chuçi (concatenation) c¸c phÐp biÕn
®æi c¬ b¶n. §iÒu ®ã ®îc thùc hiÖn bëi mét lo¹t c¸c phÐp biÕn
®æi ma trËn. viÖc nh©n c¸c ma trËn chuyÓn ®æi ®îc thùc hiÖn
cïng víi viÖc sö dông hÖ to¹ ®é thuÇn nhÊt.
HÖ to¹ ®é thuÇn nhÊt: XÐt ®iÓm P trong hÖ to¹ ®é §Ò c¸c
P(x,y).
ViÖc biÓu diÔn hÖ to¹ ®é thuÇn nhÊt ®îc viÕt nh sau:

 x1 
 x  x1 w
P   y1 ; 
 w­  y  y1 w

u viÖt cña hÖ to¹ ®é thuÇn nhÊt lµ chóng cho phÐp biÓu diÔn
c¸c ®iÓm ë xa v« cïng, viÖc biÓu diÔn c¸c ®iÓm v« cïng th«ng qua
w=0 vµ x1, y1 lµ c¸c sè h÷u h¹n.

4.2.2 PhÐp chuyÓn dÞch tÞnh tiÕn(Translation).


PhÐp chuyÓn vÞ tÞnh tiÕn víi c¸c kho¶ng dx, dy song song 2
trôc x vµ y.Ma trËn chuyÓn vÞ T trong hÖ to¹ ®é thuÇn nhÊt:
1 0 dx 
 
T  0 1 dy 
0 0 1 

4.2.3 PhÐp quay (Rotation).


PhÐp quay quanh gèc to¹ ®é mét gãc  bÊt k× ngîc chiÒu kim
®«ng hå. ma trËn biÕn ®æi R:
 cos( )  sin( ) 0
 
R   sin( ) cos( ) 0
 0 0 1 

4.2.4 PhÐp tØ lÖ (Scaling)
PhÐp biÕn h×nh theo mét tØ lÖ nhÊt ®Þnh. PhÐp tØ lÖ th«ng
qua ma trËn S:
 Sx 0 0
 
S  0 Sy 0
 0 0 1 

4.2.4 C¸c hµm biÕn ®æi Affine c¬ b¶n.


-Hµm sinh ma trËn T:
function T=translate(dx,dy)
T=[1 0 dx; 0 1 dy; 0 0 1];
-Hµm sinh ma trËn R:
function R=rotate(fi)
R=[cos(fi),-sin(fi), 0
sin(fi), cos(fi), 0
0, 0 , 1];
-Hµm sinh ma trËn S:
function S=scaling(Sx,Sy)
S=[Sx 0 0; 0 Sy 0; 0 0 1];
VÝ dô:
» P1=[.5;0.5;1];P2=[.5;-.5;1];
» P3=[-.5;-.5;1];p4=[-.5;0.5;1];
» square=[P1 P2 P3 p4 P1];
» Ts=translate(1,2)*square;
» Rs=rotate(pi/6)*square;
» Ss=scaling(0.5,3)*square;
» Gs=scaling(0.5,3)*rotate(pi/6)*translate(0.5,1)*square;
» plot(square(1,:),square(2,:),Ts(1,:),Ts(2,:),...
Rs(1,:),Rs(2,:),Ss(1,:),Ss(2,:));
» legend('square','Ts','Rs','Ss','Gs');
» axis([-2 2 -2 6]);

6
square
Ts
5 Rs
Ss
4 Gs

-1

-2
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

4.3. C¸c hµm chuÈn ®å ho¹ 2D.

4.3.1 C¸c hµm vÏ ®å thÞ.


a. Hµm vÏ ®å thÞ tõ m¶ng d÷ liÖu.
-Matlab cung cÊp c¸c hµm vÏ ®å thÞ vµ biÓu ®å tõ m¶ng d÷ liÖu: plot,
bar, barh, stairs, errorbar, fill, area, hist, pie, scatter, stem, pareto.
plot(x1,y1,s1,x2,y2,s2,...) víi xi,yi lµ c¸c vector, hoÆc ma trËn , ph¶i
®ñ 2 tham sè cho x vµ y;
si-lµ kiÓu mµu,®iÓm,®êng; xem 'linpsec'.
plot(x,A) -nÕu k=m, vÏ c¸c cét cña A theo x.
-nÕu k=n, vÏ c¸c hµng cña A theo x
-nÕu k=m, vÏ x theo c¸c cét cña A.
plot(A,x) -nÕu k=n, vÏ x theo c¸c hµng cña A.
plot(y)plot(1:length(y),y);
plot(z)plot(real(z),imag(z));
plot(A)plot(1:size(A,1),A);plot(1:m,A);
plot(A,B)-vÏ c¸c cét cña B theo c¸c cét cña A.
x,y-c¸c vector kÝch thíc k;
A,B-c¸c ma trËn kÝch thíc mxn;
z-sè phøc.
NÕu kh«ng chØ ®Þnh nÐt vÏ si, plot sÏ tù ®éng vÏ víi ®êng liÒn nÐt, mµu theo
thø tù b¶ng mµu.
Khi tham sè lµ ma trËn, chØ ®Þnh nÐt vÏ lµ chung cho tÊt c¶ c¸c ®êng d÷
liÖu ma trËn.

b. VÏ ho¹t h×nh (comet).

c. VÏ ®å thÞ khi biÕt d¹ng hµm.

4.3.2 C¸c hÖ to¹ ®é trong mÆt ph¼ng.


Hµm plot cho phÐp vÏ trong hÖ to¹ ®é ®Ò c¸c. Tuú yªu cÇu bµi to¸n
kÜ thuËt ph¶i sö dông c¸c hÖ to¹ ®é kh¸c. Matlab cung cÊp c¸c hµm t¹o
dùng ®å ho¹ trªn c¸c lo¹i hÖ to¹ ®é sau:
polar(theta,r VÏ trªn hÖ to¹ ®é cùc d÷ liÖu quan hÖ ro=ro(theta).
o,s)
semilogx(x,y VÏ trªn hÖ to¹ ®é trôc loga, thang ®o log10 sö dông cho
,s) trôc x
semilogy(x,y VÏ trªn hÖ to¹ ®é trôc loga, thang ®o log10 sö dông cho
,s) trôc y
loglogx(x,y,s VÏ trªn hÖ to¹ ®é trôc loga, thang ®o log10 sö dông cho
) trôc x vµ y
Lu ý:
+x vµ y, theta vµ ro ph¶i cã cïng kÝch thíc.
+ChØ ®Þnh nÐt vÏ s cã thÓ cã hoÆc kh«ng.
+Sö dông hÖ to¹ trôc loga tr¸nh th«ng b¸o lçi t¹i log10(0).

4.3.3 §å ho¹ mÆt ph¼ng phøc.


quiver(x,y) VÏ mòi tªn vËn tèc cho mçi cÆp cña hÑ to¹ ®é cho bëi
xij vµ yij cïng biÕn sè ®é lín lµ dxi=xj-xi, dyi=yj-yi
quiver(x,y,d VÏ mòi tªn víi to¹ ®é xi,yi víi biÕn sè ®é lín dx,dy, tØ lÖ
x,dy,s) s, mÆc ®Þnh s=0
quiver(x,y,... VÏ quiver theo nÐt vÏ cho bëi x©u str.
,str)
feather(z) VÏ mòi tªn theo to¹ ®é thùc vµ ¶o c¸c phÇn tö cña z tõ
gèc to¹ ®é.
feather(x,y) VÏ c¸c mòi tªn vector t¹i thµnh phÇn d÷ liÖu thø i (xi,yi).
feather(z,str VÏ vµ chØ ®Þnh nÐt vÏ trong str.
)
compass(z,s VÏ mòi tªn trªn to¹ ®é cùc c¸c thµnh phÇn thùc vµ ¶o
tr) cña d÷ liÖu.
compass(x,y, str-kiÓu nÐt vÏ.
str)

arrows emanating from equally spaced points along a horizontal


axis.
FEATHER is useful for displaying direction and magnitude data
that
is collected along a path.
4.3.4 LÖnh ®iÒu khiÓn cöa sæ ®å ho¹
figure(fig) HiÓn thÞ cöa sæ ®å ho¹ cã sè lµ fig, cöa sæ nµy sÏ lµ cöa
sæ hiÖn hµnh, nÕu kh«ng tån t¹i cöa sæ cã sè fig, nã sÏ
t¹o cöa sæ ®å ho¹ míi.
clf Xo¸ toµn bé ®å ho¹ figure hiÖn hµnh.
subplot(m, Chia mµn h×nh ®å ho¹ lµm m hµng, n cét, p (1..mxn) lµ
n,p) phÇn cöa sæ hiÖn hµnh; p lµ sè thø tù tÝnh tõ tr¸i qua
ph¶i, tõ trªn xuèng.
subplot T¬ng ®¬ng subplot(1,1,1).
hold on LÖnh gi÷ l¹i ®å ho¹ cöa sæ hiÖn hµnh, c¸c lÖnh vÏ tiÕp
theo sÏ vÏ thªm vµo chø kh«ng xo¸ ®i c¸c thùc thÓ cò.
hold of MÆc ®Þnh khi khëi t¹o cöa sæ ®å ho¹, c¸c vÏ míi sÏ thay
thÕ c¸c thùc thÓ míi trªn phÇn cöa sæ hiÖn hµnh.
hold chuyÓn tr¹ng th¸i tõ on sang off vµ ngîc l¹i.
ishold Tr¶ vÒ 1 nÕu tr¹ng th¸i ®å ho¹ hiÖn hµnh lµ hold on, 0
nÕu lµ hold off.
grid on BËt vÏ líi trªn phÇn cöa sæ ®å ho¹ hiÖn hµnh.
grid of T¾t vÏ líi trªn phÇn cöa sæ ®å ho¹ hiÖn hµnh.
grid ChuyÓn tr¹ng th¸i lÖnh grid tõ on sang off vµ ngîc l¹i.
zoom on Phãng to ®å ho¹ 2 chiÒu b»ng c¸c phÝm tr¸i chuét trªn
cöa sæ ®å ho¹.
PhÝm chuét ph¶i ®Ó thu nhá. Cho phÐp phãng to phÇn
lùa b»ng "kÐo vµ th¶" chuét
zoom of Lo¹i bá lÖnh zoom.
zoom ChuyÓn tr¹ng th¸i lÖnh zoom gi÷a on vµ off.
zoom out §a ®å ho¹ vÒ tr¹ng th¸i ban ®Çu.
axis Tr¶ vÒ kho¶ng giíi h¹n phÇn ®å ho¹ hiÖn hµnh.
kh«ng gian 2D lµ [xmin xmax ymin ymax]
kh«ng gian 3D lµ [xmin xmax ymin ymax zmin zmax]
axis(lim) X¸c lËp miÒn giíi h¹n phÇn ®å ho¹ hiÖn hµnh, kh«ng gian
2D (3D) lim lµ vector 4 (6) thµnh phÇn [xmin xmax ymin
y max] ([...zmin zmax])
axis(axis) Gi÷ miÒn giíi h¹n ®å ho¹ hiÖn hµnh, kh«ng cho Matlab tù
axis ®éng thay ®æi khi thªm thùc thÓ míi vµo cöa sæ ®å ho¹
manual hiÖn hµnh.
axis ctrl §a ra lÖnh tuú thuéc tham sè ctrl
víi ctrl lµ:
auto Cho phÐp Matlab tù ®éng x¸c lËp miÒn giíi h¹n.
tight Giíi h¹n miÒn giíi h¹n b»ng gi¸ trÞ lín nhÊt vµ nhá nhÊt cña
equal d÷ liÖu.
ij Giíi h¹n miÒn vÏ c¸c trôc to¹ ®é b»ng nhau, b»ng gi¸ trÞ
xy lín nhÊt.
image Quay trôc y víi híng tõ trªn xuèng cho chiÒu d¬ng,.
square §a c¸c trôc x, y vÇ híng mÆc ®Þnh
normal Nh axis equal nhng vÏ h×nh bao khíp víi d÷ liÖu.
on §a giíi h¹n miÒn thµnh h×nh vu«ng.
of Tr¶ cöa sæ ®å ho¹ vÒ kÝch thíc ban ®Çu.
HiÓn thÞ c¸c trôc, c¸c nh·n, c¸c dÊu chia ®o¹n, líi (nÕu cã)
vµ mµu nÒn.
DÊu c¸c trôc ghi kich thíc, líi (nÕu cã) vµ t¾t mµu nÒn.

4.3.5 V¨n b¶n trong cöa sæ ®å ho¹.


title(str) ViÕt dßng tiªu ®Ò trªn ®Ønh, c¨n gi÷a.
xlabel(str) ViÕt tªn nh·n cho c¸c trôc x,y,z. Dßng ch÷ ®îc c¨n
ylabel(str) gi÷a.
zlabel(str)
text(x,y, ViÕt x©u str t¹i vÞ trÝ x,y (z).
(z,)str)
gtext(str) ViÕt x©u str t¹i vÞ trÝ kÝch chuét.
legend(s1,s2, §a ra chu thÝch lµ c¸c x©u kÝ tù s1,s2,... víi kiÓu ®-
...) êng theo thø tù c¸c thùc thÓ ®· vÏ tríc ®ã.
legend(s1,l1, §a ra chu thÝch lµ c¸c x©u kÝ tù s1,s2,... víi kiÓu ®-
s2,l2,...) êng cho bëi l1,l2,...
legend of Lo¹i bá chøc n¨ng legend
Ghi chó:C¸c lÖnh trªn cã t¸c dông t¹i phÇn cöa sæ ®å ho¹ hiÖn thêi.
4.3.6 §äc d÷ liÖu tõ cöa sæ ®å ho¹.
LÖnh ginput cho phÐp lÊy d÷ liÖu tõ phÇn cöa sæ ®å ho¹ hiÖn hµnh.
[x,y]=ginput §äc vµo to¹ ®é vµ tr¶ kÕt qu¶ cho 2 vector x,y
xy =ginput (hoÆc ma trËn xy, víi to¹ ®é lµ c¸c hµng). VÞ trÝ
®iÓm ®îc x¸c ®Þnh bëi chuét (kÝch chuét hoÆc
nhÊn bµn phÝm), Ên phÝm "enter" kÕt thóc ®äc d÷
liÖu.
[x,y]=ginput(n §äc n d÷ liÖu. NhÊn phÝm "enter" nÕu muèn kÕt
) thóc sím h¬n.
xy =ginput(n)
[x,y,ch]=ginpu x,y lµ c¸c to¹ ®é ®äc ®îc.
t(...) ch-m¶ng kÝ tù t¬ng øng 1-phÝm chuét tr¸i, 2-phÝm
chuét ph¶i, 3-phÝm gi÷a, m· kÝ tù-kÝ tù ®îc nhÊn.
[x,y,z,ch]=ginp t¬ng tù cho 3D
ut(...)
xyz
=ginput(...)
waitforbuttonp Dõng Matlab cho ®Õn khi cã t¸c ®éng lªn chuét
ress hoÆc bµn phÝm. NÕu nhÊn chuét tr¶ gi¸ trÞ 0, nhÊn
bµn phÝm tr¶ vÒ 1.
Ch¬ng 5
§å ho¹ 3D
5.1. Hµm ®ång møc (contour).
Hµm contour trong kh«ng gian 2D vµ 3D cho c¸c mÆt z=f(x,y)
t¬ng øng víi 2 hµm contour vµ contour3. Hai hµm nµy chØ cã thÓ
sö dông líi ®iÓm ch÷ nhËt.
C¸ch sö dông hµm t¹o ®êng møc nh sau:
contour(Z) VÏ c¸c ®êng ®ång møc ma trËn Z. Hµm contour vÏ c¸c
®êng møc cña Z theo 10 møc cho bëi vector V (®îc
chän tù ®éng).
contour(Z,N) N lµ v« híng vÏ N ®êng møc.
N lµ vector vÏ sè ®êng møc K=length(N), c¸c møc theo
N(i), i=1..K.
contour(X,Y,Z VÏ ®êng ®ång møc theo gi¸ trÞ ma trËn Z, C¸c thíc to¹
) ®é x¸c ®Þnh trªn 2 trôc t¬ng øng cho bëi X,Y tËp hîp
contour(...,N) to¹ ®é ®iÓm (x,y).
N lµ v« híng vÏ N ®êng møc, c¸c møc ®îc chon tù ®éng.
N lµ vector vÏ c¸c møc theo N(i), i=1..K.
contour(....'st VÏ contour víi kiÓu mµu, nÐt vÏ theo chØ ®Þnh bíi "st".
')
countourf(...) T« mµu c¸c mÆt møc.
contour3(...) VÏ c¸c møc trong kh«ng gian 3D.
[C,h]=contou Tr¶ vÒ ma trËn C, lµ ma trËn 2 hµng cña c¸c ®êng ®ång
r(...) møc. Mçi bé phËn trong C chøa gi¸ trÞ cña møc, sè lîng
[C,h]=contou cÆp ®iÓm (x,y), vµ gi¸ trÞ c¸c cÆp ®iÓm cña chóng.
rf(...) C¸c phÇn ®îc nèi tiÕp nh sau
[C,h]=contou C = [møc1 x1 x2 x3 ... møc2 x2 x2 x3 ...;
r3(...) sècÆp1 y1 y2 y3 ... sècÆp2 y2 y2 y3 ...]
sö dông kÕt ma trËn C ®îc tr¶ vÒ tõ hµm contuorC.
hîp: h lµ vector cét n¾m ®iÒu khiÓn c¸c ®èi tîng LINE hoÆc
clabel(C,h), PATCH cho mçi ®êng. C¶ C vµ h ®îc sö dông lµm tham
colorbar; cho sè cho CLABEL. thuéc tÝnh UserData cña mçi ®èi tîng cã
phÐp in gi¸ trÞ chøa gi¸ trÞ cao ®é cho mçi ®êng ®ång møc.
t¹i ®êng møc.
clabel(C,h,'ma Cho phÐp ngêi sö dông in gi¸ trÞ ®êng møc ®îc chän t¹i
nual') ®iÓm con trá t¸c ®éng, sö dông bµn phÝm vµ chuét ®Ó
chän, tiÕn tr×nh kÕt thóc khi nhÊn enter.

5.2. T¹o líi (grid).


§Ó vÏ c¸c mÆt trong 3D ta ph¶i x¸c ®Þnh líi cña miÒn. MiÒn ®-
îc x¸c ®Þnh bëi 2 vector x, y víi chiÒu dµi m, n t¬ng øng x¸c ®Þnh
c¸c gi¸ trÞ x vµ y trªn líi. líi ®îc t¹o bëi lÖnh:
» [u,v]=meshgrid(x,y)
Trong ®ã, gi¸ trÞ to¹ ®é ®iÓm líi ®îc tr¶ vµo 2 ma trËn u, v cã kÝch
thíc nxm.
u : ma trËn chøa n hµng gi¸ trÞ vector x.
v : ma trËn chøa m cét gi¸ trÞ vector y.
VÝ dô sau cho ta h×nh ¶nh cña líi [u,v]:
» x=1:3;y=1:5;
» [u,v]=meshgrid(x,y)
u =
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
v =
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
C¸c hµm t¹o líi:
[u,v]=meshgrid( T¹o líi 2 chiÒu tõ c¸c vector x,y.
x,y) T¹o líi 2 chiÒu vu«ng ®Òu.
[u,v]=meshgrid( T¹o líi 3 chiÒu tõ c¸c vector x, y ,z.
x)
[u,v,w]=meshgri
d(x,y,z)
[x,y,z]=cylinder( T¹o 3 líi px(n+1) sinh mÆt trô hoÆc mÆt nãn cã
r,n) chiÒu cao ®¬n vÞ, rp chøa vector b¸n kÝnh c¸c møc
cña trô (nãn), n+1 sè diÓm chia trªn ®êng trßn.
mÆc ®Þnh n=20, r=[1 1]. p=length(r), p>1.
[x,y,z]=sphere(n T¹o 3 líi (n+1)x(n+1) sinh mÆt cÇu ®¬n vÞ, mÆc
) ®Þnh n=20;
cylinder(r,n),sphere(n) kh«ng tham sè ra sÏ vÏ mÆt.
» cylinder([0:.1:.5],40);
» sphere;

0.8

0.6

0.4

0.2

0
0.5
0.5
0
0

-0.5 -0.5

VÝ dô 1: t¹o líi trªn miÒn h×nh trßn b¸n kÝnh r=3:


» r=linspace(0,3);
» fi=linspace(0,2*pi);
» [r,fi]=meshgrid(r,fi);
» x=r.*sin(fi);y=r.*cos(fi);
» mesh(x,y,zeros(size(x)));
VÝ dô 1: t¹o líi trªn miÒn elip b¸n kÝnh a=3, b=2:
» fi=linspace(0,2*pi); b
» a=linspace(0,3); a
» b=linspace(0,2);
» [a,t]=meshgrid(a,fi);
» [b,fi]=meshgrid(b,fi);
» x=a.*sin(fi);y=b.*cos(fi);
» mesh(x,y,zeros(size(x)));
VÝ dô 3: vÏ mÆt cong 3D z=sin((x2+y2)1/2)/(x2+y2)1/2, víi x,y trong
h×nh trßn b¸n kÝnh r=20;
» r=linspace(1e-3,20,40);f=linspace(0,2*pi,30);
» [r,f]=meshgrid(r,f);x=r.*sin(f);y=r.*cos(f);
» z=sin(r)./(r);
» surf(x,y,z);axis tight;shading interp;

5.3. §å ho¹ 3D.


Matlab tù chän gãc nh×n cho hµm plot3. X¸c ®Þnh mµu s¾c,
nÐt vÏ theo biÕn string.

5.3.1 Hµm vÏ ®å ho¹ 3D th«ng thêng.


plot3(X,Y,Z,st VÏ ®å ho¹ th«ng qua c¸c ®iÎm x¸c ®Þnh bëi X, Y, Z. X, Y,
r) Z ph¶i cã cïng ®é dµi nÕu lµ vector, cïng kÝch thíc nÕu
plot(X1,Y1,Z1, lµ ma tr©n.C¸c ®iÓm x¸c ®Þnh bëi (xi,yi,zi) cña 3 vector
S1, hay bé 3 c¸c cét t¬ng øng cña ma trËn.
Mµu s¾c vµ nÐt vÏ qui ®Þnh trong biÕn string "Si".
X2,Y2,Z2,S2...)

5.3.2 C¸c lÖnh vÏ ho¹t h×nh.


comet3(z) VÏ ho¹t h×nh 3D cña vect¬ z, theo (i,i,z(i)).
comet3(x,y,z) VÏ ho¹t h×nh cña cungtheo tËp hîp ®iÓm [X(i),Y(i),Z(i)].
comet3(x,y,z, VÏ ho¹t ho¹ víi thêi gian p*length(Z). MÆc ®Þnh p = 0.1.
p)

5.4. MÆt líi ®å ho¹ 3D.


Matlab cung cÊp mét sè hµm cho phÐp t¹o c¸c mÆt líi trªn cöa
sæ ®å ho¹ cña hµm z=f(x,y). C¸c bíc thao t¸c t¹o mÆt líi:
-T¹o líi u, v theo c¸c biÕn x, y b»ng hµm meshgrid.
-TÝnh gi¸ trÞ z=f(u,y) víi u, v lµ ma trËn ®iÓm to¹ ®é c¸c gi¸ trÞ
t¬ng øng trªn trôc x vµ y.
-VÏ mÆt líi b»ng c¸c hµm ®å ho¹ t¹o líi cña Matlab.
Matlab cung cÊp c¸c hµm t¹o líi sau:
mesh(X,Y,Z,C VÏ mÆt líi t« mµu. §iÓm nh×n x¸c ®Þnh tõ hµm view. TØ
) lÖ c¸c trôc x¸c ®Þnh tõ miÒn gi¸ trÞ cña X, Y, Z hoÆc
thiÕt lËp hiÖn t¹i cña axis. Thang mµu x¸c ®Þnh theo
miÒn cña C, hoÆc thiÕt lËp hiÖn t¹i cña caxis. Gi¸ trÞ
thang ®é mµu ®îc sö dông lµm chØ sè cho colormap
hiÖn hµnh. NÕu kh«ng cã C, thang mµu tØ lÖ víi ®é cao
cña líi.
mesh(x,y,Z,C) Khi 2 ®èi sè ®Çu lµ c¸c vector, b¾t buéc x,y ph¶i tho¶
m·n length(x) = n vµ length(y) = m víi [m,n] =
size(Z). Khi ®ã, C¸c ®iÓm cña c¸c ®êng líi lµ bé ba
(x(j), y(i), Z(i,j)). Lu ý lµ x øng víi sè cét vµ y t¬ng øng víi
sè hµng cña Z.
mesh(Z,C) LÊy x = 1:n vµ y = 1:m. Vµ ®é cao Ztrªn líi ch÷ nhËt.
meshc(...) T¬ng tù mesh vµ vÏ thªm c¸c ®êng ®ång møc trªn mÆt
ph¼ng xOy.
meshz(...) T¬ng tù mesh, vÏ thªm líi ë biªn xuèng vÞ trÝ thÊp nhÊt.
waterfall(...) T¬ng tù lÖnh mesh nhng líi ®îc vÏ theo 1 híng.
§Ó kh¶o s¸t híng thø 2 c¸c ma trËn chuyÓn vÞ cña nã.
hidden on/of Kh«ng vÏ (hoÆc vÏ ra) c¸c ®êng khuÊt sau mÆt líi.
hidden ChuyÓn tr¹ng th¸i hidden tõ on sang off vµ ngîc l¹i.

5.5. §å ho¹ bÒ mÆt.


surf(Z,C) T¹o mÆt 3D, tham sè vµo nh cña mesh.
surf(X,Y,Z,C)
surfc(...) VÏ mÆt 3D, vµ vÏ ®êng møc trªn mÆt ph¼ng xOy.
surfl(...) T¬ng tù surf, nhng cã thªm nguån s¸ng.
surfl(...,'light' T¹o bÒ mÆt ®îc chiÕu s¸ng tõ ®èi tîng (object) LIGHT.
) Thùc hiÖn lÖnh nµy cho kÕt qu¶ kh¸c ph¬ng thøc ¸nh
surfl(...,'cdat s¸ng mÆc ®Þnh, surfl(...,'cdata'), sÏ lµm thay ®æi d÷
a') liÖu mµu theo ®é ph¶n x¹ bÒ mÆt.
surfl(...,ls) T¬ng tù surf nhng cÇn cã thªm híng ls=[Az,El] hoÆc
ls=[Sx,Sy,Sz]
surlf(...,ls,k) Hµm thùc hiÖn chøc n¨ng nh trªn, vµ cã thªm th«ng tin
vÒ sù ph©n bè ¸nh s¸ng nh ¸nh s¸ng xung quanh
(ambient light), ®é ph¶n x¹ khuÕch t¸n (diffuse
reflection), ®é ph¶n chiÕu (specular reflection), vµ ph¶n
x¹ d¶i (specular spread), hÖ sè cña k cã
d¹ng:k=[ka,kd,ks,spread].
surfnorm [Nx,Ny,Nz] = surfnorm(X,Y,Z) tr¶ vÒ c¸c thµnh phÇn
vu«ng gãc (chuÈn) cña mÆt t¹i (X,Y,Z). ChuÈn ®îc
chuÈn ho¸ vÒ ®¬n vÞ.
[Nx,Ny,Nz] = surfnorm(Z) tr¶ vÒ c¸c chuÈn cña mÆt Z.
Khi kh«ng ®èi ra surfnorm(X,Y,Z) or surfnorm(Z) vÏ mÆt
cïng víi c¸c chuÈn híng ra ngoµi t¹i ®iÓm lÊy chuÈn.
ChuÈn bÒ mÆt dùa trªn néi suy bËc 3. Sö dông
surfnorm(X',Y',Z') ®Ó ®¶o chiÒu c¸c chuÈn.
difuse(Nx,Ny R = DIFFUSE(Nx,Ny,Nz,S) Tr¶ l¹i ®é ph¶n x¹ cña mÆtcã
,Nz,S) chuÈn [Nx,Ny,Nz] theo ®Þnh luËt Lambert: R = cos(PSI)
víi PSI lµ gãc gi÷a chuÈn mÆt vµ nguån s¸ng. S lµ
vector 3 thµnh phÇn ®Þnh nghÜa híng cña nguån s¸ng.
S cã thÓ lµ vector 2 thµnh phÇn S = [Theta Phi] chØ
®Þnh híng trong to¹ ®é cÇu.
specular(Nx, R = SPECULAR(Nx,Ny,Nz,S,V) Tr¶ l¹i ®é ph¶n x¹ bÒ
Ny,Nz,S,V) mÆtcã chuÈn [Nx,Ny,Nz]. S vµ V chØ ®Þnh híng cña
nguån s¸ng vµ híng quan s¸t. Chóng lµ c¸c vector 3
thµnh phÇn[x,y,z] hoÆc 2 thµnh phÇn [Theta Phi] (trong
to¹ ®é cÇu).
§é s¸ng ph¶n chiÕu m¹nh nhÊt khi vector chuÈn cã híng
(S+V)/2 víi S lµ híng cña nguån s¸ng, vµ V lµ híng quan
s¸t.
HÖ sè mò bÒ mÆt spread ®îc chØ ®Þnh ë ®èi sè vµo
thø s¸u specular(Nx,Ny,Nz,S,V,spread), mÆc ®Þnh
spread=10.
pcolor(X,Y,C) PCOLOR(C) vÏ m¶ng mµu víi mçi « lµ mét mµu tõ ma
trËn C. ë chÕ ®é t¹o bãng mÆc ®Þnh, 'faceted', mçi «
lµ 1 mµu víi hµng vµ cét cuèi cïng ®îc bá qua. Sö dông
lÖnh shading('interp'), mçi « cã cã mµu néi suy tuyÕn
tÝnh tõ mµu cña 4 « bao quanh nã, tÊt c¶ c¸c phÇn tö
cña C ®îc sö dông. C¸c phÇn tö lín nhÊt vµ nhá nhÊtcña
C ®îc g¸n cho mµu ®Çu tiªn vµ cuèi cïng trong b¶ng
mµu; mµu cho c¸c phÇn tö kh¸c ®îc x¸c ®Þnh theo tØ
lÖ phÇn d cña b¶ng mµu.
PCOLOR(X,Y,C), víi X vµ Y lµ c¸c vector hay ma trËn, cho
ta x¸c ®Þnh líi m¶ng mµu.
fill3(X,Y,Z,C) T« mµu c¸c mÆt ®a gi¸c 3D. X, Y,Z lµ c¸c vector, C mµu
t«.
C¸c ®Ønh cña ®a gi¸c bëi bé 3 X, Y and Z. NÕu cÇn, ®a
gi¸c cã thÓ ®îc bao kÝn bëi ®iÓm cuèi cïng nèi víi
®iÓm ®Çu tiªn. NÕu lµ kÝ tù C 'r', 'g', 'b', 'c', 'm', 'y',
'w', 'k', hoÆc vector hµng RGB 3 phÇn tö, [r g b], ®a
gi¸c ®îc t« bëi mµu chØ ®Þnh nµy.
Khi C lµ vector cã chiÒu dµi nh X, Y vµ Z, c¸c phÇn tö
cña nã ®îc x¸c ®Þnh ®é lín bëi CAXIS vµ ®îc sö dông
lµm chØ sè cho COLORMAP®Ó x¸c ®Þnh mµu cho c¸c
®Ønh; mµu bªn trong ®a gi¸c ®îc néi suy tuyÕn tÝnh
theo mµu c¸c ®Ønh.
NÕu X, Y and Z lµ c¸c ma trËn cïng kÝch thíc, øng víi mçi
cét cho mét ®a gi¸c. Lóc nµy, nÕu C lµ vector hµng mçi
mµu øng víi mét ®a gi¸c ph¼ng, nÕu C lµ ma trËn sÏ
cho ta néi suy mµu cho ®a gi¸c.
NÕu trong sè X, Y hay Z lµ ma trËn vµ c¸c thµnh phÇn
cßn l¹i lµ c¸c vector cét b»ng sè hµng cña ma trËn, c¸c
®èi sè vector cét sÏ sao chÐp c¸c cét ®Ó t¹o thµnh ma
trËn cã cïng kÝch thíc.
FILL3(X1,Y1,Z1,C1,X2,Y2,Z2,C2,...) lµ d¹ng kh¸c cho
phÐp t« mµu nhiÒu vïng.
Mét vµi vÝ dô:
+vÏ mÆt cong z=sinx+cosy+cos(x-y), víi 0<=x,y pi/2;
» [x,y]=meshgrid(linspace(-pi,pi,50));
» z=sin(x)+cos(y)+cos(x-y);
» surfc(x,y,z);shading interp;axis
tight;xlabel('x');ylabel('y');zlabel('z');
» title('z=sinx+cosy+cos(x-y); -pi<=x,y<=pi');

H×nh

+vÏ mÆt cong z=x2-y2, víi x2+y21;


» r=linspace(0,1,40);fi=linspace(0,2*pi,40);
» [r,fi]=meshgrid(r,fi);x=r.*sin(fi);y=r.*cos(fi);z=x.^2-y.^2;
» surfc(x,y,z);axis tight;shading interp;view(-41,70);colormap hsv;
» xlabel('x');ylabel('y');zlabel('z');title('z=x^2-y^2;x^2+y^2<=1');

H×nh
» pcolor(x,y,z);shading
interp;xlabel('x');ylabel('y');title('pcolor(x,y,z)'); colorbar;
+vÏ mÆt cong z=exsiny, víi x2+(y/2)2pi;
» r=linspace(0,3,50);fi=linspace(0,2*pi);
» [r,fi]=meshgrid(r,fi);
» x=r.*sin(fi);y=r.*cos(fi)./2;
» z=exp(x).*sin(y);surf(x,y,z);shading interp;axis tight;view([78,43])
» xlabel('x');ylabel('y');zlabel('z');title('z=exp(x)sin(y) tren mien
x^2+(y2/2)^2<=pi');

H×nh5

H×nh

Cho ®å thÞ hµm sè y=f(x); vÏ ®å thÞ 3D t¹o bëi ®êng y=f(x)


xoay quanh trôc Ox vµ trôc Oy:
» linspace(a,b);
» y=f(x);
» fi=linspace(0,2*pi);
%xoay quanh trôc 0y
» [r,fr]=meshgrid(x,fi);
» [y1,t]=meshgrid(y,fi);
» z1=r.*sin(fr);
» x1=r.*cos(fr);
» mesh(x1,y1,z1);
%xoay quanh trôc 0x
» [r,fr]=meshgrid(y,fi);
» [x2,t]=meshgrid(x,fi);
» z2=r.*sin(fr);
» y2=r.*cos(fr);
» mesh(x2,y2,z2);
VÝ dô víi hµm: y=x*sin(x) víi 0x 2/3
» x=linspace(0,2/3*pi,30);
» fi=linspace(0,2*pi,30);
» f=inline('x.*sin(x)');
» y=f(x);
C¸c lÖnh ®îc viÕt theo tø tù ë trªn.
» plot(x,y);xlabel('x');ylabel('y');axis tight;
1.8

1.6

1.4

1.2

1
y

0.8

0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x

%Xoay quanh trôc Ox %Xoay quanh trôc Oy


» surfc(x1,y1,z1); » surfc(x2,y2,z2);view(130,32);
» » xlabel('x');ylabel('y');zlabel('z');
xlabel('x');ylabel('y');zlabel('z');

5.6. §iÓm nh×n vµ phÐp phèi c¶nh.


ViÖc quan s¸t ®å ho¹ sÏ dÔ dµng vµ gÇn víi thùc tÕ h¬n nÕu ®-
îc nh×n tõ c¸c gãc ®é kh¸c nhau. LÖnh view dïng ®Ó thay ®æi gãc
nh×n trªn mµn h×nh ®å ho¹. Nã cho phÐp kh¶ n¨ng x¸c ®Þnh
®ång thêi c¶ ®iÓm nh×n lÉn gãc, ph¬ng ®é nh×n vµ ®é cao.
PhÐp chiÕu phèi c¶nh cßn cã thÓ thay ®æi th«ng qua lªnh
viewmtx.
view ChØ ®Þnh ®iÓm nh×n ®å ho¹ 3D.
VIEW(AZ,EL) vµ VIEW([AZ,EL]) ®Æt gãc nh×n tõ vÞ trÝ cña ngêi
quan s¸t nh×n ®å thÞ 3D hiÖn hµnh. AZ lµ gãc ph¬ng vÞ (azimuth)
hay gãc quay ngang (horizontal rotation) vµ EL lµ gãc ngÈng ®øng
(vertical elevation), ®¬n vÞ AZ, EL lµ ®é. Gãc ph¬ng vÞ xoay quanh
trôc x, víi gi¸ trÞ d¬ng lµ gãc quay cïng chiÒu kim ®ång cña ®iÓm
nh×n. Gi¸ trÞ d¬ng cña gãc ngÈngt¬ng øng víi sù di chuyÓn lªn trªn
®èi tîng; gi¸ trÞ ©m nÕu di chuûen xuèng díi.
VIEW([X Y Z]) x¸c lËp gãc nh×n trong hÖ to¹ ®é ®Ò c¸c (cartesian).
§é lín. Kh«ng ®Ó ý ®Õn ®é lín cña vector X, Y, Z .
Ta cã vµi vÝ dô:
AZ = -37.5, EL = 30 híng nh×n 3D mÆc ®Þnh.
AZ = 0, EL = 90 lµ híng nh×n trùc diÖn tõ trªn xuèng, mÆc ®Þnh cho mÆt 2D.
AZ = EL = 0 nh×n trùc tiÕp lªn trªn cét ®µu tiªn cña ma trËn.
AZ = 180 lµ phÝa sau ma trËn.
VIEW(2) §Æt ®iÓm nh×n 2D mÆc ®Þnh, AZ = 0, EL = 90.
VIEW(3) §Æt ®iÓm nh×n 3D mÆc ®Þnh, AZ = -37.5, EL = 30.
[AZ,EL] = VIEW tr¶ vÒ gãc ph¬ng vÞ vµ gãc ngÈng hiÖn hµnh.
VIEW(T) chÊp nhËn ma trËn biÕn ®æi 4x4, lµ c¸c biÕn ®æi phèi c¶nh tõ VIEWMTX.
T = VIEW Tr¶ l¹i ma trËn phèi c¶nh tæng qu¸t hiÖn hµnh.
viewmtx
A=VIEWMTX(AZ,EL) tr¶ vÒ ma trËn ma trËn phÐp chiÕu trùc giao
(orthographic), A, dïng ®Ó chiÕu (project) c¸c vector 3D thµnh mÆt ®å
ho¹ 2D.
Sö dông cïng ®Þnh nghÜa gãc ph¬ng vÞ vµ gãc ngÈng nh lÖnh VIEW,
tr¶ l¹i ma trËn biÕn ®æi t¬ng tù nh c¸c lÖnh
VIEW(AZ,EL)
A = VIEW
nhng kh«ng lµm thay ®æi ®iÓm nh×n hiÖn t¹i.
A=VIEWMTX(AZ,EL,PHI) tr¶ l¹i ma trËn 4x4 biÕn ®æi phèi c¶nh sö
dông ®Ó vÏ c¸c vector 3D lªn mÆt ®å thÞ 2D. PHI (®é) lµ gãc nh×n
®èi diÖn cña h×nh h«p ®å thÞ chuÈn vµ ®iÒu khiÓn ®é lín biÕn d¹ng
h×nh phèi c¶nh:
PHI = 0 ®é lµ phÐp chiÕu trùc giao.
PHI = 10 ®é nh lµ c¸c thÊu kÝnh chôp ¶nh xa.
PHI = 25 ®é nh lµ c¸c thÊu kÝnh chôp ¶nh th«ng thêng.
PHI = 60 ®é nh lµ c¸c thÊu kÝnh gãc më réng.
Ma trËn A cßn sö dông ®Ó x¸c lËpbiÕn ®æi ®iÓm nh×n cho VIEW(A).
A=VIEWMTX(AZ,EL,PHI,XC) tr¶ l¹i ma trËn biÕn ®æi phèi c¶nh, lÊy
XC lµm ®iÓm tiªu (target or look-at) trong h×nh hép ®å ho¹ chuÈn ho¸
(normalized plot cube). XC=[xc,yc,zc] x¸c ®Þnh ®iÓm (xc,yc,zc) trong
h×nh hép chuÈn ho¸. Gi¸ trÞ mÆc ®Þnh lµ ®iÓm gÇn nhÊt trong h×nh
hép ®å ho¹,
XC = 0.5+sqrt(3)/2*[cos(EL)*sin(AZ),-cos(EL)*cos(AZ),sin(EL)].

5.7. MÆt c¾t (slice) cña h×nh khèi.


slice-§å ho¹ mÆt c¾t h×nh khèi.
SLICE(X,Y,Z,V,Sx,Sy,Sz) vÏ c¸c l¸t däc theo c¸c híng x,y,z t¹i c¸c ®iÓm
trong c¸c vector Sx,Sy,Sz. C¸c m¶ng X,Y,Z ®Þnh nghÜa c¸c to¹ ®é cho
V vµ ph¶i cã gi¸ trÞ ph©n biÖt (monotonic) vµ lµ líi 3D (®îc t¹o bëi
MESHGRID). Mµu t¹i mçi ®iÓm sÏ ®îc x¸c ®Þnh theo néi suy 3D trong
khèi V. V ph¶i lµ m¶ng khèi MxNxP.
SLICE(X,Y,Z,V,XI,YI,ZI) vÏ c¸c mÆt c¾t qua khèi däc theo mÆt x¸c ®Þnh
bëi XI,YI,ZI.
SLICE(V,Sx,Sy,Sz) hay SLICE(V,XI,YI,ZI) se lÊy X=1:N, Y=1:M, Z=1:P.
SLICE(...,'method') chØ ®Þnh ph¬ng ph¸p néi suy ®îc sö dông.
'method' cã thÓ lµ 'linear', 'cubic', hay 'nearest'. MÆc ®Þnh lµ 'linear'.
H = SLICE(...) tr¶ l¹i vector ®Ó ®iÒu khiÓn c¸c ®èi tîng SURFACE.
VÝ dô:
Quan s¸t hµm x*exp(-x^2-y^2-z^2) qua miÒn -2 < x < 2, -2 < y < 2,
-2 < z < 2,
[x,y,z] = meshgrid(-2:.2:2, -2:.25:2, -2:.16:2);
v = x .* exp(-x.^2 - y.^2 - z.^2);
slice(x,y,z,v,[-1.2 .8 2],2,[-2 -.2])

5.8. MÇu s¾c vµ c¸c hÖ mµu


Trong lÜnh vùc ®å ho¹, viÖc kiÓm so¸t ¸nh s¸ng vµ mµu s¾c lµ
nh÷ng chøc n¨ng kh«ng thÓ thiÕu ®îc ®Ó cho ra nh÷ng h×nh ¶nh
thÆt s¾c nÐt. Trong Matlab, ngêi sö dông ®îc cung cÊp mét sè hµm
®Ó kiÓm so¸t mµu s¾c, ¸nh s¸ng, ®é bãng... cña h×nh ¶nh ®îc t¹o
ra.
5.8.1 C¸c thuéc tÝnh bÒ mÆt
Thuéc tÝnh ®é bãng (shading) cña bÒ mÆt.
LÖnh shading ®iÒu khiÓn ®é bãng mµu cña c¸c ®èi tîng bÒ mÆt
(surface) vµ « mµu (patch). §èi tîng bÒ mÆt vµ « mµu ®îc t¹o bëi c¸c hµm
surf, mesh, pcolor, fill vµ fill3.
Thuéc tÝnh bÒ mÆt ®îc x¸c ®Þnh nh sau:
shading flat ®Æt ®é bãng víi mµu cho patch bÒ mÆt x¸c ®Þnh tõ c¸c
®Ønh.
shading interp ®Æt ®é bãng víi mµu c¸c patch bÒ mÆt ®îc néi suy.
shading faceted vÏ líi trªn bÒ mÆt, mçi patch t« mµu tõ c¸c ®Ønh, lµ
thuéc tÝnh mÆc ®Þnh.
T¹o bãng flat víi c¸c patch cã cïng mét mµu; mçi phÇn (segment) líi hay
patch bÒ mÆt ®îc t« 1 mµu x¸c ®Þnh theo gi¸ trÞ mµu t¹i ®iÓm cña
phÇn líi hay gãc cña patch cã chØ sè nhá nhÊt.
T¹o bãng interpolated, lµ t¹o bãng Gouraud, víi c¸c phÇn ®îc néi suy
tuyÕn tÝnh kÐp; mµu cña mçi phÇn, mµu mçi phÇn hay patch thay ®æi
tuyÕn tÝnh vµ néi suy theo c¸c gi¸ trÞ cuèi cïng hay gi¸ trÞ ë gãc.
T¹o bãng faceted lµ t¹o bãng ph¼ng cã thªm c¸c ®êng líi mµu ®en. T¹o
bãng nµy cã hiÖu øng cao nhÊt, lµ thuéc tÝnh mÆc ®Þnh.
SHADING lµ hµm M-file x¸c lËp c¸c thuéc tÝnh EdgeColor vµ FaceColor cña
tÊt c¶ c¸c ®èi tîng bÒ mÆt trªn c¸c trôchiªn hµnh. §Æt c¸c thuéc tÝnh
theo c¸c gi¸ tri thÝch hîp tuú theo c¸c ®èi tîng bÒ mÆt (surface) biÓu
diÔn líi hay bÒ mÆt.

VÝ dô: VÏ mÆt sin(r2)/r2 víi c¸c hiÖu øng bãng.


» s=linspace(-pi,pi,30);[u,v]=meshgrid(s);r=u.^2+v.^2;z=sin(r)./r;
» surf(u,v,z); » shading flat; » shading interp

colormap-b¶ng x¸c ®Þnh (look-up) mµu.


colormap(map) ®Æt s¬ ®å mµu map cho figure hiÖn hµnh.
colormap('default') ®Æt s¬ ®å mµu cña h×nh hiÖn t¹i lµ s¬ ®å mµu
jet.
map=colormap lÊy s¬ ®å mµu hiÖn hµnh. C¸c gi¸ trÞ trong miÒn [0,1].
S¬ ®å mµu lµ ma trËn cã sè hµng tuú ý vµ ph¶i cã 3 cét. Mçi hµng thÓ
hiÖn cho mét mµu, víi c¸c phÇn tö cét ®Çu tiªn x¸c ®Þnh cêng ®é ¸nh
s¸ng ®á (red), c¸c phÇn tö cét thø 2, 3 x¸c ®Þnh cêng ®é ¸nh s¸ng xanh
l¸ (green) vµ xanh d¬ng (blue). Cêng ®é mµu x¸c ®Þnh trong kho¶ng
[0.0,1.0].
VÝ dô, [0 0 0] lµ mµu ®en, [1 1 1] lµ mµu tr¾ng,
[1 0 0] lµ mµu ®á, [.5 .5 .5] cho mµu x¸m,
[127/255 1 212/255] lµ mµu xanh ngäc biÓn (aquamarine).
C¸c ®èi tîng ®å ho¹ sö dông ma trËn m· gi¶ mµu (pseudocolor)--c¸c ®èi tîng surface vµ
patch, t¹o bëi c¸c hµm mesh, surf, vµ pcolor--C, víi c¸c gi¸ trÞ trong miÒn [Cmin, Cmax],
thµnh m¶ng chØ sè, k, trong miÒn [1, m].
C¸c gi¸ trÞ Cmin vµ Cmax lµ c¸c gi¸ trÞ min(min(C)) and max(max(C)), hoÆc do CAXIS
x¸c ®Þnh. PhÐp ¸nh x¹ lµ tuyÕn tÝnh, Cmin øng víi chØ sè 1 vµ Cmax øng víi chØ sè m.
C¸c chØ sè nµy ®îc sö dông theo s¬ ®å mµu ®Ó x¸c ®Þnh mµu øng víi mçi phÇn tö cña
ma trËn.
C¸c s¬ ®å mµu (colormap).
hsv - S¬ ®å mµu cho d¶i s¾c (Hue) b·o hoµ ch¹y tõ gi¸ trÞ ®á (red)
ch¹y qua gi¸ trÞ mÇu vµng (yellow), xanh l¸ (green), lôc lam
(cyan), xanh da trêi (blue), ®á tÝa (magenta), vµ trë l¹i mµu ®á.
S¬ ®å mµu nµy thÝch hîp cho c¸c hµm tuÇn hoµn.
hot - S¬ ®å mµu hçn hîp Black-red-yellow-white.
gray -S¬ ®å mµu d¶i x¸m tuyÕn tÝnh theo m møc ®é.
bone -S¬ ®å mµu d¶i x¸m gam mµu phít xanh.
copper -S¬ ®å mµu s¾c ®ång (xanh ®en sang vµng cam) tuyÕn tÝnh.
pink -S¬ ®å mµu biÕn ®æi theo mµu hång nh¹t.
white -S¬ ®å mµu d¶i toµn mµu tr¾ng.
flag -S¬ ®å mµu xen kÏ ®á tr¾ng xanh d¬ng vµ ®en.
lines -S¬ ®å mµu d¹ng ®êng (line).
colorcube -S¬ ®å mµu khèi t¨ng cêng.
vga -S¬ ®å mµu 16 mµu d¹ng «.
jet -BiÕn thÓ cña HSV. Lµ s¬ ®å mµu cho ¶nh NCSA fluid jet.
prism -S¬ ®å mµu 6 mµu red, orange, yellow, green, blue, violet
xen kÏ liªn tiÕp. Cã trËt tù mµu gièng HSV, nã t¹o liªn tiÕp c¸c
b¶n sao d¶i 6 mµu, trong khi mµu HSV biÕn ®æi tr¬n trªn d¶i
mµu.
cool -S¬ ®å mµu chuyÓn tiÕp liªn tôc tõ mµu cyan sang
magenta.
autumn -S¬ ®å mµu chuyÓn tiÕp liªn tôc tõ red sang yellow.
spring -S¬ ®å mµu chuyÓn tiÕp liªn tôc tõ magenta sang yellow.
winter -S¬ ®å mµu chuyÓn tiÕp liªn tôc tõ blue sang green.
summer -S¬ ®å mµu chuyÓn tiÕp liªn tôc tõ green sang yellow.
VÝ dô (sö dông t¬ng tù cho c¸c s¬ ®å mµu cßn l¹i):
HSV(M) tr¶ l¹i ma trËn Mx3 s¬ ®å mµu HSV.
HSV tr¶ l¹i s¬ ®å mµu HSV cã kÝch thíc b»ng s¬ ®å mµu hiÖn t¹i.
colormap(hsv) ®Æt l¹i s¬ ®å mµu HSV cho h×nh (figure) hiÖn hµnh.

colorbar HiÓn thÞ d¶i s¬ ®å mµu.


colorbar('vert') vÏ d¶i mµu ®Æt theo chiÒu ®øng cho to¹ ®é.
colorbar('horiz') vÏ d¶i mµu ®Æt theo chiÒu ngang.
colorbar(H) ®Æt vÞ trÝ cña d¶i mµu trªn trôc H. D¶i mµu ®îc ®Æt n»m
ngang nÕu chiÒu réng c¸c trôc H>®é cao (theo chÊm ®iÓm).
colorbar kh«ng ®èi sè t¹o d¶i mµu ®Æt theo chiÒu ®øng hoÆc cËp
nhËp d¶i mµu hiÖn t¹i.
H = colorbar(...) tr¶ l¹i ®iÒu khiÓn trôc d¶i mµu.

whitebg Thay ®æi mµu nÒn cña trôc to¹ ®é.


whitebg(fig,c) §Æt mµu nÒn cho trôc to¹ ®é cña c¸c h×nh hiÖn t¹i fig
theo mµu chØ ®Þnh trong c. C¸c thuéc tÝnh trôc to¹ ®é vµ mµu nÒn
cña h×nh (figure) cã thÓ thay ®æi kh«ng ¶nh hëng ®Õn ®é t¬ng
ph¶n ban ®Çu cña ®å ho¹. c cã thÓ lµ ma trËn mµu rgb 1x3 hoÆc s©u
kÝ tù d¹ng 'white' hoÆc 'w'
whitebg(fig) §Æt mµu cña h×nh fig lµ mµu bæ chÝnh (complement) cña
c¸c ®èi tîng ë h×nh fig. LÖnh nµy thêng dïng ®Ó chuyÓn gi÷a mµu
nÒn tõ ®en sang tr¾ng vµ ngîc l¹i.
Khi kh«ng cã ®èi sè fig, whitebg hay whitebg(c) t¸c ®éng lªn h×nh
hiÖn hµnh.

5.8.2 Giíi thiÖu c¸c m« h×nh mµu.


5.8.3 M« h×nh mµu RGB.
5.8.4 M« h×nh mµu CMY.
5.8.5 M« h×nh mµu YIQ.
5.8.6 M« h×nh mµu HSV.
5.8.7 M« h×nh mµu HLS.
5.8.8 C¸c hµm chuyÓn ®æi m« h×nh mµu.
5.8.9 Thao t¸c víi mµu s¾c.

5.9 MÆt
6. C¸c hµm to¸n häc trong Matlab.
-Matlab cã 2 lo¹i hµm lµ hµm néi (built in) vµ hµm ngo¹i (user
function).
+hµm néi : hµm s½n cã trong matlab.
+hµm ngo¹i : hµm ®îc viÕt bëi ngêi sö dông, viÕt ë d¹ng
m-file.
-C¸c nhãm hµm:
Nhãm hµm s¬ cÊp
xem >>help elfun
sqrt(x) c¨n bËc 2 cña x
exp(x) ex
log(x),log10 loga tù nhiªn, c¬ sè 10 cña x
(x)
abs(x) trÞ tuyÖt ®èi cña x
angle(x) tr¶ vÒ gãc pha cña sè phøc x
conj(x) liªn hîp phøc cña x
real(x) phÇn thùc cña sè phøc x
imag(x) phÇn ¶o cña sè phøc x
... ...

Nhãm hµm ®Æc biÖt


xem >>help specfun

Nhãm hµm vÒ ma trËn


xem >>help elmat
sum(x) x lµ vectortæng c¸c phÇn tö
x lµ ma trËnvector hµng,phÇn tö thø i lµ tæng
c¸c phÇn tö cét t¬ng øng
cumsum( tæng tÝch lòy
x)
prod(x) x lµ vectortÝch c¸c phÇn tö
x lµ ma trËnvector hµng,phÇn tö thø i lµ tÝch
c¸c phÇn tö cét t¬ng øng
cumprod tÝch tÝch lòy
(x)
factor(x) ph©n tÝch sè ra tÝch c¸c thõa sè nguyªn tè.
zeros(x) tr¶ vÒ vector, ma trËn 0
ones(x) tr¶ vÒ vector, ma trËn ®¬n vÞ
eye(M) tr¶ vÒ ma trËn ®¬n vÞ ®êng chÐo
any(Ex) tr¶ vÓ vect¬ gi¸ trÞ logic cña biÓu thøc logic
cña biÕn Ex
find(Ex) tr¶ vÓ gi¸ trÞ vi trÝ cña biÓu thøc logic cña
biÕn Ex
rand(m,n tr¶ vÒ ma trËn mxn víi c¸c gi¸ trÞ ngÉu nhiªn
) trong kho¶ng 0..1

****Ghi chó:
®Þnh d¹ng mµu, ®iÓm, nÐt vÏ 'linspec'
Mµu §iÓm §êng
y yellow . point v triangle - solid
m magenta o circle (down) : dotted
c cyan x x-mark ^ triangle (up) -. dashdot
r red + plus < triangle -- dashed
g green * star (left)
b blue s square > triangle
w white d diamond (right)
k black p pentagram
h hexagram
vÝ dô:
'b+-' VÏ t¹i ®iÓm d÷ liÖu vÏ dÊu céng, ®êng liÒn nÐt víi mµu
blue
'rd' VÏ t¹i ®iÓm d÷ liÖu h×nh thoi, mµu ®á, kh«ng cã ®êng nèi
gi÷a c¸c ®iÓm
§Þnh d¹ng mÆc ®Þnh lµ: chÊm ®iÓm, ®êng nèi ®Æc, c¸c
mµu ®îc chän tù ®éng theo tæ hîp c¸c hµm trong cïng 1
lÖnh vÏ.

1. LÖnh ®å ho¹

clf xo¸ cöa sæ ®å ho¹ hiÖn hµnh.


grid on/off BËt/t¾t t¹o líi trªn cöa sæ ®å häa
figure(n) §Æt cöa sæ ®å ho¹ thø n (nÕu cha cã, t¹o
míi) thµnh cöa sæ hiÖn hµnh
hold on/off §Æt chÕ ®é vÏ cho phÐp gi÷ l¹i /xo¸ ®å thÞ
tríc ®ã.
H=subplot(a,b, Chia cöa sæ ®å ho¹ thµnh ma trËn cöa sæ
k) or axb cöa sæ ®å ho¹ riªng, c¸c cöa sæ ®-
îc ®¸nh sè ®Õm t¨ng tõ vÞ trÝ cöa sæ
subplot(abk) hµng ®Çu tiªn ®Õn hµng cuèi cïng.
k-vÞ trÝ cöa sæ
thao t¸c
TEXT(X,Y,'string') hiÓn thÞ x©u kÝ tù t¹i vÞ trÝ
TEXT(X,Y,Z,'string')
(X,Y,Z)
GTEXT(C) In ra cöa sæ ®å ho¹ c¸c x©u kÝ tù trong c¸c hµng cña
khèi kÝ tù C .
[x,y,z]=GINPUT( LÊy n gi¸ trÞ trªn cöa sæ ®å ho¹, kh«ng cã n Ên  ®Ó kÕt
thóc.
n)
AXIS([XMIN XMAX YMIN YMAX]) X¸c lËp kÝch thíc trôc to¹ ®é
axis

2D
AXIS([XMIN XMAX YMIN YMAX ZMIN ZMAX]) X¸c lËp kÝch thíc trôc to¹ ®é
3D
V=AXIS LÊy kÝch thíc to¹ ®é hiÖn
hµnh
AXIS ON/OFF BËt/t¾t hiÓn thÞ trôc to¹ ®é
AXIS
AUTO/MANUAL/TIGHT/FILL/IJ/XY/EQUAL/IMAGE/SQUARE/NORMA
L/VIS3D
xlabel(str),ylabel(str),zlab ViÕt tªn (kÝ hiÖu) trôc to¹ ®é
el(str) x,y z
TITLE(str) tiªu ®Ò cña ®å thÞ
LEGEND(str1,str2,str3, ...,POS) Ghi chó thÝch cho ®å thÞ ®·
LEGEND(H,str1,str2,str3, ...,POS) vÏ.
xem thªm >>help axis
Examples: location POS:
x = 0:.2:12; 0 = Automatic "best"
plot(x,bessel(1,x),x,bessel(2,x),x,bessel(3,x)); placement (least
legend('First','Second','Third'); conflict with data)
legend('First','Second','Third',-1) 1 = Upper right-hand
corner (default)
b = bar(rand(10,5),'stacked'); colormap(summer); 2 = Upper left-hand
hold on corner
x = plot(1:10,5*rand(10,1), 'marker', 'square', 3 = Lower left-hand
'markersize', ... corner
12, 'markeredgecolor','y','markerfacecolor',[.6 4 = Lower right-hand
0 .6],... corner
'linestyle','-','color','r','linewidth',2); hold -1 = To the right of the plot
off
legend([b,x],'Carrots','Peas','Peppers','Green
Beans',...
'Cucumbers','Eggplant')

Mét sè bµi tËp øng dông


Bµi tËp

1) Cho c¸c hµm sau:


f1 ( x)  x 3  2.3x 2  x  0.2
2 2
f 2 ( x , y )  ( x 2  y 2 )e  x  y
x  4 x  2

f 3 ( x)  ( x  2) 2  6  2  x  3
x 3  8 x3

f 4 ( x)  sin( x)  1.3 cos(4 * x)  2 sin(3 * cos( x))
+ViÕt dßng lÖnh ®Ó tÝnh gi¸ trÞ biÓu thøc c¸c hµm.
+VÏ ®å thÞ c¸c hµm sè trªn.
+Sö dông hµm eval ®Ó tÝnh gi¸ trÞ c¸c hµm.
+ViÕt hµm inline cho c¸c hµm trªn, sö dông hµm inline ®Ó tÝnh
gi¸ trÞ t¹i x=-3:4.
+ViÕt c¸c hµm trªn b»ng hµm m-files.

2) Cho c¸c hµm:


0 n0

P(n)  n! 1 n 1 nZ
nP(n  1) n  1

T0 ( x)  0;

T (n, x)  T1 ( x)  x;

Tn1 ( x)  x Tn1 ( x)  ( x  1)Tn2 ( x)
2

2 2
g ( x, y)  e  x  y / floor ( xy)!
 xy x  y  1

F ( x, y)  ( xy) 2  1  x  y  3
( xy)3 x y 3

+ViÕt hµm m-files cho c¸c hµm trªn.
+Hµm nµo viÕt ®îc b»ng hµm inline?, viÕt hµm ®ã.

3) Cho ma trËn A=[1,-1,4;0 -2 7;9 6 -4.3;2 4 -1]


+T×m ma trËn chuyÓn vÞ thùc cña A.
+T×m phÇn tö lín nhÊt, nhá nhÊt cña ma trËn A, vµ vÞ trÝ cña
c¸c phÇn tö ®ã.
+VÏ ®å thÞ ma trËn A víi c¸c ®iÓm mµu ®á, h×nh tam gi¸c,
kh«ng ®êng nèi.
+T×m ma trËn ®êng chÐo cña A vµ cña ma trËn chuyÓn vÞ
thùc cña A, nhËn xÐt.
+T×m ma trËn tùa nghÞch ®¶o cña A (pinv(A)) vµ ®¸nh gi¸ sai sè
norm(A*pinv(A)-1).
BiÕt c¸c hµm [V,I]=min(A),[V,I]=max(A) tr¶ vÒ vector V chøa c¸c gi¸ trÞ nhá
nhÊt, lín nhÊt cña c¸c cét ma trËn A, vµ vector I chøa c¸c chØ sè to¹ ®é cña
phÇn tö theo c¸c cét. NÕu A lµ vector V,I lµ gi¸ trÞ nhá nhÊt (lín nhÊt) vµ vÞ
trÝ cña nã trong vector.

4) Cho hµm sè y=sin(2*x)+cos(3*x)


+vÏ ®å thÞ cña hµm víi x=[-pi,pi] cña figure 1
+t« mµu phÇn diÖn tÝch giíi h¹n bëi ®êng y=0 víi ®å thÞ trªn h×nh con 1
cña figure 2
+t« mµu phÇn diÖn tÝch giíi h¹n bëi ®êng y=1/2 víi ®å thÞ trªn h×nh con
2 cña figure 2
+vÏ tiÕp ®å thÞ cña hµm víi x=f-1(y) trªn figure 1, lÊy to¹ ®é c¸c giao ®iÓm
cña 2 ®êng.
+Cho §THS y=f(x) quay quanh trôc Ox, Oy. trªn figure 3.
5) Cho ma trËn B=[1.1 2.4 5.6;3 2 1;0.5 -1 -3.7]
+TÝnh ®Þnh thøc, ma trËn ®¶o, ®a thøc dÆc trng, nghiÖm
cña ®a thøc ®Æc trng, t×m c¸c vector riªng øng víi nghiÖm ®a
thøc ®Æc trng.
+TÝnh h¹ng cña ma trËn, t×m trÞ riªng vµ vector riªng cña ma
trËn, so s¸nh nghiÖm cña ®a thøc ®Æc trng víi c¸c trÞ riªng.

6) Cho hµm sè z=f(x,y)=sin(x)*cos(y)


+VÏ ®å thÞ hµm sè trªn miÒn [-2,2].
+VÏ ®êng ®ång møc cña nã.
+VÏ ®êng ®ång møc víi møc =-1,-0.5,0,0.5,1 vµ gi¸ trÞ c¸c
møc.

7) Cho :
hÖ ph¬ng tr×nh phi cho hÖ ph¬ng tr×nh phi tuyÕn
tuyÕn: phøc:
sin 2 ( x)  sin 2 ( y)  1  0 cos( z )  2  3  0
z2
 3
1

4 xy  0.1x  0.2 y  1  0 z1  z2  1  0


where 0  x, y  2
where 0  re( z1 )  3; 0  i m( z1 )  2;
+LËp hµm inline cho c¸c hµm trªn.
+ViÕt hµm m-file cho c¸c hµm trªn.
+T×m nghiÖm b»ng ph¬ng ph¸p ®å thÞ, cho biÕt sai sè cña
nghiÖm t×m dîc.

8) Cho h×nh giíi h¹n bëi 2 ®êng cong:

 y1  ( x  1.25) 2  1;
 log2 ( x)
 y2  e ;
+ChØ ra c¸c biªn cña x. VÏ biªn cña miÒn nµy, vµ t« mµu.
+T×m to¹ ®é träng t©m vµ tÝnh diÖn tÝch miÒn giíi h¹n bëi 2
®å thÞ trªn.
+VÏ ®êng th¼ng song song Oy, chia miÒn thµnh 2 phÇn cã
diÖn tÝch b»ng nhau.
9) Cho hµm
x  1. cos( x 2  1)
y  f ( x)  ;
x4 1
+VÏ §THS trªn miÒn 0xpi, vÏ ®¹o hµm cña hµm sè trªn cïng
®å thÞ.
+T×m c¸c nghiÖm gÇn ®óng cña pt f(x)=0 b»ng ph¬ng ph¸p
®å thÞ, vµ cho biÕt sai sè t×m ®îc.
gîi ý: dïng dy=gradient(y,dx) ®Ó tÝnh ®¹o hµm, víi dx=x(k+1)-x(k);

10) Cho hµm 2 biÕn


z=f(x,y)=(2x2+3y2)e(-x^2-y^2)
+VÏ mÆt cong z víi -5x,y5 trªn líi chia 51x51.
+VÏ c¸c ®êng ®ång møc (trªn 2D) cña mÆt cong, vµ c¸c ®êng
z'x=0 vµ z'y=0, tõ ®ã x¸c ®Þnh c¸c ®iÓm cùc trÞ (min,max) cña
chóng.
+T×m c¸c gi¸ trÞ nhá nhÊt, lín nhÊt cña z trªn líi ®· cho, chØ
ra to¹ ®é líi, vµ c¸c gi¸ trÞ t¬ng øng cña x vµ y.
11) Cho
12) jtfk
13) yoygol
14) lhu;

You might also like