
Ch−¬ng 3 - LËp tr×nh trong Matlab
PhÇn I - C¬ së 31
Ch−¬ng 3
Lºp trÖnh trong matlab
3.1 CŸc phÀn tø cç b¨n cho chõçng trÖnh
3
3.
.1
1.
.1
1
G
Gi
iè
èi
i
h
h
n
n
c
cð
ða
a
c
cŸ
Ÿc
c
g
gi
iŸ
Ÿ
t
tr
rÙ
Ù
t
tÏ
Ïn
nh
h
t
to
oŸ
Ÿn
n
t
tr
ro
on
ng
g
M
MA
AT
TL
LA
AB
B
Šâi vèi phÀn lèn cŸc mŸy tÏnh, kho¨ng giŸ trÙ cho phÉp t÷ 10-308 ÅÆn 10308. Gi¨
sø cÜ nhùng lÎnh sau:
>> x = 2.5e200;
>> y = 1.0e200
>> z = x*y;
Tuy giŸ trÙ cða x v¡ y n±m trong kho¨ng cho phÉp. Nhõng giŸ trÙ cða z l¡
2.5e400 li n±m ngo¡i kho¨ng giŸ trÙ cho phÉp. Låi n¡y Åõìc gài l¡ tr¡n sâ mñ trÅn
(exponent overflow).
GiŸ trÙ cða kÆt qu¨ quŸ lèn Åâi vèi vïng nhè cða mŸy tÏnh. Trong
Matlab, kÆt qu¨ n¡y Åõìc biÌu diÍn l¡ ∝.
Tr¡n sâ mñ dõèi
(exponent underflow).
Gi¨ sø cÜ nhùng lÎnh sau:
>> x = 2.5e-200;
>> y = 1.0e200
>> z = x/y;
GiŸ trÙ cða z sÁ l¡ 2.5e-400.
Trong Matlab, kÆt qu¨ n¡y Åõìc biÌu diÍn l¡ 0. Chia cho 0 l¡ mæt toŸn tø
kháng hìp lÎ. NÆu mæt giŸ trÙ cÜ hn Åõìc chia cho 0, kÆt qu¨ nhºn Åõìc sÁ l¡ ∝.

Ch−¬ng 3 - LËp tr×nh trong Matlab
PhÇn I - C¬ së 32
Matlab sÁ in ra mæt léi c¨nh bŸo v¡ sø dòng giŸ trÙ ∝ ÅÌ tiÆp tòc tÏnh toŸn cŸc phÉp
tÏnh sau ÅÜ.
3
3.
.1
1.
.2
2
C
CŸ
Ÿc
c
k
kû
û
t
tú
ú
Å
Å»
»c
c
b
bi
iÎ
Ît
t
[ ] Dng ma trºn. Dïng ÅÌ quy õèc cho viÎc biÌu diÍn ha
y
v¡o s
â
liÎu cho cŸc biÆn vector ha
y
ma trºn. CŸc
p
hÀn tø tron
g
biÆn ÅÜ Åõìc
cŸch nhau bêi dÃu s
p
ace ha
y
dÃu ‘,’ nÆu trÅn cïn
g
h¡n
g
ho»c cæt. CŸc
cæt hay h¡ng sÁ ph¿n cŸch nhau bêi dÃu ‘;’ hay Enter.
vÏ dò:
>> a = [ 1 2 3 ; 4 5 6 ; 7 8 9 ]
ans =
1 2 3
4 5 6
7 8 9
( ) Dn
g
ch× sâ. D¡nh cho cŸc biÆn cða h¡m ha
y
cŸc ch× sâ cŸc
phÀn tø trong ma trºn khi cÀn Åõìc nhºp hay biÌu diÍn.
. Ph¿n tŸch giùa cŸc ch× sâ v¡ cŸc phÀn tø cða ma trºn
; Ph¿n tŸch cŸc ma trºn, cŸc lÎnh, cŸc h¡ng cða ma trºn
>> DÃu nhºc cho lÎnh sau
... ThÌ hiÎn sú tiÆp tòc cða lÎnh ê dÝng sau
% PhÀn chî
g
i¨i dÝn
g
lÎnh Åõìc
g
hi sau dÃu n¡
y
dïn
g
ÅÌ hiÌu rß
nghØa 1 dÝng lÎnh chö kháng tham gia v¡o chõçng trÖnh
: CŸch ghi täng quŸt ma trºn
\n DÃu hiÎu to dÝng mèi
3
3.
.1
1.
.3
3
C
CŸ
Ÿc
c
g
gi
iŸ
Ÿ
t
tr
rÙ
Ù
Å
Å»
»c
c
b
bi
iÎ
Ît
t
pi GiŸ trÙ cða π tú Åæng Åõìc Åõa v¡o biÆn n¡y ( 3.14156 ...)
i, j CŸc biÆn n¡y cÜ giŸ trÙ ¨o √-1
Inf BiÆn n¡y Åi diÎn cho giŸ trÙ ∝ cða MATLAB, thÌ hiÎn kÆt
q
u
¨
chia cho 0. Mæt léi c¨nh bŸo sÁ hiÎn ra, nÆu bn muân hiÌn thÙ kÆt
q
u¨

Ch−¬ng 3 - LËp tr×nh trong Matlab
PhÇn I - C¬ së 33
chia cho 0,
g
iŸ trÙ hiÌn thÙ l¡ ∝.
NaN GiŸ trÙ vá ÅÙnh, biÌu thöc kháng xŸc ÅÙnh: 0 chia 0.
clock H¡m cho biÆt
g
iŸ trÙ cða théi
g
ian hiÎn ti bao
g
ãm n©m, thŸn
g
,
ng¡y, gié, phît, gi¿y.
date H¡m cho biÆt giŸ trÙ hiÎn ti cða ng¡y Åõìc cho bêi 1 x¿u kû tú.
VÏ dò:
>> date
ans =
10-Jun-97
eps H¡m xŸc ÅÙnh Åæ chÏnh xŸc cða sâ thúc tron
g
q
uŸ trÖnh tÏnh toŸn
ans BiÆn n¡
y
Åõìc dïn
g
ÅÌ chöa
g
iŸ trÙ tÏnh toŸn cða biÌu thöc
nhõng kháng ghi v¡o tÅn biÆn.
3
3.
.1
1.
.4
4
B
Bi
iÆ
Æn
n
s
st
tr
ri
in
ng
g
BiÆn string trong Matlab Åõìc biÌu diÍn sø dòng nhõ cŸc biÆn sâ tháng thõéng
khŸc cða Matlab. ŠiËu ÅÜ cÜ nghØa biÆn Åõìc nhºp, thao tŸc v¡ lõu trù trong cŸc vector
vèi måi phÀn tø cða vector l¡ 1 kû tú. CŸc kû tú Åõìc lõu trù trong vector dõèi dng
m¬ ASCII cða chÏnh nÜ, tuy nhiÅn khi hiÌn thÙ trÅn m¡n hÖnh dÝng kû tú sÁ Åõìc xuÃt
hiÎn 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ø trong ÅÜ ph¨i b±ng nhau.
VÏ dò:
>> name = ‘ Trõéng Ši hàc BŸch khoa H¡ næi ‘
ans =
Trõéng Ši hàc bŸch khoa H¡ næi
Matlab cho phÉp thao tŸc trÅn cŸc kû tú theo vÏ dò dõèi Å¿y.
a
a)
)
Š
Ѝ
¨o
o
n
ng
gõ
õì
ìc
c
c
ch
hu
uå
åi
i
k
kû
û
t
tú
ú.
.
Function d = dao_tu ( name )
for i = length (name) :-1 : 1

Ch−¬ng 3 - LËp tr×nh trong Matlab
PhÇn I - C¬ së 34
newname ( i ) = name( length(name) + 1 - i );
end
d = newname;
end
b
b)
)
D
Dï
ïn
ng
g
1
1
p
ph
hÀ
Àn
n
c
cð
ða
a
c
ch
hu
uå
åi
i
s
st
tr
ri
in
ng
g.
.
>> disp ( ‘ Trõéng tái l¡ : ‘, name ( 1:24 ));
ans =
Trõéng tái l¡ : Trõéng Ši hàc bŸch khoa
c
c)
)
K
KÆ
Æt
t
h
hì
ìp
p
c
cŸ
Ÿc
c
s
st
tr
ri
in
ng
g
k
kh
hŸ
Ÿc
c
n
nh
ha
au
u
t
t
o
o
r
ra
a
1
1
s
st
tr
ri
in
ng
g
m
mè
èi
i.
.
>> text1 = ‘ Tái ‘; text2 = ‘ yÅu ‘;
>> text = [ text1’’text2’’name ]
>> text
ans =
Tái yÅu Trõéng Ši hàc bŸch khoa
C
CŸ
Ÿc
c
l
lÎ
În
nh
h
v
vè
èi
i
b
bi
iÆ
Æn
n
s
st
tr
ri
in
ng
g
abs (str ) Tr¨ li giŸ trÙ l¡ 1 vector vèi cŸc phÀn tø cða vector l¡
cŸc m¬ ASCII cða cŸc kû tú trong chuåi str.
setstr ( x ) ChuyÌn vector x vèi cŸc phÀn tø l¡ cŸc sâ nguyÅn
trong kho¨ng 0 -> 255 th¡nh chuåi str theo m¬ ASCII.
num2str ( f ) ChuyÌn Åäi Åi lõìng vá hõèng f th¡nh chuåi string
cho viÎc biÌu diÍn cŸc sâ cÜ dÃu phÁy Åæng. LÎnh n¡y
thõéng Åi cïng vèi disp, x label hay cŸc lÎnh truy xuÃt ÅÀu ra
khŸc. GiŸ trÙ m»c ÅÙnh l¡ 4 chù sâ.
num2str ( f,k ) ChuyÌn Åäi Åi lõìng vá hõèng f th¡nh chuåi string
cho viÎc biÌu diÍn cŸc sâ cÜ dÃu phÁy Åæng vèi k chù sâ.
int2str ( n ) ChuyÌn Åäi sâ nguyÅn n th¡nh chuåi string cho viÎc
biÌu diÍn sâ nguyÅn ÅÜ.
rats (x, strlen) ChuyÌn Åäi sâ cÜ dÃu phÁy Åæng x th¡nh chuåi string
ph¿n thöc xÃp x× cho viÎc biÌu diÍn sá. strlen l¡ biÆn má t¨
chiËu d¡i cða chuåi vèi giŸ trÙ m»c ÅÙnh l¡ 13 chù sâ.

Ch−¬ng 3 - LËp tr×nh trong Matlab
PhÇn I - C¬ së 35
hex2num (hstr ) ChuyÌn Åäi sâ theo hÎ hexa th¡nh chuåi string biÌu
diÍn cŸc sâ theo hÎ dec bao gãm c¨ dÃu phÁy Åæng.
hex2dec (hstr) ChuyÌn Åäi sâ theo hÎ hexa th¡nh chuåi string biÌu
diÍn cŸc sâ nguyÅn theo hÎ dec.
dec2hex ( n ) ChuyÌn Åäi sâ theo hÎ dec th¡nh chuåi string biÌu
diÍn cŸc sâ hÎ hexadecimal.
3.2. CŸc h¡m toŸn hàc
Matlab cñng sø dòng 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 Åâi vèi cŸc tham sâ l¡ cŸc Åi lõìng vá hõèng v¡ c¨ ma
trºn. NÆu h¡m Åõìc dïng Åâi vèi cŸc tham sâ l¡ ma trºn thÖ h¡m sÁ cho kÆt qu¨ l¡ mæt
ma trºn cÜ cïng kÏch thõèc v¡ måi phÀn tø cða ma trºn n¡y cÜ giŸ trÙ tõçng öng vèi
cŸc phÀn tø cða ma trºn Ŭ cho.
Tham biÆn v¡ tham trÙ cða h¡m Åõìc Å»t trong dÃu ngo»c Åçn Åi cïng vèi tÅn
h¡m. H¡m cÜ thÌ kháng cÜ ho»c cÜ nhiËu tham sâ phò thuæc v¡o ÅÙnh nghØa cða nÜ.
NÆu h¡m cÜ nhiËu tham sâ thÖ giŸ trÙ cða cŸc tham sâ sÁ Åõìc truyËn ÅÆn theo Åîng thö
tú cða nÜ. Mæt sâ h¡m ÅÝi hÞi truyËn tham sâ theo nhùng Åçn vÙ quy ÅÙnh.
VÏ dò nhõ cŸc h¡m lõìng giŸc thÖ Åçn vÙ cða cŸc tham sâ ph¨i l¡ radian. Trong
Matlab, mæt sâ h¡m sø dòng tham sâ ÅÌ truyËn giŸ trÙ ÅÀu ra. VÏ dò Åâi vèi h¡m
zeros
cÜ thÌ sø dòng mæt ho»c hai tham sâ, tham sâ thö hai ÅÌ chöa giŸ trÙ ÅÀu ra.
CŸc h¡m n¡y kháng Åõìc Å»t ê bÅn ph¨i dÃu b±ng v¡ biÌu thöc vÖ nÜ l¡ giŸ trÙ
chö kháng ph¨i l¡ biÆn. Mæt h¡m cÜ thÌ l¡ tham sâ cða mæt h¡m khŸc. Khi mæt h¡m
Åõìc sø dòng l¡m tham sâ nÜ, ph¨i Åõìc Å»t Åîng vÙ trÏ. Theo m»c ÅÙnh tÅn h¡m Åõìc
viÆt b±ng chù thõéng tr÷ khi bn sø dòng lÎnh
case off
.
3
3.
.2
2.
.1
1
H
H¡
¡m
m
t
to
oŸ
Ÿn
n
h
hà
àc
c
c
cç
ç
b
b¨
¨n
n:
:
abs(x) H¡m tÏnh giŸ trÙ tuyÎt Åâi cða x
sqrt(x) H¡m tÏnh c©n bºc hai cða x
round(x) L¡m trÝn x vË sâ nguyÅn gÀn nhÃt
fix(x) L¡m trÝn sâ x vË 0

