Download as pdf or txt
Download as pdf or txt
You are on page 1of 62

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µ 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).
5.8. MÇu s¾c vµ c¸c hÖ mµu

Page 1 of 62
part II
matlab symbolic

part III
numerical method

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

Page 3 of 62
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.
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
ch−a lÊy ®−îc d÷ liÖu hay ch−a 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

Page 4 of 62
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 ch−a 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 62
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 th¶o (edit window)
+NhiÒu cöa sè ®å ho¹ (figures)
-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-
Ctrl-p Gäi l¹i lÖnh võa thùc hiÖn tr−íc ®ã.
↓ hoÆc Ctrl-
Ctrl-n Gäi l¹i lÖnh ®· ®¸nh vµo tr−íc ®ã.
→ hoÆc Ctrl-
Ctrl-f ChuyÓn con trá sang ph¶i 1 kÝ tù.
← hoÆc Ctrl-
Ctrl-b ChuyÓn con trá sang tr¸i 1 kÝ tù.
Ctrl-
Ctrl-l hoÆc Ctrl-
Ctrl-← ChuyÓn con trá sang tr¸i 1 tõ.
Ctrl-
Ctrl-r hoÆc Ctrl-
Ctrl-→ ChuyÓn con trá sang ph¶i 1 tõ.
Ctr-
Ctr-a hoÆc Home ChuyÓn con trá vÒ ®Çu dßng.
Ctrl-
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¹
computer LÖnh in dßng kÝ tù cho biÕt lo¹i m¸y tÝnh.
ctrl-
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,…
input NhËp d÷ liÖu tõ bµn phÝm
load T¶i c¸c biÕn l−u 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 L−u 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.

Page 6 of 62
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 name2,name2,... ChØ xo¸ c¸c biÕn cã tªn chØ ®Þnh.
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.


§é 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(A) Tr¶ gi¸ trÞ ®é lín cña ma trËn, m-sè hµng, n-sè 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 l−u 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è

Page 7 of 62
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 * a 2 + b1 * b2 ) + i (a 2 * b1 − a1b2 )
z2 a 22 + b22
|z1| a2 + b2 §é lín (magnitude)hay modul cña sè phøc.
1 1

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.
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 +b ,
2 2
(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

Page 8 of 62
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.
-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 l−u (Save) vµo th− môc hiÖn t¹i (current path).

Page 9 of 62
+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,y2,s2,..) VÏ c¸c ®å thÞ trong mÆt ph¼ng to¹ ®é ®Ò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 ®Ò ®å thÞ') §−a tiªu ®Ò ®å thÞ.
xlabel, ylabel, zlabel §−a vµo c¸c nh·n cho c¸c trôc x, y, z.
legend LÖnh ®−a vµo chó thÝch ®−êng vÏ.
grid LÖnh vÏ c¸c ®−êng dãng trªn ®å thÞ.

VÝ dô: Vi du ve ham 3D

» t=linspace(0,2*pi,40); 8
» plot3(sin(t),t.*cos(t),t);
» title('Vi du ve ham 3D'); 6

» 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æ ®å ho¹. H×nh §å thÞ kh«ng gian 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(x2+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)');

Page 10 of 62
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');

Do thi duong cong tham so

20

15

10

0
y

-5

-10

-15

-20

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

H×nh
2
+ y2 )
VÏ phæ mµu cña mÆt z = f ( x, y ) = ( x 2 − 3 y 2 )e − ( x , trong kh«ng gian 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

Page 11 of 62
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,bits) T¹o ©m thanh víi tèc ®é mÉu bits/mÉu nÕu cã kh¶
n¨ng. HÇu hÕt c¸c thiÕt bÞ cho phÐp bits=8 hay 16.
soundsc(v,slim) T−¬ng tù sound() nh−ng sÏ t¹o ©m thamh 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 12 of 62
ch−¬ng 2
Ma trËn vµ c¸c phÐp to¸n ma trËn
2.1V« 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  v p )
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.1NhË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
>>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

Page 13 of 62
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è:
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 e Sè dÊu phÈy ®éng, víi 5 ch÷ sè cã nghÜa sau dÊu ph¶y
format long e Sè dÊu phÈy ®éng, víi 15 ch÷ sè cã nghÜa sau dÊu ph¶y
format short g Lùa chän tèt nhÊt phÈy cè ®Þnh hay ®éng víi 5 ch÷ sè cã
nghÜa sau dÊu ph¶y
format long g Lùa chän tèt nhÊt phÈy cè ®Þnh hay ®éng 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.

Page 14 of 62
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 l−u c¸c h»ng cho phÐp sinh ma trËn cã d¹ng ®Æc
biÖt.
Ma trËn mxn Gi¶i thÝch Ma trËn vu«ng 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ë réng eye(n)
rand(m,n) ma trËn ngÉu nhiªn ph©n bè ®Òu ∈ (0,1) rand(n)
randn(m,n) ma trËn ngÉu nhiªn ph©n bè chuÈn randn(n)
thuéc (-1,1) .
linspace(a,b,n) t¹o vect¬ n phÇn tö c¸ch ®Òu tõ a ®Õn b, m¨c ®Þnh n=100;
logspace(a,b,n) vect¬ n phÇn tö hµm mò thËp ph©n tõ 10a ®Õn 10b, 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 tr−ng 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

2.3.1BiÓ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.

Page 15 of 62
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
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 ans =
8.6000 2.0000 4.0000 128.0000
6.0000 -9.6000 0.2500
a+c
13.0000
ans =
0 2.0000 -
3 4 9 0
2.0000
c./a
B+c
ans =
ans =
2.0000 1.0000 0.2857 -
3.1000 4.4000
1.0000
7.6000
1.0000 -1.6000
10.0000
-1.0000 4.0000
1.0000

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

Page 16 of 62
2.4.1 C¸c phÐp to¸n ma trËn.

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


T
ChuyÓn vÞ Bnm=A mnvíi B={bÞj=aji}nm A.'
ChuyÓn vÞ vµ lÊy liªn hîp phøc Bnm=ATmnvíi B={bÞj=a*ji}nm A'
Céng, trõ {aij±bij}mn=Amn±Bmn A±B
Nh©n n
A*B
{ cij = ∑ aik bkj }mp=Amn*Bnp
k =1

Chia ph¶i Cnp=Amn/Bpm A/B


Chia tr¸i Cqn=Apq\Bpn A\B
Luü thõa ma trËn Apnn, (p-nguyªn) A^p
Ma trËn nghÞch ®¶o A-1nn inv(A), A^(-
A^(-1)
Ma trËn tùa nghÞc ®¶o Tnm=A-1mn pinv(A)
TÝch v« h−íng cña hai ma trËn  m  sum(A.*B)
Amn Bmn =  ci = ∑ aij bij  tÝch v« h−íng cña
 j =1 1n 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];
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

Page 17 of 62
A\D A/D
ans = ans =
0 0 0 -0.3023 - 0.0284i 0.3874 +
-0.5556 + 0.2222i 0.0000 -1.5556 0.0562i
+ 0.1111i -1.1033 - 0.0920i 0.1669 + 0.0984i
0.3704 + 0.1852i 0.6667 -0.9630 - 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(Amn) §Þnh d¹ng l¹i ma trËn, yªu cÇu pxq=mxn.
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 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; j=1,n [m,n]=size(A).
: 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-a)/d], p lµ
y=a:b 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(:)
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.

Page 18 of 62
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)
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 thøc.
y=A(A>0) Tr¶ vÒ c¸c phÇn tö cña A lín h¬n kh«ng.
y=A(fimag(A)==0) Tr¶ vÒ c¸c phÇn tö cña A lµ sè thùc.
y=A(a<=A&A<b) 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);
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);
A= 8 6 4 2 2
1 3 5 7 6 7 8 9 9
2 4 6 8 D= 3
9 8 7 6 9 8 7 6 4
B= 2 4 6 8 8
7 8 6 1 3 5 7 5
5 6 7 F= 6
3 4 8 1 5 7
1 2 9 2 6 7
C= 9 7 8
6 7 8 9 3 7 6
8 6 4 2 4 8
7 5 3 1 8 6 b=
E= a= 3
7 5 3 1 1 4

Page 19 of 62
8 8 v=
c= e= 1 3 5 7
9 8 7 6 6 g=
d= f= 1 9 4 5
3 3 5
4 4 6
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 0 0
1.0000 + 1.0000i 1.0000 - 3.0000i 12.0000 0 0 0
0 2.3000 -4.0000 tuA1 =
0 0 -1.0000 1.0000 + 1.0000i 1.0000 - 3.0000i 12.0000
0 0 0 1.0000 2.3000 -4.0000
tuA1 = 0 -1.0000 - 2.1000i -1.0000
0 0 12 0 0 4.0000
0 0 0

Page 20 of 62
1.0000 2.3000 -4.0000
tlA = 2.0000 -1.0000 - 2.1000i -1.0000
1.0000 + 1.0000i 0 0 1.0000 2.0000 4.0000
1.0000 2.3000 0 tlA1 =
2.0000 -1.0000 - 2.1000i -1.0000 0 0 0
1.0000 2.0000 4.0000 1.0000 0 0
tlA1 = 2.0000 -1.0000 - 2.1000i 0
1.0000 + 1.0000i 1.0000 - 3.0000i 12.0000 1.0000 2.0000 4.0000

Page 21 of 62
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.

Page 22 of 62
§Ó 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

Page 23 of 62
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 l−u gi¸ trÞ kÕt qu¶ tÝnh to¸n gÇn nhÊt

b. BiÕn string.
BiÕn string trong matlab ®−îc l−u trong vector vøi mçi phÇn tö lµ 1 kÝ tù. C¸c kÝ
tù ®−îc l−u 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 nh−ng 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ù:

Page 24 of 62
» 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)
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, nh−ng 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 Th−c 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Ò

Page 25 of 62
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);

Page 26 of 62
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 l−u 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ô:

Page 27 of 62
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,...

Page 28 of 62
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 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Ó l−u 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))]')

Page 29 of 62
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-
M-file vµ hµm M-
M-file.
Script M-
M-file Hµm M-
M-file
•Kh«ng chÊp nhËn tham sè vµo •Cã thÓ chÊp nhËn tham sè vµo vµ
hoÆc tr¶ vÒ tham sè. tr¶ vÒ tham sè.
•Ho¹t ®éng trªn d÷ liÖu cña •C¸c biÕn trong th©n hµm mÆc ®Þnh
workspace. lµ côc bé.
•Th−êng dïng ®Ó tù ®éng thùc hiÖn •Cã t¸c dông më réng ng«n ng÷
mét chuçi c¸c thao t¸c cÇn thiÕt MATLAB cho øng dông cña
®Ó thùc thi nhiÒu lÇn. b¹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 nghÜa hµm function f = fact(n)


dßng H1 (trî gióp 1) % FACT Factorial.
V¨n b¶n trî gióp % FACT(N) returns the factorial of N, usually denoted by N!.
% Put simply, FACT(N) is PROD(1:N).
Th©n hµm 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.

Page 30 of 62
•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 off Kh«ng hiÓn thÞ c¸c c©u lÖnh cña script file ®ang ®−îc thùc hiÖn.
echo func on/off BËt/t¾t hiÓn thÞ c¸c c©u lÖnh ®−îc thùc hiÖn cña hµm "func" .
echo func LËt tr¹ng th¸i hiÓn thÞ c©u lÖnh trong hµm "func".
echo on/off all BËt/t¾t hiÓn thÞ c©u lÖnh ®−îc thi hµnh cña c¸c hµm cã 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 filename HiÓn thÞ néi dung cña file cã tªn filename, mÆc ®Þnh më 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 name T−¬ng tù type, nh−ng cã chØ sè dßng ë ®Çu dßng cña file 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.

Page 31 of 62
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/Rile/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

Page 32 of 62
TiÕp trang 330
C¸c hµm do ng−êi sö dông viÕt còng ®−îc l−u 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 l−u 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 l−u 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).

Page 33 of 62
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 nh−ng ®−î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.

Page 34 of 62
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
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 l−u 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 l−u ®−íi
d¹ng nhÞ ph©n theo ®Þnh d¹ng cña ch−¬ng tr×nh Matlab. ASCII files l−u 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.
L−u/t¶i c¸c biÕn d÷ liÖu nhÞ ph©n, ta dïng lÖnh sau:
save L−u 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 L−u 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 x y z L−u/t¶i c¸c biÕn Matlab tõ file cã tªn "fname.mat", tªn biÕn gäi ra ph¶i
load
load fname x y z ®óng. T«t nhÊt gäi "load fname" sÏ t¶i tÊt c¶ c¸c biÕn.
load fname.ext...-
fname.ext...-mat cã thÓ save víi më réng kh¸c "*.ext", ®Ó ®äc ra cã thªm tham sè "-mat".
save ... -append Thªm biÕn míi vµo mat-files ®· cã.
L−u/t¶i c¸c d÷ liÖu ASCII (chØ cho biÕn vector hay ma trËn):
save fname x y -ascii L−u c¸c d÷ liÖu ë d¹ng ASCII víi 8 ch÷ sè dÊu ph¶y ®éng.
save ... -ascii -double L−u c¸c d÷ liÖu ë d¹ng ASCII víi 16 ch÷ sè dÊu ph¶y ®éng.
save ... -ascii -double -tabs L−u c¸c d÷ liÖu ph©n c¸ch nhau bëi kÝ tù tab.
load fname.ext §äc vµo d÷ liÖu ë d¹ng ASCII, víi c¸c hµng d÷ liÖu. Cho phÐp
load fname.ext -ascii sö dông kÝ tù "%" cho chó 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.
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.

Page 35 of 62
» 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 hÖ ý 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¶

Page 36 of 62
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(X) Tr¶ 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(X) Tr¶ vÒ 1 nÕu X lµ biÕn m¶ng sè, vµ 0 nÕu X cã d¹ng 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,s2) So s¸nh 2 x©u s1 vµ s2. Gi¸ trÞ 1 ®−îc tr¶ vÒ nÕu 2 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

Page 37 of 62
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,

Page 38 of 62
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,

Page 39 of 62
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 Ng−ng trong khi thùc thi

Page 40 of 62
Vµi M-file lîi dông (benefit from) viÖc t¹m ng−ng gi÷a c¸c b−íc thi hµnh. VÝ dô,
file kÞch b¶n petals.m t¹m ng−ng 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 ng−ng 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¶.

Page 41 of 62
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 phÐp quay
y1 y
hÖ to¹ ®é, hÖ to¹ ®é gèc ®−îc biÓu thÞ
b»ng ®−êng liÒn nÐt, hÖ to¹ ®é míi biÓu
diÔn phÐp quay biÓu thÞ b»ng ®−êng nÐt P1
®øt. ChiÒu quay qui −íc lµ d−¬ng nÕu P
nã quay theo chiÒu ng−îc cña kim ®ång
x1
hå.
ta cã: α
x1=x.cos(α)+y.sin(α) 0 x
y1=x.sin(α)+y.cos(α)
kÝ hiÖu: H×nh 4.1 Quay hÖ trôc to¹ ®é trªn mÆt ph¼ng
x x   cos(α ) − sin(α ) 
P =  ; P1 =  1 ; A =  
 y  y1   sin(α ) cos(α ) 
ta cã thÓ viÕt: P1=A.P;
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.

Page 42 of 62
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)

Page 43 of 62
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.

Page 44 of 62
-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
plot(A,x) -nÕu k=m, vÏ x theo c¸c cét cña A.
-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)
plot(A,B)-
B)-vÏ c¸c cét cña B theo c¸c cét cña A.
x,y-c¸c
x,y vector kÝch th−íc k;
A,B-c¸c
A,B 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,ro,s) VÏ trªn hÖ to¹ ®é cùc d÷ liÖu quan hÖ ro=ro(theta).
semilogx(x,y,s) VÏ trªn hÖ to¹ ®é trôc loga, thang ®o log10 sö dông cho trôc x
semilogy(x,y,s) VÏ trªn hÖ to¹ ®é trôc loga, thang ®o log10 sö dông cho 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
L−u ý:
+xx 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,dx,dy,s) VÏ mòi tªn víi to¹ ®é xi,yi víi biÕn sè ®é lín dx,dy, tØ lÖ s, mÆc ®Þnh s=0
quiver(x,y,...,str) VÏ quiver theo nÐt vÏ cho bëi x©u 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,str) VÏ mòi tªn trªn to¹ ®é cùc c¸c thµnh phÇn thùc vµ ¶o cña d÷ liÖu.
compass(x,y,str) str-kiÓu nÐt vÏ.

Page 45 of 62
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,n,p) Chia mµn h×nh ®å ho¹ lµm m hµng, n cét, p (1..mxn) lµ 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 off 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 off 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 off 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ù ®éng thay ®æi
axis manual khi thªm thùc thÓ míi vµo cöa sæ ®å ho¹ 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 d÷ liÖu.
equal Giíi h¹n miÒn vÏ c¸c trôc to¹ ®é b»ng nhau, b»ng gi¸ trÞ lín nhÊt.
ij Quay trôc y víi h−íng tõ trªn xuèng cho chiÒu d−¬ng,.
xy §−a c¸c trôc x, y vÇ h−íng mÆc ®Þnh
image Nh− axis equal nh−ng vÏ h×nh bao khíp víi d÷ liÖu.
square §−a giíi h¹n miÒn thµnh h×nh vu«ng.
normal Tr¶ cöa sæ ®å ho¹ vÒ kÝch th−íc ban ®Çu.
on 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.
off DÊu c¸c trôc ghi kich th−íc, l−íi (nÕu cã) vµ t¾t mµu nÒn.

Page 46 of 62
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 gi÷a.
ylabel(str)
zlabel(str)
text(x,y,(z,)str) ViÕt x©u str t¹i vÞ trÝ x,y (z).
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,s2,l2,...) §−a ra chu thÝch lµ c¸c x©u kÝ tù s1,s2,... víi kiÓu ®−êng cho bëi l1,l2,...
legend off 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
[x,y]=ginput §äc vµo to¹ ®é vµ tr¶ kÕt qu¶ cho 2 vector x,y (hoÆc ma trËn xy,
xy =ginput 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]=ginput(...) x,y lµ c¸c to¹ ®é ®äc ®−îc.
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]=ginput(...) t−¬ng tù cho 3D
xyz =ginput(...)
waitforbuttonpress Dõng Matlab cho ®Õn khi cã t¸c ®éng lªn chuét 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.

Page 47 of 62
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
contour(...,N) trªn 2 trôc t−¬ng øng cho bëi X,Y tËp hîp 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]=contour(...) Tr¶ vÒ ma trËn C, lµ ma trËn 2 hµng cña c¸c ®−êng ®ång møc. Mçi bé
[C,h]=contourf(...) phËn trong C chøa gi¸ trÞ cña møc, sè l−îng cÆp ®iÓm (x,y), vµ gi¸ trÞ
[C,h]=contour3(...) c¸c cÆp ®iÓm cña chóng. C¸c phÇn ®−îc nèi tiÕp nh− sau
sö dông kÕt hîp: C = [møc1 x1 x2 x3 ... møc2 x2 x2 x3 ...;
clabel(C,h), sècÆp1 y1 y2 y3 ... sècÆp2 y2 y2 y3 ...]
colorbar; cho phÐp ma trËn C ®−îc tr¶ vÒ tõ hµm contuorC.
in gi¸ trÞ t¹i ®−êng h lµ vector cét n¾m ®iÒu khiÓn c¸c ®èi t−îng LINE hoÆc PATCH cho mçi
møc. ®−êng. C¶ C vµ h ®−îc sö dông lµm tham sè cho CLABEL. thuéc tÝnh
UserData cña mçi ®èi t−îng cã chøa gi¸ trÞ cao ®é cho mçi ®−êng ®ång
møc.
clabel(C,h,'manual') Cho phÐp ng−êi sö dông in gi¸ trÞ ®−êng møc ®−îc chän t¹i ®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

Page 48 of 62
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(x,y) T¹o l−íi 2 chiÒu tõ c¸c vector x,y.
[u,v]=meshgrid(x) T¹o l−íi 2 chiÒu vu«ng ®Òu.
[u,v,w]=meshgrid(x,y,z) T¹o l−íi 3 chiÒu tõ c¸c vector x, y ,z.
[x,y,z]=cylinder(r,n) T¹o 3 l−íi px(n+1) sinh mÆt trô hoÆc mÆt nãn cã 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)
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;

Page 49 of 62
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,str) VÏ ®å ho¹ th«ng qua c¸c ®iÎm x¸c ®Þnh bëi X, Y, Z. X, Y, Z ph¶i cã cïng
plot(X1,Y1,Z1,S1, ®é dµi nÕu lµ vector, cïng kÝch th−íc nÕu lµ ma tr©n.C¸c ®iÓm x¸c ®Þnh
X2,Y2,Z2,S2...) bëi (xi,yi,zi) cña 3 vector 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".

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,p) VÏ ho¹t ho¹ víi thêi gian p*length(Z). MÆc ®Þnh p = 0.1.

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)). L−u ý 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.

Page 50 of 62
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 nh−ng 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/off 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, nh−ng 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
surfl(...,'cdata') nµy cho kÕt qu¶ kh¸c ph−¬ng thøc ¸nh s¸ng mÆc ®Þnh, surfl(...,'cdata'),
sÏ lµm thay ®æi d÷ liÖu mµu theo ®é ph¶n x¹ bÒ mÆt.
surfl(...,ls) T−¬ng tù surf nh−ng 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.
diffuse(Nx,Ny,Nz,S) R = DIFFUSE(Nx,Ny,Nz,S) Tr¶ l¹i ®é ph¶n x¹ cña mÆtcã 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,Ny,Nz, R = SPECULAR(Nx,Ny,Nz,S,V) Tr¶ l¹i ®é ph¶n x¹ bÒ mÆtcã chuÈn
S,V) [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(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

Page 51 of 62
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');

Page 52 of 62
H×nh

» pcolor(x,y,z);shading interp;xlabel('x');ylabel('y');title('pcolor(x,y,z)');colorbar;

H×nh

+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
Page 53 of 62
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≤ 2/3π
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');

Page 54 of 62
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
nh−ng 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.

Page 55 of 62
slice-§å
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.
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,
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;

Page 56 of 62
» surf(u,v,z); » shading flat; » shading interp

colormap-b¶ng
colormap 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.
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,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.

Page 57 of 62
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
whitebg fig)
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.
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,
fig whitebg hay whitebg(c
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

Page 58 of 62
log(x),log10(x) loga tù nhiªn, c¬ sè 10 cña 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(x) tæng tÝch lòy⇒

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(x) tÝch tÝch lòy⇒

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 (down) - solid
m magenta o circle ^ triangle (up) : dotted
c cyan x x-mark < triangle (left) -. dashdot
r red + plus > triangle (right) -- dashed
g green * star p pentagram
b blue s square h hexagram
w white d diamond
k black
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Ï.

Page 59 of 62
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 ch−a 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,k) or Chia cöa sæ ®å ho¹ thµnh ma trËn cöa sæ axb cöa sæ ®å
subplot(abk) ho¹ riªng, c¸c cöa sæ ®−îc ®¸nh sè ®Õm t¨ng tõ vÞ
k-vÞ trÝ cöa sæ thao t¸c trÝ cöa sæ hµng ®Çu tiªn ®Õn hµng cuèi cïng.
TEXT(X,Y,'string') TEXT(X,Y,Z,'string') hiÓn thÞ x©u kÝ tù t¹i vÞ trÝ (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¹ ®é 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
axis

AUTO/MANUAL/TIGHT/FILL/IJ/XY/EQUAL/IMAGE/SQUARE/NORMA
L/VIS3D
xlabel(str),ylabel(str),zlabel(str) ViÕt tªn (kÝ hiÖu) trôc to¹ ®é x,y z
TITLE(str) tiªu ®Ò cña ®å thÞ
LEGEND(str1,str2,str3, ...,POS) Ghi chó thÝch cho ®å thÞ ®· vÏ.
LEGEND(H,str1,str2,str3, ...,POS) 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
off plot
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:

Page 60 of 62
f1 ( x) = x 3 − 2.3 x 2 + x + 0.2
2
− y2
f 2 ( x, y ) = ( x 2 − y 2 ) e − x
x − 4 x < −2

f 3 ( x) = ( x + 2) 2 − 6 −2≤ x≤3
 3
x − 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
− y2
g ( x, y ) = e − x / 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]

Page 61 of 62
+TÝnh ®Þnh thøc, ma trËn ®¶o, ®a thøc dÆc tr−ng, nghiÖm cña ®a thøc ®Æc tr−ng,
t×m c¸c vector riªng øng víi nghiÖm ®a thøc ®Æc tr−ng.
+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 tr−ng 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 tuyÕn: cho hÖ ph−¬ng tr×nh phi tuyÕn phøc:
sin 2 ( x) + sin 2 ( y ) − 1 = 0 cos( z1 ) + 2 z2 + 3 = 0
  3
 z1 + z 2 − 1
4 xy + 0.1x + 0.2 y − 1 = 0 =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;
 2
 y 2 = e −log ( x ) ;
+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;

Page 62 of 62

You might also like