Chơng 3 - Lập trình trong Matlab
Chơng 3
Lp trệnh trong matlab
3.1 Cc phn tứ cỗ băn cho chừỗng trệnh
3.1.1 Giối hưn ca cc gi tr tẽnh ton trong MATLAB
õi vối phn lốn cc my 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 ca x vĂ y nm trong khoăng cho phẫp. Nhừng gi tr ca z lĂ
2.5e400 lưi nm ngoĂi khoăng gi tr cho phẫp. Lồi nĂy ừỡc gi lĂ trĂn sõ mủ trn
(exponent overflow). Gi tr ca kặt quă qu lốn õi vối vùng nhố ca my tẽnh. Trong
Matlab, kặt quă nĂy ừỡc bièu din 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 ca z s lĂ 2.5e-400.
Trong Matlab, kặt quă nĂy ừỡc bièu din lĂ 0. Chia cho 0 lĂ mổt ton tứ
khỏng hỡp lẻ. Nặu mổt gi tr cĩ hưn ừỡc chia cho 0, kặt quă nhn ừỡc s lĂ .
Phần I - Cơ sở
31
Chơng 3 - Lập trình trong Matlab
Matlab s in ra mổt lội cănh bo vĂ sứ dũng gi tr è tiặp tũc tẽnh ton cc phẫp
tẽnh sau ĩ.
3.1.2 Cc kỷ tỳ ằc biẻt
[ ]
Dưng ma trn. Dùng è quy ừốc cho viẻc bièu din hay vĂo sõ
liẻu cho cc biặn vector hay ma trn. Cc phn tứ trong biặn ĩ ừỡc
cch nhau bời du space hay du , nặu trn cùng hĂng hoằc cổt. Cc
cổt hay hĂng s phn cch nhau bời du ; hay Enter.
vẽ dũ:
>> a = [ 1 2 3 ; 4 5 6 ; 7 8 9 ]
ans =
1 2 3
4 5 6
7 8 9
( )
Dưng chì sõ. DĂnh cho cc biặn ca hĂm hay cc chì sõ cc
phn tứ trong ma trn khi cn ừỡc nhp hay bièu din.
.
Phn tch giựa cc chì sõ vĂ cc phn tứ ca ma trn
;
Phn tch cc ma trn, cc lẻnh, cc hĂng ca ma trn
>>
Du nhc cho lẻnh sau
...
Thè hiẻn sỳ tiặp tũc ca lẻnh ờ díng sau
%
Phn chợ giăi díng lẻnh ừỡc ghi sau du nĂy dùng è hièu rò
nghỉa 1 díng lẻnh chử khỏng tham gia vĂo chừỗng trệnh
:
Cch ghi tọng qut ma trn
\n
Du hiẻu tưo díng mối
3.1.3 Cc gi tr ằc biẻt
pi
Gi tr ca tỳ ổng ừỡc ừa vĂo biặn nĂy ( 3.14156 ...)
i, j
Cc biặn nĂy cĩ gi tr ăo -1
Inf
Biặn nĂy ưi diẻn cho gi tr ca MATLAB, thè hiẻn kặt quă
chia cho 0. Mổt lội cănh bo s hiẻn ra, nặu bưn muõn hièn th kặt quă
Phần I - Cơ sở
32
Chơng 3 - Lập trình trong Matlab
chia cho 0, gi tr hièn th lĂ .
NaN
Gi tr vỏ nh, bièu thửc khỏng xc nh: 0 chia 0.
HĂm cho biặt gi tr ca thội gian hiẻn tưi bao góm nâm, thng,
ngĂy, giộ, phợt, giy.
clock
date
HĂm cho biặt gi tr hiẻn tưi ca ngĂy ừỡc cho bời 1 xu kỷ tỳ.
Vẽ dũ:
>> date
ans =
10-Jun-97
eps
HĂm xc nh ổ chẽnh xc ca sõ thỳc trong qu trệnh tẽnh ton
ans
Biặn nĂy ừỡc dùng è chửa gi tr tẽnh ton ca bièu thửc
nhừng khỏng ghi vĂo tn biặn.
3.1.4 Biặn string
Biặn string trong Matlab ừỡc bièu din sứ dũng nhừ cc biặn sõ thỏng thừộng
khc ca Matlab. iậu ĩ cĩ nghỉa biặn ừỡc nhp, thao tc vĂ lừu trự trong cc vector
vối mồi phn tứ ca vector lĂ 1 kỷ tỳ. Cc kỷ tỳ ừỡc lừu trự trong vector dừối dưng
mơ ASCII ca chẽnh nĩ, tuy nhin khi hièn th trn mĂn hệnh díng kỷ tỳ s ừỡc xut
hiẻn chử khỏng phăi mơ ca chợng.
Viẻc xc nh v trẽ ca mồi phn tứ ca biặn string thỏng qua chì sõ ca nĩ
trong vector. Ma trn ca cc kỷ tỳ hay string củng cĩ thè ừỡc sứ dũng nhừng mồi
phn tứ trong ĩ phăi bng nhau.
Vẽ dũ:
>> name = Trừộng ưi hc Bch khoa HĂ nổi
ans =
Trừộng ưi hc bch khoa HĂ nổi
Matlab cho phẫp thao tc trn cc kỷ tỳ theo vẽ dũ dừối y.
a) ăo ngừỡc chuồi kỷ tỳ.
Function d = dao_tu ( name )
for i = length (name) :-1 : 1
Phần I - Cơ sở
33
Chơng 3 - Lập trình trong Matlab
newname ( i ) = name( length(name) + 1 - i );
end
d = newname;
end
b) Dùng 1 phn ca chuồi string.
>> disp ( Trừộng tỏi lĂ : , name ( 1:24 ));
ans =
Trừộng tỏi lĂ : Trừộng ưi hc bch khoa
c) Kặt hỡp cc string khc nhau tưo ra 1 string mối.
>> text1 = Tỏi ; text2 = yu ;
>> text = [ text1text2name ]
>> text
ans =
Tỏi yu Trừộng ưi hc bch khoa
Cc lẻnh vối biặn string
abs (str )
Tră lưi gi tr lĂ 1 vector vối cc phn tứ ca vector lĂ
cc mơ ASCII ca cc kỷ tỳ trong chuồi str.
setstr ( x )
Chuyèn vector x vối cc phn tứ lĂ cc sõ nguyn
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 din cc sõ cĩ du phy ổng. Lẻnh nĂy
thừộng i cùng vối disp, x label hay cc lẻnh truy xut u ra
khc. 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 din cc sõ cĩ du phy ổng vối k chự sõ.
int2str ( n )
Chuyèn ọi sõ nguyn n thĂnh chuồi string cho viẻc
bièu din sõ nguyn ĩ.
rats (x, strlen)
Chuyèn ọi sõ cĩ du phy ổng x thĂnh chuồi string
phn thửc xp xì cho viẻc bièu din sỏ. strlen lĂ biặn mỏ tă
chiậu dĂi ca chuồi vối gi tr mằc nh lĂ 13 chự sõ.
Phần I - Cơ sở
34
Chơng 3 - Lập trình trong Matlab
hex2num (hstr )
Chuyèn ọi sõ theo hẻ hexa thĂnh chuồi string bièu
din cc sõ theo hẻ dec bao góm că du phy ổng.
hex2dec (hstr)
Chuyèn ọi sõ theo hẻ hexa thĂnh chuồi string bièu
din cc sõ nguyn theo hẻ dec.
dec2hex ( n )
Chuyèn ọi sõ theo hẻ dec thĂnh chuồi string bièu
din cc sõ hẻ hexadecimal.
3.2. Cc hĂm ton hc
Matlab củng sứ dũng cc hĂm logarit, cc hĂm lừỡng gic, cc hĂm mủ, cc
hĂm ưi sõ ... è tẽnh ton.
Cc hĂm nĂy ợng õi vối cc tham sõ lĂ cc ưi lừỡng vỏ hừống vĂ că ma
trn. Nặu hĂm ừỡc dùng õi vối cc tham sõ lĂ ma trn thệ hĂm s cho kặt quă lĂ mổt
ma trn cĩ cùng kẽch thừốc vĂ mồi phn tứ ca ma trn nĂy cĩ gi tr từỗng ửng vối
cc phn tứ ca ma trn ơ cho.
Tham biặn vĂ tham tr ca hĂm ừỡc ằt trong du ngoằc ỗn i cùng vối tn
hĂm. HĂm cĩ thè khỏng cĩ hoằc cĩ nhiậu tham sõ phũ thuổc vĂo nh nghỉa ca nĩ.
Nặu hĂm cĩ nhiậu tham sõ thệ gi tr ca cc tham sõ s ừỡc truyận ặn theo ợng thử
tỳ ca nĩ. Mổt sõ hĂm íi hịi truyận tham sõ theo nhựng ỗn v quy nh.
Vẽ dũ nhừ cc hĂm lừỡng gic thệ ỗn v ca cc 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.
Cc hĂm nĂy khỏng ừỡc ằt ờ bn phăi du bng 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õ ca mổt hĂm khc. 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 tn hĂm ừỡc
viặt bng chự thừộng trữ khi bưn sứ dũng lẻnh case off.
3.2.1 HĂm ton hc cỗ băn:
abs(x)
HĂm tẽnh gi tr tuyẻt õi ca x
sqrt(x)
HĂm tẽnh cân bc hai ca x
round(x)
LĂm trín x vậ sõ nguyn gn nht
fix(x)
LĂm trín sõ x vậ 0
Phần I - Cơ sở
35
Chơng 3 - Lập trình trong Matlab
floor(x)
LĂm trín vậ phẽa -
ceil(x)
LĂm trín vậ phẽa
sign(x)
HĂm cho gi tr lĂ -1 nặu x nhị hỗn 0, gi tr bng 0 nặu x
bng 0, cĩ gi tr lĂ 1 nặu x lốn hỗn 0
rem(x,y)
HĂm tră lưi sõ dừ ca phẫp chia x cho y
exp(x)
HĂm tẽnh gi tr ca ex
log(x)
HĂm tẽnh gi tr ln(x)
log10(x)
HĂm tẽnh gi tr log10(x)
3.2.2 HĂm lừỡng gic cỗ băn:
Quy ọi radian ra ổ vĂ ngừỡc lưi ừỡc tẽnh ton theo cc lẻnh sau:
>> angle_degrees = angle_radians*(180/pi);
>> angle_radians = angle_degrees*( pi/180);
sin(x)
Tẽnh sine ca gĩc x, khi x cĩ ỗn v o lĂ radian
cos(x)
Tẽnh cos ca gĩc x, khi x cĩ ỗn v o lĂ radian
tan(x)
Tẽnh cos ca gĩc x, khi x cĩ ỗn v o lĂ radian
asin(x)
Tẽnh arcsine ca x, khi x nm trong khoăng [-1,1], hĂm
tră lưi gĩc cĩ gi tr radian trong khoăng -/2 ặn /2
acos(x)
Tẽnh arccosine ca x, khi x nm trong khoăng [-1,1],
hĂm tră lưi gĩc cĩ gi tr radian trong khoăng 0 ặn
atan(x)
Tẽnh arctangent ca x trong khoăng -/2 ặn /2
atan2(x,y)
Tẽnh arctangent ca y/x trong khoăng - ặn , tuỹ
thuổc vĂo du ca x vĂ y
Vẽ dũ:
>> x = -2*pi: 2: 2*pi
% Tưo lp vector x vối cc gi tr tữ -2pi - 2pi
x=
-6.2832 -4.2832 -2.2832 -0.2832
>> sin(x)
Phần I - Cơ sở
36
1.7168
3.7168
5.7168
Chơng 3 - Lập trình trong Matlab
ans =
0.0000
0.9093 -0.7568 -0.2794
0.9894 -0.5440 -0.5366
>> atan(x)
ans =
-1.4130 -1.3414 -1.1580 -0.2760
1.0434
1.3080
1.3976
3.2.3 Cc hĂm hyperbolic:
sinh(x)
HĂm tẽnh hyperbolic sine ca x
cosh(x)
HĂm tẽnh hyperbolic cosine ca x
asinh(x)
HĂm tẽnh nghch ăo ca hyperbolic sine ca x
acosh(x)
HĂm tẽnh nghch ăo ca hyperbolic cosine ca x
atanh(x)
HĂm tẽnh nghch ăo ca hyperbolic tangent
Vẽ dũ:
>> sinh(x)
ans =
-267.7449 -36.2286 -4.8530 -0.2870
2.6936 20.5544 151.9660
>> atanh(x)
ans =
Columns 1 through 4
-0.1605 + 1.5708i -0.2379 + 1.5708i -0.4697 + 1.5708i -0.2911
Columns 5 through 7
0.6662 + 1.5708i 0.2758 + 1.5708i 0.1767 + 1.5708i
3.3 Cc dưng file ừỡc sứ dũng trong MATLAB
3.3.1 Script file (M-files )
Cc chừỗng trệnh, th tũc bao góm cc díng lẻnh theo mổt thử tỳ nĂo ĩ do
ngừội sứ dũng viặt ra ừỡc lừu trự trong cc files cĩ phn mờ rổng lĂ *.m. File dưng
nĂy cín ừỡc gi lĂ script file. File ừỡc lừu dừối dưng kỷ tỳ ASCII vĂ cĩ thè sứ dũng
cc chừỗng trệnh soưn thăo nĩi chung è tưo nĩ.
Phần I - Cơ sở
37
Chơng 3 - Lập trình trong Matlab
Bưn cĩ thè chưy file nĂy giõng nhừ cc lẻnh, th tũc ca MATLAB. Tửc lĂ cĩ
thè gò tn file khỏng cn cĩ phn mờ rổng, sau ĩ enter. Khi sứ dũng, nổi dung ca Mfile khỏng ừỡc hièn th ln mĂn hệnh.
Vậ cu trợc ngỏn ngự, ton tứ hay cc bổ lẻnh ca *.m file, chợng tỏi xin giối
thiẻu kỵ hỗn ờ phn sau. VĂ dừối y lĂ mổt sõ lẻnh hẻ thõng từỗng tc vối *.m files
thừộng gằp.
Lẻnh cho phẫp xem cc lẻnh cĩ trong *.m files khi chợng ừỡc
thỳc hiẻn
echo
type
Lẻnh cho xem nổi dung file, ngm nh file ờ dưng M-file.
what
Lẻnh nĂy cho biặt tt că cc files M-file vĂ MAT-file cĩ
trongvùng lĂm viẻc hiẻn hĂnh hay khỏng.
Vẽ dũ sau y lĂ 1 vẽ dũ ỗn giăn nht ừa ra díng lẻnh HELLO ra mĂn hệnh
cùng vối 1 sõ yu cu. File tưo thĂnh ừỡc lừu trự dừối tn HELLO.m
% chừỗng trệnh hello.m , Vẽ dũ vậ phn lp trệnh trong Matlab.
% Xin chĂo bưn ! Hơy lĂm quen vối tỏi
disp ( Xin chĂo ! Bưn lĂ ai ? );
name = input ( Tn bưn lĂ gệ );
d = date ;
answer = [ Hello name ! Hỏm nay lĂ ngĂy d ]
disp ( answer );
disp ( Chợc bưn 1 ngĂy tõt lĂnh ) ;
Sau cc kỷ tỳ % lĂ chì dạn cho hoưt ổng ca file.m. Nĩ khỏng tham gia vĂo
hoưt ổng ca chừỗng trệnh vĂ củng khỏng hièn th ln mĂn hệnh trữ khi ta dùng lẻnh
help + tn file.
>> help hello
Chừỗng trệnh hello.m , Vẽ dũ vậ phn lp trệnh trong Matlab.
Xin chĂo bưn ! Hơy lĂm quen vối tỏi
3.3.2 HĂm vĂ tưo hĂm trong Matlab
Phần I - Cơ sở
38
Chơng 3 - Lập trình trong Matlab
Cc hĂm do ngừội sứ dũng viặt củng ừỡc lừu trong M-file. Chợng ừỡc sứ
dũng giõng nhừ cc hĂm ca Matlab. Cc file hĂm phăi ừỡc viặt theo mổt quy nh
chằt ch.
* Cc quy tc viặt hĂm M-files
Function:
1. HĂm phăi ừỡc bt u bng tữ function, sau ĩ ln lừỡt lĂ tham sõ u ra,
du bng, tn hĂm. Tham sõ u vĂo ừỡc viặt theo tham sõ u vĂo vĂ ừỡc bao
trong ngoằc ỗn. Díng nĂy nh nghỉa tham sõ u vĂo vĂ tham sõ u ra; phn biẻt
sỳ khc nhau giựa file hĂm vĂ cc file script.
2. Mổt sõ díng u tin nn viặt chợ thẽch cho hĂm. Khi sứ dũng lẻnh help vối
tn hĂm, chợ thẽch ca hĂm s ừỡc hièn th.
3. Cc thỏng tin tră lưi ca hĂm ừỡc lừu vĂo tham sõ (ma trn) u ra. Vệ vy
luỏn kièm tra chc chn rng trong hĂm cĩ chửa cu lẻnh n nh gi tr ca tham sõ
u ra.
4. Cc biặn (ma trn) cùng tn cĩ thè ừỡc sứ dũng bời că hĂm vĂ chừỗng trệnh
chì ặn nĩ. Khỏng cĩ sỳ lổn xổn nĂo xăy ra vệ cc hĂm vĂ cc chừỗng trệnh ậu ừỡc
thỳc hiẻn mổt cch tch biẻt. Cc gi tr tẽnh ton trong hĂm, tham sõ u ra khỏng
chu tc ổng ca chừỗng trệnh.
5. Nặu mổt hĂm cho nhiậu hỗn mổt gi tr u ra phăi viặt tt că cc gi tr tră
lưi ca hĂm thĂnh mổt vec tỗ trong díng khai bo hĂm.
Vẽ dũ:
function [ dist, vel, accel ] = motion(x)
% Că ba gi tr phăi ừỡc tẽnh ton trong hĂm
6. Mổt hĂm cĩ nhiậu tham sõ u vĂo cn phăi liẻt k chợng khi khai bo hĂm.
Vẽ dũ:
function error = mse(w, d)
7. Cc biặn ằc biẻt nargin vĂ nargout xc nh sõ tham sõ u vĂo, sõ tham sõ
u ra ừỡc sứ dũng trong hĂm. Cc tham sõ nĂy chì lĂ biặn cũc bổ.
Vẽ dũ mổt hĂm M-file s ừỡc viặt nhừ sau:
function c = chuvi(r)
% Tẽnh chu vi ca ừộng trín cĩ bn kẽnh r
% Nặu hĂm ừỡc p dũng cho ma trn thệ gi tr tră lưi s lĂ
Phần I - Cơ sở
39
Chơng 3 - Lập trình trong Matlab
% mổt ma trn từỗng ửng vối mồi phn tứ cĩ gi tr lĂ
% chu vi ca ừộng trín cĩ bn kẽnh từỗng ửng vối mồi
% phn tứ ca vẫc tỗ nguón.
c = pi*2*r;
3.3.3 Files dự liẻu
Cc ma trn bièu din thỏng tin ừỡc lừu trự trong cc files dự liẻu. Matlab
phn biẻt hai loưi file dự liẻu khc nhau Mat-files vĂ ASCII files.
Mat-files lừu cc dự liẻu ờ dưng sõ nh phn, cín cc ASCII file lừu cc dự liẻu
dừối dưng cc kẽ tỳ ASCII. Mat-file thẽch hỡp cho dự liẻu ừỡc tưo ra hoằc ừỡc sứ
dũng bời chừỗng trệnh Matlab. ASCII file ừỡc sứ dũng khi cc dự liẻu ừỡc chia s
(export - import) vối cc chừỗng trệnh khc cc chừỗng trệnh ca Matlab.
Khi muõn lừu cc dự liẻu ta dùng lẻnh save nhừ sau:
>> save <tn file> x,y;
Lẻnh nĂy s lừu cc ma trn x,y vĂo file cĩ tn lĂ <tn file>, ngm nh cc
files nĂy cĩ phn mờ rổng lĂ *.mat. è gi cc ma trn nĂy, ta dùng lẻnh:
>> load <tn file>;
ASCII files cĩ thè ừỡc tưo bời cc chừỗng trệnh soưn thăo nĩi chung hay cc
chừỗng trệnh soưn thăo bng ngỏn ngự my. Nĩ củng cĩ thè ừỡc tưo ra bời chừỗng
trệnh Matlab bng cch sứ dũng cu lẻnh sau y:
>> save <tn file>.dat <tn ma trn>/ascii;
Lợc nĂy mồi mổt hĂng ca ma trn ừỡc lừu ờ mổt díng ca file dự liẻu. Phn
mờ rổng *.mat khỏng ừỡc tỳ ổng thm vĂo file ASCII. Tuy nhin, phn mờ rổng
*.dat mĂ ta thm vĂo s d dĂng phn biẻt 2 loưi Mat-files vĂ ASCII files.
è gi ma trn loưi nĂy ta dùng lẻnh sau:
>> load <tn file>.dat;
Lẻnh nĂy s tỳ ổng ằt tn cho ma trn trùng vối tn file.
Vẽ dũ:
>> x = 0; pi /60 ; 2*pi;
>> y = sin ( x );
>> t = [ x y ]
Ghi dự liẻu ca t vĂo file cĩ tn nhừ sau : dl1.mat
>> save dl1.mat
Phần I - Cơ sở
t
40
Chơng 3 - Lập trình trong Matlab
Viẻc ly dự liẻu ra ưt ừỡc qua biặn t thỏng qua lẻnh load. Cc tham sõ cn
ặn dự liẻu s ly qua biến t.
>> load
dl1
>> x = t ( : , 1 );
>> y = t ( : , 2 );
>> plot ( x, y ); grid on;
3.4. Cc bièu thửc quan hẻ vĂ logic
3.4.1 Cc phẫp ton quan hẻ
Ton tứ quan hẻ
ỷ nghỉa
<
Nhị hỗn
<=
Nhị hỗn hoằc bng
>
Lốn hỗn
>=
Lốn hỗn hoằc bng
==
Bng
~=
Khỏng bng
Phẫp so snh hai ma trn lĂ phẫp so snh tững phn tứ ca hai ma trn cĩ cùng
kẽch thừốc, kặt quă sinh ra mổt ma trn cùng cở cĩ cc phn tứ nhn gi tr 1 nặu phẫp
so snh lĂ ợng, ngừỡc lưi phn tứ nhn gi tr 0. Kặt quă ca phẫp ton quan hẻ ừỡc
gi lĂ băng sỳ tht (ma trn 0-1).
3.4.2 Cc phẫp ton logic:
Ton
tứ
Kỷ hiẻu
logic
and
&
or
|
not
~
Bièu thửc logic cho phẫp so snh cc băng sỳ tht giõng nhừ cc ton tứ quan
hẻ. Bièu thửc logic luỏn lĂ hỡp lẻ nặu 2 băng sỳ tht cĩ kẽch thừốc bng nhau. Trong
Phần I - Cơ sở
41
Chơng 3 - Lập trình trong Matlab
bièu thửc logic ton tứ not cĩ thè ừỡc ằt ờ phẽa trừốc. Mổt bièu thửc logic cĩ thè
chửa nhiậu ton tứ.
Vẽ dũ:
~ ( b == c | b == 5.5 );
Thử tỳ cc ton tứ trong bièu thửc logic tữ cao ặn thp lĂ not, and, or. Tuy
nhin, củng cĩ thè dùng ngoằc ỗn è thay ọi thử tỳ nĂy.
Băng cc phẫp logic
A
B
~A
A|B
A&B
false
false
true
false
false
false
true
true
true
false
true
false
false
true
false
true
true
false
true
true
Trong Matlab tt că cc gi tr khc 0 ậu ừỡc coi lĂ ợng (true), cín gi tr
bng 0 ừỡc coi lĂ sai (false). Chẽnh vệ vy, phăi hặt sửc thn trng khi iậu khièn
chừỗng trệnh bng cc bièu thửc quan hẻ vĂ logic.
3.4.3 Cc hĂm quan hẻ vĂ logic
any(x)
all(x)
find(x)
exist('A')
isnan(x)
finite(x)
isempty(x)
Phần I - Cơ sở
HĂm cho gi tr lĂ 1 nặu mổt phn tứ ca x khc 0,
ngừỡc lưi cho gi tr 0
HĂm cho gi tr lĂ 1 nặu tt că cc phn tứ ca ma trn
x khc 0, ngừỡc lưi cho gi tr lĂ 0.
HĂm tră lưi vector chửa chì sõ ca cc phn tứ khc 0
ca x. Nặu x lĂ mổt ma trn thệ chì sõ ừỡc chn tữ x(:) vĂ lĂ
mổt vertor cổt tưo nn bời cc cổt ca x.
HĂm tră lưi gi tr 1 nặu A lĂ biặn, lĂ 2 nặu A hoằc A.m
lĂ file, lĂ 0 nặu A khỏng tón tưi trong vùng lĂm viẻc. Tn biặn
phăi ừỡc ằt trong du nhy ỗn.
Gi tr tră vậ lĂ ma trn ones nặu cc phn tứ ca ma
trn x lĂ NaN, ngừỡc lưi tră vậ ma trn zeros.
Gi tr tră vậ lĂ ma trn ones nặu cc phn tứ ca ma
trn x lĂ gi tr hựu hưn, tră vậ ma trn zeros khi chợng lĂ vỏ
hưn hoằc NaN.
Gi tr tră vậ 1 nặu ma trn x lĂ rồng, vĂ 0 nặu ngừỡc
42
Chơng 3 - Lập trình trong Matlab
lưi.
isstr(x)
Gi tr tră vậ lĂ 1 nặu x lĂ mổt xu, 0 nặu ngừỡc lưi.
strcmp(y1,y2)
So snh hai xu y1,y2. Gi tr tră vậ lĂ 1 nặu 2 xu
giõng hẻt nhau vĂ bng 0 nặu ngừỡc lưi. So snh ờ y bao
góm: phn biẻt chự hoa vĂ chự thừộng, cc kỷ tỳ u díng vĂ
cc du cch cĩ trong xu.
3.5. Cu trợc cu lẻnh iậu kiẻn
3.5.1 Lẻnh if ỗn
Cợ php:
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.
Vẽ dũ:
if
a < 50
count = count +1;
sum = sum + a;
end
Trong trừộng hỡp a lĂ ưi lừỡng vỏ hừống, nặu a < 50, thệ count tâng thm 1 vĂ
a ừỡc cổng vĂo sum; tri lưi cu lẻnh thử 2 khỏng ừỡc thỳc hiẻn. Trong trừộng hỡp a
lĂ mổt ma trn thệ count tâng thm 1 vĂ nĩ chì ừỡc cổng vĂo sum khi mi phn tứ ca
nĩ nhị hỗn 50.
3.5.2 Lẻnh if lóng nhau:
Cợ
if <bièu thửc logic 1>
php:
nhĩm lẻnh A;
if <bièu thửc logic 2>
nhĩm lẻnh B;
end
nhĩm lẻnh C;
Phần I - Cơ sở
43
Chơng 3 - Lập trình trong Matlab
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 cc nhĩm lẻnh A vĂ
C; nặu bièu thửc iậu kiẻn 2 ợng nhĩm lẻnh B s ừỡc thỳc hiẻn trừốc nhĩm lẻnh C.
Nặu bièu thửc iậu kiẻn 1 sai chừỗng trệnh thỳc hiẻn ngay nhĩm lẻnh D.
3.5.3 Mẻnh ậ else:
Cợ php:
if <bièu thửc logic 1>
nhĩm lẻnh A;
else
nhĩm lẻnh B;
end
Cho phẫp thỳc hiẻn nhĩm lẻnh A nặu bièu thửc logic lĂ ợng, ngừỡc lưi thỳc
hiẻn nhĩm lẻnh B.
3.5.4 Mẻnh ậ elseif:
Khi ta cĩ mổt cu trợc lóng nhiậu cu lẻnh if-else, rt khĩ xc 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,
ngừội ta sứ dũng mẻnh ậ elseif lĂm chừỗng trệnh trờ nn trong sng vĂ d hièu hỗn.
Cợ php:
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;
end
Cc mẻnh ậ elseif cĩ thè dùng nhiậu hỗn nựa. Nặu bièu thửc 1 ợng thệ thỳc
hiẻn cu 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Ă 3 ợng thệ chì cĩ nhĩm C ừỡc thỳc hiẻn. Nặu cĩ
tữ hai bièu thửc logic trờ ln ợng thệ bièu thửc logic ợng u tin xc 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 cu trợc if - elseif ừỡc thi hĂnh.
Cĩ thè kặt hỡp 2 mẻnh ậ else vĂ elseif:
Phần I - Cơ sở
44
Chơng 3 - Lập trình trong Matlab
Cợ php:
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 că ba bièu thửc logic ậu sai thệ nhĩm lẻnh D ừỡc thi hĂnh. ỏi lợc, cu
trợc if-elseif cín ừỡc gi lĂ cu trợc case bời vệ cĩ mổt sõ trừộng hỡp ừỡc kièm tra.
Mồi trừộng hỡp ừỡc kièm tra bời mổt bièu thửc logic từỗng ửng.
Vẽ dũ sau y minh hoư cc cu trợc mẻnh ậ cu iậu kiẻn. Chừỗng trệnh ừỡc
ghi trong file hello2.m
% Chừỗng trệnh hello2 mỏ tă cu trợc cu iậu kiẻn trong Matlab
% BĂi ton so snh tuọi ca bưn vối sõ ngạu nhin sinh ra bời hĂm rand
disp ( Xin chĂo ! Rt hn hưnh ừỡc lĂm quen );
x = fix ( 30* rand );
disp ( Tuọi ca tỏi trong khoăng tữ 0-30 );
gu = input ( ừa vĂo tuọi ca bưn : );
if gu < x
disp ( Bưn tr hỗn tỏi );
elseif gu > x
disp ( Bưn lốn hỗn tỏi );
else
disp ( Tuọi bưn bng tuọi tỏi );
end
3.5.5. Cợ php cu iậu kiẻn vĂ break
Phần I - Cơ sở
45
Chơng 3 - Lập trình trong Matlab
Cợ php:
if <bièu thửc logic > , break , end
Tữ kho break vối cu lẻnh if cho phẫp thot ra khịi víng lằp nặu
logic> trong cu 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 ĩ.
Vẽ dũ:
Vậ nhp mổt sõ dừỗng, nặu sõ ĩ < 0 thot khịi chừỗng trệnh. Nặu sõ ĩ chia
hặt cho 2 hiẻn kặt quă. Nặu sõ ĩ khỏng chia hặt cho 2 nhp sõ mối.
while 1
n = input ( Cho vĂo 1 sõ dừỗng , thot khi n < 0);
if n<=0 , break , end
while n > 1
if rem( n , 2 ) == 0
disp( Sõ dừỗng cho vĂo chia hặt cho 2 , n );
break;
else
disp( Sõ dừỗng cho vĂo khỏng chia hặt cho 2 ! Xin nhp sõ khc );
end
end
3.6. Cu trợc víng lằp
3.6.1 Víng lằp FOR:
Cợ php:
for chì sõ = bièu thửc
nhĩm lẻnh A;
end
Bièu thửc lĂ mổt ma trn (củng cĩ thè lĂ mổt vectỗ hay mổt ưi lừỡng vỏ
hừống), nhĩm lẻnh A ừỡc thi hĂnh lằp i lằp lưi sõ ln bng sõ cổt ca ma trn bièu
thửc. Mồi ln lằp, chì sõ s nhn gi tr ca mổt phn tứ ca ma trn.
Phần I - Cơ sở
46
Chơng 3 - Lập trình trong Matlab
Chợ ỷ: Nặu trừộng hỡp ta khỏng biặt kẽch thừốc ca vectỗ, ta sứ dũng hĂm
length è xc nh sõ ln ta muõn lằp.
* Qui tc sứ dũng víng lằp FOR:
+ Chì sõ ca víng lằp phăi lĂ biặn.
+ Nặu ma trn bièu thửc lĂ ma trn rồng thệ víng lằp for s khỏng thỳc hiẻn.
Chừỗng trệnh bị qua víng lằp.
+ Nặu ma trn bièu thửc lĂ mổt ưi lừỡng vỏ hừống. Víng lằp ừỡc thỳc hiẻn
mổt ln vĂ chì sõ nhn gi tr ca ưi lừỡng vỏ hừống.
+ Nặu bièu thửc ma trn lĂ mổt vectỗ hĂng, sau mồi ln lằp chì sõ lưi ly gi tr
tiặp theo ca vectỗ.
+ Nặu bièu thửc ma trn lĂ ma trn, sau mồi ln lằp chì sõ s ly gi tr ca cổt
tiặp theo ca ma trn.
+ Khi kặt thợc víng lằp, biặn chì sõ nhn gi tr cuõi cùng.
+ Nặu sứ dũng ton tứ (:) vĂo bièu thửc ma trn:
For k = chì sõ u : gia sõ : chì sõ kặt thợc;
Sõ ln thỳc hiẻn víng lằp s ừỡc tẽnh theo cỏng thửc sau:
floor((kặt thợc-bt u) / gia sõ)) + 1;
Nặu gi tr lĂ mổt sõ m thệ khỏng thỳc hiẻn víng lằp.
Nặu mõn thot khịi víng lằp trừốc khi víng lằp thỳc hiẻn xong è dí lồi cĩ
trong víng lằp, sứ dũng lẻnh break .
Vẽ dũ mỏ tă cho víng lằp for ừỡc ghi trong file hello3.m
% Chừỗng trệnh hello2 mỏ tă cu trợc cu iậu kiẻn trong Matlab
% BĂi ton dỳ on 1 sõ ngạu nhin sinh ra tữ hĂm rand
% cho bời cc ln thứ tưo bời víng lằp for
x = fix ( 100* rand );
n = 7;
test = 1;
for k = 1:7
number = int2str( n);
disp ( Bưn cĩ quyận dỳ on number ln );
Phần I - Cơ sở
47
Chơng 3 - Lập trình trong Matlab
disp ( Sõ cn on nm trong khoăng tữ 0 100 );
gu = input ( ừa vĂo sõ bưn dỳ on );
if gu < x
disp ( Nhị hỗn );
elseif gu > x
disp ( Lốn hỗn );
else
disp ( Xin chợc mững bưn ơ on chẽnh xc );
test = 0;
break
end
n = n-1;
end
if test > 0
disp ( Bưn khỏng on ra rói );
numx = int2str( x );
disp ( Sõ ĩ lĂ : numx);
end
3.6.2 Víng lằp While:
LĂ cu trợc rt quan trng.
Cợ php:
while < bièu thửc>
nhĩm lẻnh A;
end
Nặu bièu thửc ợng thệ thỳc hiẻn nhĩm lẻnh A. Khi thỳc hiẻn xong thệ lưi kièm
tra iậu kiẻn. Nặu iậu kiẻn vạn cín ợng thệ nhĩm lẻnh A lưi ừỡc thỳc hiẻn. Khi
iậu kiẻn sai, víng lằp kặt thợc. Trong nhĩm lẻnh A nn cĩ cc biặn trong bièu thửc,
hoằc cc gi tr ca bièu thửc khỏng thay ọi. Nặu bièu thửc luỏn luỏn ợng (hoằc cĩ
gi tr luỏn khc khỏng), víng lằp s b qun. è thot khịi víng lằp qun, ta sứ dũng
Ctrl+C.
Vẽ dũ:
Phần I - Cơ sở
48
Chơng 3 - Lập trình trong Matlab
% Chừỗng trệnh hello3 mỏ tă cu trợc cu iậu kiẻn while trong Matlab
% BĂi ton cho ra tữ hello trn mĂn hệnh vối sõ ln nhp vĂo tữ bĂn phẽm
disp ( Xin chĂo ! Hello 3 );
gu = input ( Nhp vĂo sõ ln in : );
i=0;
while i~= gu
disp ([ Hello i ]);
i = i + 1;
end
Phần I - Cơ sở
49