Professional Documents
Culture Documents
ci t
1. MATLAB for WIN
Yu cu h thng
H thng IBM hoc t-ng thch 100% vi b vi x l 486 Intel cng vi b ng x l ton hc 487
( ngoi tr 486 DX c b x l bn trong ), Pentium hoc Pentium Pro Processor.
Microsoft Window 95 hoc Window NT.
a) CD ROM
- B iu phi ho 8 bit v card mn hnh ( 256 mu ng thi )
- Khong trng a ci t v chy cc tu chn. S yu cu a cng thay i tu theo kch c
cc partition v cc tp tr gip help -c ci t trc tip theo tu chn. Qu trnh ci t s thng bo
cho bn bit t m v dung l-ng a yu cu. V d:
Partition vi mt lin cung mt 0 cn 25 MB cho ring MATLAB v 50 MB cho c MATLAB
v HELP.
Partition vi lin cung 64 KB cn 115 MB cho ring MATLAB v 250 MB cho c MATLAB v
HELP.
b ) B nh.
Microsoft WIndow 95: 8 MB ti thiu v 16 MB khuyn ngh.
Microsoft WIN NT 3.51 hoc 4.0: 12 MB ti thiu v 16 MB khuyn ngh.
Cc khuyn ngh
B nh ph vo (B nh b sung: additional Memory).
V mch tng tc ho b tr cho Microsoft Window.
My in tr gip cho Microsoft Window.
V mch m thanh tr gip cho Microsoft Window.
Microsoft Word 7.0 hoc hn ( nu bn c nh s dng MATLAB NoteBook ).
Trnh bin dch Watcom C, Borland, Microsoft (xy dng file MEX).
Netscape Navigator 2.0 hoc version cao hn hoc Microsoft Internet Explorer 3.0 chy
MATLAB Help Desk.
Qu trnh ci t
1. t a vo CD. Trn WIN 95 ch-ng trnh SETUP bt u chy t ng nu nh- MATLAB cha -c ci t tr-c. Cn khng, nhn p vo biu t-ng setup.exe bt u qu trnh ci t.
2. Chp nhn hay b i nhng khuyn co v cp ng k phn mm trn mn hnh. Nu chp nhn
bn mi c th bt u qu trnh ci t.
3. Trn Custumer Information, nhp vo tn bn, a ch ca bn. Tn khng -c qu 30 k t.
Nhn nt NEXT.
4. Nhn vo cc hp trng thnh phn du v nu nh- bn mun tu chn v nhn tip nu bn
c nh khng mun tu chn ( c th thm vo sau ny nu mun ). Trn mn hnh hin th
C:\MATLAB l th- mc ch mc nh ca qu trnh ci t. Nu bn mun ci t vo th- mc khc
hoc i tn th- mc th bn la chn Browse.
MATLAB cho Macintosh.
MATLAB cho my Macintosh chy -c trn:
Ch-ng1
GII THIU chung
Bygi bn ci t xong, chng ta hy xem MATLAB c th lm -c nhng g. Trong phn ny
chng ta s trnh by mt s nhng ng dng ca n; v trnh by tt c nhng ng dng ca
MATLAB s rt di v tn thi gian. Nu bn c quyn h-ng dn ny, bn s thy MATLAB l ngn
ng rt mnh gii quyt nhng vn quan trng v kh khn ca bn. N s rt hu ch khi bn c
phn h-ng dn c bn v n s cung cp cho bn nhng kin thc c bn bn hiu r MATLAB v
pht trin -c nhng kh nng ca mnh sau ny.
C l cch d nht hng dung v MATLAB l n c y cc c im ca my tnh c nhn:
ging nh- cc my tnh c bn, n lm tt c cc php tnh ton hc c bn nh- cng, tr, nhn, chia;
ging nh- my tnh k thut, n bao gm: s phc, cn thc, s m, logarithm, cc php ton l-ng
gic nh- sine, cosine, tang; n cng ging nh- my tnh c kh nng lp trnh, c th l-u tr, tm kim
li d liu, cng c th to, bo v v ghi trnh t cc lnh t ng php ton khi gii quyt cc vn
, bn c th so snh logic, iu khin thc hin lnh m bo tnh ng n ca php ton. Ging
nh- cc my tnh hin i nht, n cho php bn biu din d liu di nhiu dng nh-: biu din thng
th-ng, ma trn i s, cc hm t hp v c th thao tc vi d liu th-ng cng nh- i vi ma trn.
Trong thc t MATLAB cn ng dng rt rng ri trong nhiu lnh vc v n cng s dng rt
nhiu cc php tnh ton hc. Vi nhng c im v kh nng thn thin vi ng-i s dng nn n
d dng s dng hn cc ngn ng khc nh- Basic, Pascal, C.
N cung cp mt mi tr-ng phong ph cho biu din d liu, v c kh nng mnh m v ho,
bn c th to cc giao din ring cho ng-i s dng(GUIs) gi quyt nhng vn ring cho mnh.
Thm vo MATLAB -a ra nhng cng c gii quyt nhng vn c bit, gi l Toolbox (hp
cng c). V d Student Edition ca MATLAB bao gm c Toolbox iu khin h thng, Toolbox x l
tn hiu, Toolbox biu t-ng ton hc. Ngoi ra bn c th to Toolbox cho ring mnh.
Vi nhng kh nng mnh m, rng ln ca MATLAB nn n rt cn thit cho bn bt u t phn
c bn. Sau y chng ta s nghin cu tng phn, v cun sch ny s gip bn hiu -c chng. Tr-c tin, mt cch n gin nht l chng ta quan nim nh- l mt my tnh c bn, tip theo l nh- my
tnh k thut v nh- my tnh c th lp trnh -c, cui cng l nh- my tnh hin i nht. Bng cch
quan nim ny bn s d dng hiu c nhng cch m MATLAB gii quyt nhng vn thng th-ng v xem MATLAB gii quyt nhng vn v s phc mm do nh- th no.
Tu thuc vo kin thc ca bn, bn c th tm thy nhng phn trong cun sch h-ng dn ny
hng th hay bun t...
Khi bn chy ch-ng trnh MATLAB, n s to mt hoc nhiu ca s trn mn hnh ca bn, v
ca s lnh (command) l ca s chnh bn giao tip vi MATLAB, ca s ny xut hin nh hnh di
y.
3
Cc k t EDU>> l du nhc ca MATLAB trong student MATLAB. Trong cc version khc
ca MATLAB, du nhc n gin ch l >>. Khi ca s lnh xut hin, l ca s hot ng, con tr
xut hin bn phi du nhc nh- hnh d-i. Con tr v du nhc ny ca MATLAB bo rng
MATLAB ang i thc hin lnh.
Hnh 1.1
Trong MATLAB chng ta c th gii quyt vn ny theo nhiu cch. Tr-c tin ging nh- my tnh
trn, chng ta c th tnh:
>> 4 + 6 + 2
ans=
12
>> 4*25 + 6*52 + 2*99
ans=
610
Ch rng MATLAB khng ch n nhng khong trng, cho tt c cc phn, v php nhn c
mc -u tin cao hn php cng. V mt ch khc l MATLAB gi kt qu ans (vit tt ca
answer) cho c hai php tnh.
Nh- ni trn, vn trn c th gii quyt bng cch cha cc thng tin vo bin ca
MATLAB:
>> erasers = 4
erasers=
4
>> pads = 6
pads=
6
>> tape = 2;
>> iterms = erases + pads + tape
iterms=
12
>> cost = erases*25 + pads*52 + tape*99
cost=
610
y chng ta to 3 bin MATLAB: erases, pads, tape cha s l-ng mi loi vt.
Sau khi vo cc gi tr cho cc bin ny, MATLAB hin th kt qu ra mn hnh, tr tr-ng hp bin
4
tape. Du hai chm ng sau cu lnh >> tape = 2; thng bo cho MATLAB nhn gi tr gn nh-ng khng hin th ra mn hnh. Cui cng khc vi gi kt qu ans, chng ta yu cu MATLAB gi
kt qu tng s cc vt l iterms, v tng s tin l cost. Ti mi b-c MATLAB u a ra cc
thng tin. V c l-u gi cc bin nn chng ta c th yu cu MATLAB tnh gi tr trung bnh cho mi
vt:
>> everage_cost = cost/iterms
everage_cost=
50.8333
Bi v everage cost c hai t, m MATLAB yu cu bin ch c mt t, nn chng ta dng du
gch d-i ni hai t ny thnh mt t.
Ngoi cc php tnh trn, MATLAB cn c mt s php tnh c bn khc nh- bng d-i y:
Php tnh
Php cng, a + b
Php tr, a - b
Php nhn, a.b
Php chia, ab
Php lu tha, ab
Biu t-ng
+
*
/ hoc \
^
5+3
7-4
18*24
56/8 = 8\ 56
5^2
V d
Trong cc php ton trn c mc -u tin khc nhau, khi tnh t tri sang phi ca mt dng
gm nhiu lnh th php ton lu tha c mc -u tin cao nht, tip theo l php nhn v php chia
c mc -u tin bng nhau cui cng l php cng v php tr cng c mc -u tin bng nhau.
1.2 Khng gian lm vic ca MATLAB
Cng nh- bn lm vic vi ca s Lnh, MATLAB nh cc lnh bn g vo cng nh- cc gi tr bn
gn cho n hoc n -c to ln. Nhng lnh v bin ny -c gi l l-u gi trong khng gian lm vic
ca MATLAB, v c th -c gi li khi bn mun. V d, kim tra gi tr ca bin tape, tt c
nhng g bn phi lm l yu cu MATLAB cho bit bng cch nh vo tn bin ti du nhc:
>> tape
tape=
2
Nu bn khng nh tn bin, bn c th yu cu MATLAB cho danh sch cc bin bng cch dnh
lnh who t du nhc lnh:
>> who
Your variables are:
ans
cost
average_cost
erasers
iterms
pads
tape
5
1.3 Bin
Ging nh- nhng ngn ng lp trnh khc, MATLAB c nhng quy nh ring v tn bin. Tr-c tin tn bin phi l mt t, khng cha du cch, v tn bin phi c nhng quy tun th nhng
quy tc sau:
Quy nh v tn bin
Tn bin c phn bit ch hoa ch th-ng.
V d: Iterms, iterms, itErms, v ITERMS l cc bin khc nhau
Tn bin c th cha nhiu nht 31 k t, cn cc k t sau k t th 31 b l i.
V d: howaboutthisveriablename
Tn bin bt u phi l ch ci, tip theo c th l ch s, s gch d-i
V d: how_about_this_veriable_name, X51483. a_b_c_d_e
K t chm cu khng -c php dng v n c nhng ngha c bit
Cng vi nhng quy nh trn, MATLAB c nhng bin c bit trong bng sau:
Cc bin c bit
ans
pi = 3.1415..
Eps
flops
inf
NaN hoc nan
i (v) j
nargin
narout
realmin
realmax
Gi tr
Tn bin mc nh dng tr v kt qu
S nh nht, nh- vy dng cng vi 1 -cs nh nht ln hn 1
S ca php ton s thc
ch s v cng nh kt qu ca 1/0
Dng ch s khng xc nh nh- kt qu ca 0/0
i=j=
S cc i s a vo hm -c s dng
S cc i s hm a ra
S nh nht c th -c ca s thc
S ln nht c th -c ca s thc
= 4;
6;
2;
= eases + pads + tape
= 6
6
i vi cc bin c bit trn, n c sn gi tr, nh- vy khi bn khi ng MATLAB; nu
bn thay i gi tr ca n th nhng gi tr c bit ban u s b mt cho n khi bn xo bin i
hoc khi ng li MATLAB. Do bn khng nn thay i gi tr ca bin c bit, tr khi n thc s
cn thit.
Cc bin trong khng gian lm vic ca MATLAB c th b xo khng iu kin bng cch
dng lnh clear. V d:
>> clear erases
ch xo mt bin erases
>> clear cost iterms
xo c hai bin cost v iterms
>> clear cl*
du * ch rng xo tt c cc bin bt u bng hai k t cl.
>> clear
xo tt c cc bin trong khng gian lm vic!. Bn s khng -c hi xc nhn cu lnh ny v tt
c cc bin b xo khng th khi phc li.
C th ni rng dng lnh clear rt nguy him, v vy khi dng lnh ny bn nn dng ng v tr.
1.4 Cu gii thch (comment) v s chm cu
Tt c cc vn bn ng sau k hiu phn trm (%) u l cu gii thch. V d:
>> erases = 4
erases=
4
% S cc ty.
8
trn s phc -c biu din bng ln M v gc , quan h gia cc i l-ng ny v phn thc,
phn o ca s phc biu din d-i dng i s l:
M=
= tan-1(b/ a)
a = Mcos
b = Msin
Trong MATLAB, chuyn t dng cc sang dng i s, dng cc hm real, imag, v angle:
% Gi li c1
>> c1
c1=
1.0000 - 2.0000i
>> M_c1 = abs(c1)
M_c1=
2.2361
>> angle_c1 = angle(c1)
angle_c1=
-1.1071
>> deg_c1 = angle_c1*180/ pi
-63.4349
>> real_c1 = real(c1)
real_c1=
1
>> imag_c1 = imag(c1)
imag_c1=
-2
-------------------oOo------------------
Ch-ng2
CC C tnh K THUT
Ging nh- hu ht cc my tnh k thut, MATLAB a ra rt nhiu cc hm ton hc, k thut thng
dng, ngoi ra MATLAB cn cung cp hng trm cc hm c bit v thut ton, n rt hu ch gii
quyt cc vn khoa hc. Tt c cc hm ny -c lit k trong online help, cn y ch cp
n nhng hm thng dng nht.
2.1 Cc hm ton hc thng th-ng
Cc hm ton hc ca MATLAB -c lit k trong bng d-i y, chng u c chung mt
cch gi hm nh- v d d-i y:
>> x = sqrt(2)/2
x=
0.7071
>> y = sin(x)
y=
0.7854
>> y_deg = y*180/pi
y_deg=
45.0000
Nhng lnh ny tm mt gc (tnh bng ) khi bit gi tr hm sin ca n l / 2.
Tt c cc hm lin quan n gc ca MATLAB u lm vic vi radian.
Bng cc hm:
Cc hm thng th-ng
abs(x)
acos(x)
acosh(x)
angle(x)
asin(x)
asinh(x)
atan(x)
atan2(x, y)
atanh(x)
ceil(x)
conj(x)
cos(x)
cosh(x)
exp(x)
fix(x)
floor(x)
gdc(x, y)
imag(x)
lcm(x, y)
log(x)
log10(x)
real(x)
rem(x, y)
round(x)
sign(x)
sin(x)
sinh(x)
sqrt(x)
tan(x)
tanh(x)
>> 4*atan(1)
ans=
3.1416
>> help atant2
ATAN2
10
ATAN2(Y, X) is the four quadrant arctangent of the real parts
of the elements of X and Y.
-pi <= ATAN2(Y, X) <= pi
see also ATAN.
>> 180/pi*atan(-2/ 3)
ans=
-33.69
>> 180/pi*atan2(2, -3)
ans=
146.31
>> 180/pi*atan2(-2, 3)
ans=
-33.69
>> 180/pi*atan2(2, 3)
ans=
33.69
>> 180/pi*atan2(-2, -3)
ans=
-146.31
Mt s v d khc:
>> y = sqrt(3^2 + 4^2)
% Tnh cnh huyn ca tam gic pitago 3-4-5
y=
5
>> y = rem(23,4)
% 23/4 c phn d- l 3
y=
3
>> x = 2.6,y1 = fix(x),y2 = floor(x),y3 = ceil(x),y4 = round(x)
x=
2.6000
y1=
2
y2=
2
y3=
3
y4=
3
>> gcd(18,81)
% 9 l -c s chung ln nht ca 18 v 81
ans=
9
>> lcm(18,81)
% 162 l bi s chung ln nht ca 18 v 81
ans=
162
V d: c l-ng chiu cao ca ngi nh
Vn : Gi thit bit khong cch t ngi quan st n ngi nh l D, gc t ngi quan st n ngi
nh l ; chiu cao ca ngi quan st l h. Hi ngi nh cao bao nhiu?
Gii php: Ta biu din kch thc nh- hnh 2.1:
(khng thy)
11
Hnh 2.1
Ngi nh c chiu cao l H + h, H l chiu di ca mt cnh ca tam gic, chiu di ny c th tnh
-c bng cng thc quan h gia gc v cnh ca tam gic:
tan() =
T ta c chiu cao ca ngi nh l
h + H = h + D.tan()
Nu h =2meters, D =50meters, v l 60o, MATLAB s a ra kt qu l:
>> h = 2
h =
2
>> theta = 60
theta =
60
>> D = 50
D =
50
>> buiding_height = h+D*atan(theta*pi/180)
buiding_height =
54.3599
12
Gii php: S tin tr hng thng l P, trn tng s tin l A dollars, t s li xut hng thng l R,
tr trong M thng:
P=A
Tng s tin phi tr s l: T = PxM
Gii php MATLAB a ra l:
>> format bank
% Dng dng hin th ngn hng
>> A = 18500;
% Tng s tin
>> M = 12*4;
% S thng phi tr li
>> FR = 1500;
% Tin gim gi ca nh my
>> % Gii php th nht
>> R = (2.9/100)/12;
% T l li xut hng thng
>> P = A*(R*(1+R)^M/((1+R)^M - 1)) % Khon tin phi tr hng thng
P=
408.67
>> T1 = P*M
% Tng gi tr ca t
T1=
19616.06
>> % Gii php th hai
>> R = (8.9/100)/12;
% T l li xut hng thng
>> P = (A-FR)*(R*(1 + R)^M/((1+R)^M - 1)) % Tin phi tr hng thng
P=
422.24
>> T2 = P*M % Tng gi tr ca t
T2=
20267.47
>> Diff = T2 - T1
Diff=
651.41
Nh- vy ta c gii php th nht gi r hn gii php th hai.
V d: Vn nng acid
Vn : Nh- mt phn ca qu trnh sn xut b phn ca vt c ti mt nh my t ng, b phn
-c nhng trong n-c lm ngui, sau nhng trong bn ng dung dch acid lm sch.
Trong ton b ca qu trnh nng acid gim i khi cc b phn -c ly ra khi bn acid v khi
nhng b phn ca vt c vo bn th mt l-ng n-c cn bm trn vt c khi nhng b tr-c cng
vo theo v khi nhc ra khi bn mt l-ng acid bm theo vt. m bo cht l-ng th nng acid
phi khng -c nh hn mt l-ng ti thiu. Bn hy bt u vi nng dung dch l 90% th nng
ti thiu phi l 50%. L-ng cht lng thm vo v ly i sau mi ln nhng dao ng trong khong
t 1% n 10%. Hi bao nhiu b phn c th nhng vo b dung dch acid tr-c khi nng ca n
gim xung d-i mc cho php?
Gii php:
Ban u nng acid l initial_con = 90% = acid/ (acid + water)
sau ln nhng th nht nng acid cn:
con =
=
13
=
=
acid l l-ng acid ban u trong dung dch, water l l-ng n-c ban u trong dung dch,
lost l l-ng phn trm n-c thm vo. S acid cn li trong dung dch sau ln nhng th nht l:
acid_left =
Ngha l, khi nhng ln th hai nng dung dch s l:
con =
=
=
Tip tc qu trnh ny, sau n ln nhng, nng acid l:
con =
Nu nng acid cn li l mc ti thiu chp nhn -c, s ln nhng cc i s l mt s nguyn
bng hoc nh hn n:
n=
Trong MATLAB gii php s l:
>> initial_con = 90
initial_con=
90
>> min_con = 50
min_con=
50
>> lost = 0.01;
>> n = floor(log( initial_con/min_con)/log(1+lost))
n=
59
Nh- vy c th nhng 59 ln tr-c khi nng acid gim xung d-i 50%. Ch hm floor dng
lm trn s n xung s nguyn gn nht, v dy ta cng c th dng hm logarithm c s 10 v
logarithm c s 2 thay cho hm logarithm t nhin trn.
-------------------oOo---------------------ch-ng 3
NHNG C IM CA CA S LNH
Ca s lnh (comand) ca MATLAB c rt nhiu nhng c im cn ch , mt s chng -c gii
thiu ch-ng tr-c, v sau y chng ta tm hiu r hn v chng.
14
3.1 Qun l khng gian lm vic ca MATLAB
Cc d liu v bin -c to ln trong ca s lnh, -c l-u trong mt phn gi l khng gian lm
vic ca MATLAB. Mun xem tn bin trong khng gian lm vic ca MATLAB ta dng lnh who:
>> who
Your variables are:
D
buiding_height
h
theta
Cc bin ny -c dng trong v d -c l-ng chiu cao ngi nh. xem chi tit hn v cc bin ta
dng lnh whos:
>> whos
Name
D
buiding_height
h
theta
Size
Bytes
1x1
1x1
1x1
1x1
8
8
8
8
Class
double
double
double
double
array
array
array
array
theta
15
CLEAR ALL removes all variables, globals, functions and MEX
links.
CLEAR VAR1 VAR2 ... clears the variables specified. The wildcard
character '*' can be used to clear variables that match a
pattern.
For instance, CLEAR X* clears all the variables in the current
workspace that start with X.
If X is global, CLEAR X removes X from the current workspace,
but leaves it accessible to any functions declaring it global.
CLEAR GLOBAL X completely removes the global variable X.
CLEAR FUN clears the function specified.
by MLOCK it will remain in memory.
CLEAR ALL also has the side effect of removing all debugging
breakpoints since the breakpoints for a file are cleared whenever
the m-file changes or is cleared.
Use the functional form of CLEAR, such as CLEAR('name'),
when the variable name or function name is stored in a xu.
See also WHO, WHOS, MLOCK, MUNLOCK.
Cui cng, khi lm vic trong khng gian lm vic ca MATLAB, n th-ng thun tin ghi
hoc in mt bn sao cng vic ca bn, lnh diary ghi d liu ng-i dng -a vo v ca s lnh v
-a ra file vn bn dng m ASCII c tn l diary trong th- mc hin ti.
>> diary frame
>> diary off
data
16
cha tt c cc bin trong MATLAB theo kiu nh phn trong fle data.mat.
>> save
data
erasers
pads
tape
-ascii
Ghi cc bin erasers, pads, tape trong dng m ASCII 8 s trong file data. File dng m
ASCII c th sa i bng bt c ch-ng trnh son tho vn bn no, ch rng file ASCII khng c
phn m rng .mat.
>> save
data
erasers
pads
tape
-ascii
-double
Ghi cc bin erasers, pads, tape dng ASCII 16 s trong file data.
Lnh load cng dng vi c php t-ng t.
3.3 Khun dng hin th s
Khi MATLAB hin th kt qu dng s, n tun theo mt s quy nh sau:
Mc nh, nu kt qu l s nguyn th MATLAB hin th n l mt s nguyn, khi kt qu l mt s
thc th MATLAB hin th s xp x vi bn ch s sau du phy, cn cc s dng khoa hc th
MATLAB hin th cng ging nh- trong cc my tnh khoa hc.
Bn c th khng dng dng mc nh, m to mt khun dng ring t mc Preferences, trong
bng chn file, c th mc nh hoc nh dng xp x ti du nhc.
Chng ta dng bin average_cost ( trong v d tr-c) lm v d, dng s ny l:
Lnh ca MATLAB
format short
format long
format short e
format long e
format short g
Average_cost
50.833
50.83333333333334
5.0833e+01
5.083333333333334e+01
50.833
format long g
50.83333333333333
format hex
format bank
format +
format rat
40496aaaaaaaaaab
50.83
+
305/ 6
Ch thch
5 s
16 s
5 s vi s m
16 s vi s m
chnh xc hn format short hoc
format short e
chnh xc hn format long
hoc format long e
h c s 16
hai s h 10
d-ng, m hoc bng khng
dng phn s
Mt ch quan trng l MATLAB khng thay i s khi nh li khun dng hin th -c chn, m
ch thay i mn hnh thay i.
---------------oOo----------------Ch-ng 4
Script M_files
Mt vn n gin l, yu cu ca bn ti du nhc ca MATLAB trong ca s lnh l nhanh v hiu
qu. Tuy nhin v s lnh tng ln, hoc khi bn mun thay i gi tr ca mt hoc nhiu bin v thc
hin li mt s lnh vi gi tr mi, nu c nh lp li ti du nhc ca MATLAB th s tr ln bun
17
t, do vy MATLAB cung cp mt gii php cho vn ny l: n cho php bn thay th cc lnh
ca MATLAB bng mt file vn bn n gin, v yu cu MATLAB m file v thc hin lnh chnh
xc nh- l nh ti du nhc ca MATLAB ti ca s lnh, nhng file ny gi l script file, hoc n
gin l M_file. Danh t "script" ch rng thc t MATLAB c t file kch bn tm thy trong
file. Danh t "M_file" ch rng tn script file phi kt thc bng phn m rng l '.m' nh v
d example1.m.
to mt script M_file, chn New trong bng chn file v chn M_file. Th tc ny s to ra
mn hnh son tho, v bn c th nh -c cc lnh ca MATLAB trong . V d d-i y l cch
lnh trong v d -c l-ng chiu cao ngi nh tr-c:
function example1
% example1.m V d -c l-ng chiu cao ngi nh
h = 2
theta = 60
D = 50;
building_height = h + D*tan(theta*pi/180)
Bn c th ghi v l-u gi file nybng cch chn Save t bng chn file. Khi bn ghi ln file ch
phi nh tn file trng vi tn hm (example) khng cn nh vo phn m rng, MATLAB t gn
vo cho n. Khi t du nhc ta c th nh:
>> example1
h=
2
theta=
60
building_height=
54.3599
Khi MATLAB din gii cc trng thi ca example1 trn, n s -c ni k hn ch-ng
sau, nh-ng mt cch ngn gn, MATLAB dng cc trng thi ca bin MATLAB hin ti v to ln
cc lnh ca n, bt u bng tn M_file. Ngha l, nu example1 khng phi l bin hin ti, hoc
mt lnh MATLAB xy dng ln, MATLAB m file example1.m (nu n tm thy) v tnh gi tr
cc lnh tm thy ch khi chng ta vo cc thng s chnh xc ti du nhc ca ca s lnh. Nh- thy
lnh trong M_file truy cp n tt c cc bin trong khng gian lm vic ca MATLAB, v tt c cc
bin trong M_file tr thnh mt phn ca khng gian lm vic. Bnh th-ng cc lnh c trong M_file
khng -c hin th nh- l n -c tnh trong ca s lnh, nh-ng lnh echo on yu cu MATLAB hin
th hoc lp li lnh i vi ca s lnh nh- chng ta c v tnh. Tip theo bn c th on -c
lnh echo off lm g. Ging nh- vy, lnh echo lp li bi chnh n lm thay i chnh trng thi ca
n.
Vi c im ny ca M_file bn c th thay i li ni dung ca file, v d bn c th m
M_file example1.m thay i li cc gi tr ca h, D, hoc theta, ghi li file v yu cu MATLAB
tnh li lnh trong file. Thm na, bng cch to M_file, cc lnh ca bn -c l-u trn a v c th
ng dng v sau khi bn cn.
Nhng ng dng ca ch dn ca MATLAB gip chng ta hiu -c khi dng script file nhtrong example1.m, ch dn cho php bn l-u gi cng cc lnh trong script file, v vy bn nh -c
nhng lnh lm g khi bn nhn li file sau y. Thm na, du chm phy ng sau cu lnh khng
cho hin th kt qu, t bn c th iu chnh script file a ra nhng kt qu cn thit.
V nhng ng dng ca script file, MATLAB cung cp mt s hm c bit c ch khi bn s
dng trong M_file:
Cc hm M_file
disp(ans)
echo
input
keyboard
pause
pause(n)
waitforbuttonpress
18
Khi lnh ca MATLAB khng kt thc bng du chm phy, kt qu ca lnh -c hin th trn
ca s lnh cng vi tn bin. i lc n thun tin khi khng cho hin tn bin, trong MATLAB ta
dng lnh disp thc hin vic ny:
>> h
h=
2
>> disp(h)
2
gip bn son tho script file khi tnh ton cho nhiu tr-ng hp, lnh input cho php bn
to cu nhc vo d liu -c an ton. V d example1.m vi nhng phn -c sa:
function example1
% example1.m V d -c l-ng chiu cao ngi nh
h = 2
theta = 60
D = input( Vo khong cch gia ng-i v ngi nh: )
building_height = h + D*tan(theta*pi/180)
chy file ny:
>> example1
h=
2
theta=
60
Vo khong cch gia ng-i v ngi nh: 60
D=
60
building_height=
64.8319
v d trn ta g vo s 60 v n Enter. Nhng lnh sau s tnh vi gi tr ca D l 60. Ch rng
hm input c th dng vi cc php ton khc ging nh- i vi cc hm thng th-ng khc, hm
input cng chp nhn i vi bt c kiu biu din s no, v d ta vo mt s l: +5.
>> example1
h=
2
theta=
60
Vo khong cch gia ng-i v ngi nh: sqrt(1908)+5
D=
48.6807
19
building_height=
52.9783
xem nhng tc ng ca lnh echo, ta dng chng trong script file:
echo on
function example1
% example1.m V d -c l-ng chiu cao ngi nh
h = 2
theta = 60
D = input( Vo khong cch gia ng-i v ngi nh: )
building_height = h + D*tan(theta*pi/180)
echo off
chy ch-ng trnh ta -c:
>> example1
% example1.m V d -c l-ng chiu cao ngi nh
h = 2
h=
2
theta = 60
theta=
60
D = input( Vo khong cch gia ng-i v ngi nh: )
Vo khong cch gia ng-i v ngi nh: 60
building_height = h + D*tan(theta*pi/180)
building_height=
64.8319
echo off
Nh- bn thy trong tr-ng hp ny, lnh echo lm cho kt qu kh c hn, nh-ng ng-c
li lnh n c th rt c ch khi g ri nhiu script file ng dng.
------------------oOo------------------Ch-ng 5
QUN L Tp
MATLAB cung cp mt s cc hm file h thng v cc lnh cho php bn lit k tn file, xem, v xo
M_file, hin th v thay i th- mc cha n. Mt s tng kt cc lnh -c wa ra trong bng d-i
y. Thm vo bn c th xem v sa -ng dn ca MATLAB (matlabpath). Nhng -ng dn
ny ch cho MATLAB ni cha script file v hm M_file trong my tnh ca bn. C rt nhiu tr-ng
hp cc hm trong MATLAB l cc M_file n gin -c cha trong a, nh-ng MATLAB thng bo
khng bit hm ny, nh- vy do n khng tm -c -ng dn ca MATLAB, bn cn phi thay i li
-ng dn:
Cc hm h thng file
addpath dir1
cd
p = cd
cd path
delete test.m
dir
d = dir
edit test
exist(cow,file)
exist(d,dir)
filesep
fullfile
inmem
ls
MATLABrc.m
MATLABroot
path
pathdef.m
pathsep
pwd
rmpath dir1
startup.m
tempdir
tempname
type test
what
which test
20
21
>> sqrt(2);
Nhng lnh trn s to ra li, bi v sqrt y khng phi l hm tnh cn bc hai, n l bin
c gi tr l 1.2. Th tc -ng dn cn -c dng khi lnh load -c dng. u tin MATLAB tm
kim trong th- mc hin ti, sau n tm theo -ng dn ca MATLAB n file d liu.
Thc t th tc tm kim ca MATLAB phc tp hn l trnh by trn rt nhiu v MATLAB
dng rt nhiu file c phn m rng l .m . Hm M_file c th cha nhiu hn mt bin, th- mc
trong matlabpath c th c th- mc con gi l private, v MATLAB cung cp ch-ng trnh h-ng i
t-ng vi cc ton t nh ngha li M_file trong th- mc con, bt u bng k t @. Nu tt c nhng
c im ny -c cng thm vo bng trn th n s y hn, nh-ng s rt kh hiu. Nu bn mun
nghin cu thm v phn ny th xem cc ti liu cung cp trong a CD.
Nu bn c M_file hoc MAT_file cha trong th- mc khng phi trong -ng n ca
MATLAB v khng trong th- mc hin ti, MATLAB khng th tm thy chng. C hai gii php
cho vn ny l:
(1)_To th- mc thit k thnh th- mc hin ti, dng lnh cd hoc pwd t trong bng tr-c.
(2)_Cng thm th- mc thit k trong -ng dn ca MATLAB .
Cui cng n rt d dng khi ta s dng ph-ng php duyt qua cc -ng dn (path browser)
hoc cc lnh trong ca s lnh path v addpath. dng path browser, ta chn set path t bng chn
file hoc nhn chut trn nt path browser trn thanh cng c ca ca s lnh. Lm nh- vy ta s -c
mn hnh ging nh- hnh 5.1:
Ging nh- thit k cc GUI, n lin quan trc tip khi ta s dng. -ng dn matlabpath -c hin
th bn tri, th- mc con nm trong -ng dn -c chn nm bn tri, cn cc nt thay i -ng
dn nh- thm -ng dn mi (add to path), loi b ng dn (remove from path) pha trn. ghi
li s thay i ta chn save path t bng chn file ca ca s
path browser tr-c khi ng GUI.
22
23
ch-ng 6
cc php ton vi MNg
0
0
0.1
0.31
0.2
0.59
0.3
0.81
0.4
0.95
0.5
1.0
0.6
0.95
0.7
0.81
0.8
0.59
0.9
0.31
24
0.3142
>> y(5)
% phn t th 5 ca mng
ans=
0.9511
+) truy nhp n nhiu phn t ca mng, v d ta truy nhp t phn t th nht n phn t th nm
ca mng x:
>> x(1:5)
ans=
0
0.3142
0.6283
0.9425
1.2566
0.8090
0.5878
0.3090
0.0000
0.9425
1.5708
0.3142
0.6283
Columns 1 through 7
0.3142
0.6283
Columns 8 through 11
2.1991
2.5133
25
0.9425
1.2566
2.8274
1.5708
1.8850
3.1416
>> x = linspace(0,pi,11)
x=
Columns 1 through 7
0
0.3142
0.6283
Columns 8 through 11
2.1991
2.5133
0.9425
1.2566
2.8274
1.5708
1.8850
3.1416
Cch th nht gip ta to mng m ch cn vo khong cch gi tr gia cc phn t (khng cn bit
s phn t), cn cch th hai ta ch cn vo s phn t ca mng (khng cn bit khong cch gi tr
gia cc phn t).
Ngoi cc mng trn, MATLAB cn cung cp mng khng gian theo logarithm bng hm
logspace. C php ca hm logspace nh- sau:
logspace(s m u, s m cui, s phn t)
v d:
>> logspace(0,2,11)
ans=
Columns 1 through 7
1.0000 1.5849
2.5119
3.9811
6.3096
10.0000
Columns 8 though 11
25.1189 39.8107 63.0957
100.0000
15.8489
1]
1
26
a l mng gm cc phn t [1 3 5], mng d l mng gm cc phn t ca a v ghp thm cc
phn t [1 0 1]
Tm li ta c bng cu trc cc mng c bn:
x=[ 2 2*pi sqrt(2) 2-3j ]
x= first : last
Trong cc v d tr-c, mng cha mt hng v nhiu ct, ng-i ta th-ng gi l vector hng. Ngoi
ra ta cn c mng l vector ct, tc l mng c mt ct v nhiu hng, trong tr-ng hp ny tt c mi
thao tc v tnh ton i vi mng nh- trn l khng thay i.
T cc hm to mng minh ho phn tr-c (tt c u to vector hng), c nhiu cch to
vector ct. Mt cch trc tip to vector ct l vo tng phn t ca mng nh- v d sau:
>> c = [1;2;3;4;5]
c=
1
2
3
4
5
Khc vi tr-c l ta dng du cch hay du phy phn cch gia hai ct ca vector hng. Cn
v d ny ta dng du chm phy phn cch gia hai hng ca vector ct.
Mt cch khc to cc vector ct l dng cc hm linspace, logspace, hay t cc vector
hng, sau dng ph-ng php chuyn v. MATLAB dng ton t chuyn v l ( ' ) chuyn t vector
hng thnh vector ct v ng-c li.
V d to mt vector a v vector b l chuyn v ca vector a, vector c l chuyn v ca vector b:
>> a= 1:5
a=
1
2
>> b= a'
b=
1
2
3
4
5
>> c= b'
c=
27
Ngoi ra MATLAB cn s dng ton t chuyn vi du chm ng tr-c ( .' ) ( ton t chuyn v
chm). Ton t ny ch khc vi ton t chuyn v ( ' ) khi cc phn t ca mng l s phc, tc l t
mt vector ngun vi cc phn t l s phc, ton t ( ' ) to ra vector phc lin hp chuyn v, cn ton
t ( .' ) ch to ra vector chuyn v.
V d sau y s lm r iu trn:
>> c = a.'
% To vector c t vector a trn bng ton t chuyn v chm
c=
1
2
3
4
5
>> d = a + i*a % To vector s phc d t vector a
d=
Columns 1 though 4
1.0000+1.0000i 2.0000+2.0000i 3.0000+3.0000i 4.0000+4.0000i
Columns 5
5.0000+5.0000i
>> e = d.'
% To vector e t vector d bng ton t chuyn v chm ( .' )
e=
1.0000 + 1.0000i
2.0000 + 2.0000i
3.0000 + 3.0000i
4.0000 + 4.0000i
5.0000 + 5.0000i
>> f = d'
% To ra vector f t vector d bng ton t chuyn v ( ' )
f=
1.0000 - 1.0000i
2.0000 - 2.0000i
3.0000 - 3.0000i
4.0000 - 4.0000i
5.0000 - 5.0000i
trn ta ch xt n mng c mt hng hay mt ct by gi ta xt tr-ng hp c nhiu hng
v nhiu ct, n cn -c gi l ma trn. V d sau y l ma trn g c hai hng v bn ct:
>> g = [1 2 3 4;5 6 7 8]
g=
1
2
3
4
5
6
7
8
Trong v d ny ta dng du cch vo cc phn t trong hng v du chm phy ( ; ) to
hai hng; ngoi ra ta cng c th to ma trn nh- sau:
>> g = [1 2 3 4
5 6 7 8
9 10 11 12]
g=
1
2
5
6
3
7
4
8
10
11
12
28
Ch : Khi nhp vo ma trn th gia cc hng s phn t phi bng nhau nu khng ch-ng
trnh s b bo li nh- v d sau:
>> h = [1 2 3;4 5 6 7]
Numbers of elements in each row must be the same
+) Php ton gia mng vi s n.
Trong v d tr-c chng ta to mng x bng cch nhn cc phn t ca mt mng vi . Cc php
ton n gin khc gia mng vi s n l php cng, php tr, php nhn, v php chia ca mng cho
s bng cch thc hin php ton i vi tng phn t ca mng.
V d:
>> g = [1 2 3 4; 5 6 7 8; 9 10 11 12];
>> -2
% Tr cc phn t ca mng g i 2
ans=
-1
0
1
2
3
4
5
6
7
8
9
10
>> 2*g - 1
% Nhn tt c cc phn t ca mng g vi 2 sau tr i 1
ans=
1
3
5
7
9
11
13
15
17
19
21
23
+) Php ton gia mng vi mng
Thut ton thc hin php ton gia cc mng khng phi n gin nh- trn m n cn b rng buc
bi cc iu kin khc nh- i vi hai mng kch c nh- nhau th ta c cc php ton sau: php cng,
php tr, php nhn, chia tng ng gia cc phn t ca ca hai mng.
V d :
>> g
% Gi li mng g
g=
1
2
3
4
5
6
7
8
9
10
11
12
>> h = [1 1 1 1; 2 2 2 2; 3 3 3 3] % To mt mng mi h.
h=
1
1
1
1
2
2
2
2
3
3
3
3
>> h + g % Cng hai ma trn g v h ( cng tng ng tng phn t ca h vi g)
ans=
2
3
4
5
7
8
9
10
12
13
14
15
>> ans - h % Ly kt qu trc tr i mng h, ta c li mng g.
ans=
1
2
3
4
5
6
7
8
9
10
11
12
>> 2*g - h % Nhn ma trn g vi 2 sau ly kt qu tr i ma trn h.
29
ans=
1
3
5
7
8
10
12
14
15
17
19
21
>> g.*h % Nhn t-ng ng cc phn t ca mng g vi cc phn t ca mng h
ans=
1
2
3
4
10
12
14
16
27
30
33
36
v d trn ta dng ton t chm_nhn ( .* ), ngoi ra MATLAB cn dng ton t chm_chia ( ./
hoc .\ ) chia t-ng ng cc phn t ca hai mng nh- v d d-i y:
>> g./h % Chia phi t-ng ng cc phn t ca mng g vi cc phn t ca mng h
ans=
1.0000
2.0000
3.0000
4.0000
2.5000
3.0000
3.5000
4.0000
3.0000
3.3333
3.6667
4.0000
>> h.\g % Chia tri t-ng ng cc phn t ca mng g vi cc phn t ca mng h
ans=
1.0000
2.0000
3.0000
4.0000
2.5000
3.0000
3.5000
4.0000
3.0000
3.3333
3.6667
4.0000
Ch ta ch c th dng php nhn_chm hay php chia_chm i vi cc mng g v h m khng th
dng php nhn ( * ) hay php chia ( / hoc \ ) v i vi cc php ton ny yu cu s ct v s hng
ca hai ma trn phi t-ng thch.
v d:
>> g*h
??? Error using ==> *
Inner matrix dimensions must agree.
>> g/h
Warning: Rank deficient, rank = 1 tol = 503291e-15.
ans=
0
0
0.8333
0
0
2.1667
0
0
3.5000
>> h/g
Warning: Rank dificient, rank = 2 tol = 1.8757e-14.
ans=
- 0.1250
0
0.1250
- 0.2500
0
0.2500
- 0.3750
0
0.3750
Php chia ma trn a ra kt qu m khng cn thit phi cng kch c nh- ma trn g v ma trn
h. V cc php ton i vi ma trn chng ta s ni n sau
+) Mng vi lu tha.
MATLAB dng ton t ( .^ ) nh ngha lu tha ca mng.
V d ta c hai mng g v h nh- trn, ta c th to cc mng mi bng ton t ( .^ ) nh- sau:
>> g.^2
% Cc phn t ca g -c lu tha v s m l 2.
30
ans=
1
25
81
>> g.^-1
ans=
1
0.2
0.11111
>> 2.^g
ans=
2
25
729
4
9
16
36
49
64
100
121
144
% Cc phn t ca g -c lu tha vi s m l -1.
0.5
0.33333
0.16667
0.14286
0.1
0.090909
% Cc phn t ca g l s m ca 2.
4
36
1000
>> g.^(h - 1)
ans=
1
5
81
1
6
100
8
49
1331
0.25
0.125
0.083333
16
64
1728
1
8
144
0
0
0
0
0
0
0
0
31
0
0
3; 4
2
5
8
3
6
9
6; 7
9]
4
4
4
0
0
0
0
1
0
6; 7 8 9];
% Gn li cc gi tr ca ma trn A.
% To ma trn B bng cch o ng-c cc hng ca ma trn A.
7
8
9
4
5
6
1
2
3
>> B = A(3:-1:1,:)
B=
32
7
8
9
4
5
6
1
2
3
>> C = [ A B(:,[1 3])]
C=
1
2
4
5
7
8
>> C = [1 3]
C=
1
3
>> B = A(C,C)
B=
1
3
7
9
>> B= A(:)
B=
3
6
9
7
4
1
9
6
3
% To ma trn ct B t ma trn A.
1
4
7
2
5
8
3
6
9
>> B = B.'
B=
1
4
>> B = A;
>> B(:,2) = []
B=
1
3
4
6
7
9
7
9
7
>> A(2,:) = B
A=
1
2
1
4
7
8
>> B = A(:,[2
B=
2
2
4
4
8
8
3
7
9
33
2])
2
4
8
2
4
8
34
i khi tin li hn ta ch dng ch s n truy nhp n cc phn t ca mng. Khi ch
s n -c dng trong MATLAB th th t cc phn t ca mng -c tnh bt u t phn t u tin
ca ct, tnh ht ct th tnh n ct tip theo..
V d:
>> D = [1
D=
1
5
9
>> D(2)
ans=
5
>> D(5)
ans=
6
>> D(end)
ans=
12
>> D(4:7)
ans=
2
4; 5
8; 9
10
11
12]
2
3
4
6
7
8
10
11
12
% Phn t th hai ca mng.
% Phn t th nm ca mng ( ct 2, hng 2 ).
% Phn t cui cng ca mng.
% T phn t th t- n phn t th by ca ma trn.
6
10
y = x( abs(x)>1)
-3
-2
2
3
To mng y bng cch ly nhng phn t ca x m c tr tuyt i ln hn mt.
>> y = x([1 1 0 0 0 1 1])
??? Index into matrix is negative or zero. See release notes on
changes to logical indices
Cu lnh b li mc d abs(x)>1 v [1 1 0 0 0 1 1] cng l vector nh- nhau. Trong tr-ng hp ny,
[1 1 0 0 0 1 1] l mt mng s, khng phi l mng logic. V vy MATLAB c nh a ch cc
phn t c s ch s trong mng [1 1 0 0 0 1 1] v cu lnh b li v khng c phn t 0. Tuy nhin
MATLAB cung cp hm logical chuyn i t mng s sang mng logic
>> y = x(logical([1
1]))
35
y=
-3
-2
2
3
mng logic lm vic vi ma trn cng nh- l i vi vector:
3; 4
2
3
5
6
8
9
find(A>5)
6; 7
9]
j=
36
3
3
2
3
1
2
3
3
y i l ch s hng, cn j l ch s ct; gia i v j c mi quan h t-ng ng ch nhng v tr
m ti biu thc quan h l ng.
Ch : khi MATLAB tr li hai hoc nhiu bin, chng -c t trong du ngoc vung, v -c t
bn tri du bng. C php ny khc vi c php thao tc i vi mng trn, khi m [i,j]-c t
bn phi du bng, v n xy dng ln mt mng m j -c kt ni vo bn phi du bng.
Bng d-i y tm tt dng lnh ca phn tm kim mng:
Tm kim mng
i = find(x)
[ r, c ] = find(x)
6; 7
9]
Hm isequal tr li gi tr logic l ng (1) khi hai mng c cng kch c, cc phn t ging nhau.
Ngoi ra n tr li gi tr l sai (0).
37
% Kt qu tr v l vector ct.
16
18
20
38
ans=
-9
-7
-5
-3
-1
1
2
3
4
5
6
7
8
9
>> intersect(A,B)
% Phn t chung ca hai mng.
ans=
2
4
6
8
>> setdiff(A,B)
% Cc phn t c trong A nh-ng khng c trong B.
ans=
1
3
5
7
9
>> setxor(A,B)
% Cc phn t khng thuc phn chung gia A v B.
ans=
-9
-7
-5
-3
-1
1
3
5
7
9
Nhng hm ny -c tng kt li trong bng d-i y:
So snh mng
isequal(A, B)
ismember(A, B)
intersect(A, B)
setdiff(A, B)
setxor(A, B)
union(A, B)
6.9 Kch c ca mng
ng nu A v B ging nhau.
ng khi phn t ca A cng l phn t ca B.
Cc phn t chung gia A v B.
Cc phn t c trong A m khng c trong B.
Cc phn t khng thuc phn chung gia A v B.
Tt c cc phn t c trong A v B.
39
phn tr-c chng ta bit lnh who cung cp tn bin do ng-i dng nh ngha. Trong tr-ng hp ca mng, n cn rt quan trng khi bit kch c ca mng. Trong MATLAB, lnh whos cung
cp nhng thng tin ny:
>> whos
Name
size
Bytes Class
A
3x3
72 double array
B
1x3
24 double array
ans
1x4
32 double array
Grand total is 16 elements using 128 bytes
(logical)
4; 5
8];
Vi mt thng s ra, hm size tr li mt vector hng trong c hai phn t, phn t th nht l
ch s hng, cn phn t th hai ch s ct.
>> [r,c] = size(A)
r=
2
c=
4
Vi hai thng s a ra, hm size tr li s hng trong bin th nht, v s ct trong bin th hai.
>> r = size(A,1)
r=
2
>> c = size(A,2)
Gi hai thng s, hm size ch tr v s ct hoc s hng.
>> length(A)
ans=
4
Tr v gi tr s hng hoc s ct, gi tr no ln hn -c tr v.
>> B = pi:0.01:2*pi;
>> size(B)
ans=
1
315
Cho bit rng B l vector hng, v
>> length(B)
ans=
315
tr li di ca vector.
>> size([ ])
40
ch ra rng ma trn rng khng c kch c.
Nhng khi nim ny -c tng kt trong bng d-i y:
Kch c ca mng
whos
s = size(A)
[ r, c ] = size(A)
r = size(A, 1)
c = size(A, 2)
n = length(A)
41
Cc hm vi mng nhiu chiu
s = size(A)
Cho n_s chiu ca A, tr v vector hng s vi n phn t, phn
t th i l kch c chiu th i ca mng A
ndims(A)
S chiu ca A, t-ng t nh- hm length(size(A))
permute(A, order)
n_s chiu, t-ng -ng vi ton t chuyn v chm.
ipermute(A, order)
Ng-c vi hm permute(A, order)
shiftdim(A, n)
Thay i s chiu ca mng A bng s nguyn n.
squeeze(A)
Tr li s chiu duy nht ca mng, t-ng -ng vi tr li s
chiu ln hn ba.
V d: S suy gim do phn r dng mng
Vn : Phn t polonium c chu k phn r l 140 ngy, c ngha l do s phn r m khi l-ng
ca poloniun ch cn li 1/ 2 so vi khi l-ng ban u sau 140 ngy. Gi s ban u ta c 10 grams
polonium, n s cn li bao nhiu sau mi tun trong vng mi tun?
Gii php: Ta s dng ph-ng php gii trong ch-ng 2, khi l-ng cn li sau sau mt khong thi
gian l:
khi l-ng cn li = khi l-ng ban u . (0.5)thi gian/ chu k
gii bi ton ny, gi php ca MATLAB l:
>> initial_amount = 10; % Khi l-ng cht polonium ban u
>> half_life = 140;
% Chu k phn r
>> time = 7:7:70
% Kt thc ca cc tun
time=
7
14
21
28
35
42
49
56
63
70
>> amount_left = initial_amount*0.5.^(time/ half_life)
amount_left=
Columns 1 through 7
9.6594
9.3303
9.0125
Columns 8 through 10
7.5786
7.3204
7.0711
8.7055
8.4090
8.1225
7.8458
Dng ton t mng lm cho n tnh cc gi tr mt cch n gin hn khi nhn nhiu gi tr ca
mt bin. Ch rng nhn chm (.^) -c s dng v chng ta mun lu tha 0.5 ln i vi mi phn
t ca mng. Nhng d liu ny c th d dng v chng trong MATLAB nh- hnh d-i:
>> plot(time/7,amount_left)
>> xlabel(Week number), ylabel(Amount of Polonium left)
42
Hnh 6.1
43
71
number =
24
number =
12
number =
2
n=
301
721
29
19
14
12
10
10
44
Hnh 6.2
Ch y yu cu ph-ng php chia chm v log(1 + lost/ 100) l mt vector
--------------------oOo------------------
ch-ng 7
cc php tnh vi mng
7.1 To ph-ng trnh tuyn tnh.
V c bn, MATLAB -c vit i vi nhng ma trn v thc hin php ton s hc tuyn tnh n
gin m xut hin trong nhiu ng dng. Mt vn chung nht ca s hc tuyn tnh l vic gii ph-ng trnh. V d to ph-ng trnh:
. =
A.x = b
45
Biu t-ng php nhn ton hc (.) -c nh ngha trong php ton trn, khc vi k hiu ta
dng i vi mng tr-c kia. Trong MATLAB php nhn ma trn ny -c nh ngha bng du sao
(*). Tip theo nh ngha du bng, ma trn to ra t ma trn A v vector x bng vi vector b. Gii php
tn ti cho s cn bng cp trn l nhng vn c bn ca s hc tuyn tnh. Thm na, khi li
gii khng tn ti, c rt nhiu cch gn ng tm kim gii php, nh- php loi tr Gaussian, s tm
tha s LU, hoc tnh trc tip A-1 .b. D-i y chng ta s cp n mt s cch gii quyt nh- trn:
Tr-c tin nhp vo ma trn A v b:
>> A = [1 2
A=
1
4
7
>> b = [366;
b=
366
804
351
3; 4
6; 7
0]
2
3
5
6
8
0
804; 315]
Nu bn c kin thc v s hc tuyn tnh, n rt d bn kim tra xem nh thc ca ma trn trn c
khc khng hay khng:
>> det(A)
ans=
27
Nu n ng, MATLAB c th gii ph-ng trnh theo hai cch, mt cch hay -c dng hn, mt
cch t s dng, nh-ng trc tip hn, ph-ng php ny l chuyn thnh dng x=A-1.b.
>> x = inv(A)*b
x=
25.0000
22.0000
99.0000
y inv(A) l hm ca MAYLAB dng tnh A-1; v ton t nhn ( * ), khng c du chm pha
tr-c, y l php nhn ma trn. Ph-ng php -c dng nhiu hn l dng ton t chia ma trn tri:
>> x = A\b
x=
25.0000
22.0000
99.0000
Ph-ng trnh ny s dng ph-ng php tm tha s LU gn ng v a ra cu tr li nh- l php
chia tri A cho b. Ton t chia tri ( \ ) khng c du chm pha tr-c l mt php ton ca ma trn, n
khng phi l cc php ton gia cc phn t ca mng. Ph-ng php th hai ny -c s dng nhiu
hn do nhiu nguyn nhn, mt trong nhng nguyn n gin nht l ph-ng php ny dng t php
ton hn v tc nhanh hn. Thm vo , nhn chung ph-ng php ny chnh xc hn cho nhng bi
ton ln. Trong tr-ng hp khc, nu MATLAB khng tm thy ph-ng php gii hoc khng tm thy
ph-ng php chinh xc, n s hin thng bo li.
Nu bn nghin cu s hc tuyn tnh, bn bit rng khi s ph-ng trnh v s bin khc nhau, th
khng th c mt ph-ng php duy nht gii. Trong MATLAB khi gp nhng h ph-ng trnh c s
ph-ng trnh ln hn s bin n dng ton t chia tri hoc chia phi, t ng gim thp nht nhng
phn t tha A.x - b. Cch ny gi l ph-ng php vung nh nht. V d:
46
>> A = [1 2 3; 4 5 6; 7 8 0; 2 5 8]
A=
1
2
3
4
5
6
7
8
0
2
5
8
>> b = [366 804 351 514]
b=
366
804
351
514
>> x = A\b
% Ph-ng php vung nh nht.
x=
247.9818
-173.1091
114.9273
>> res = A*x - b
res=
-119.4545
11.9455
0.0000
35.8364
Mt khc khi s ph-ng trnh t hn s bin t-ng t nh- tr-ng hp khng xc nh, th s nghim
ph-ng trnh l v tn. i vi nhng nghim ny MATLAB tnh theo hai cch. Dng ton t chia a ra
ph-ng php m c s phn t 0 ca x l cc i. Nh- mt s la chn, tnh x=pinv(A)*b a ra ph-ng
php chiu di hoc tiu chun ca x nh hn cc ph-ng php khc. Ph-ng php ny gi l ph-ng
php tiu chun cc tiu.
V d:
>> A = A
% To ba ph-ng trnh, bn bin.
A=
1
4
7
2
2
5
8
5
3
6
0
8
>> b = b(1:3)
b=
366
804
351
>> x = A\b
% ph-ng php vi s phn t 0 cc i.
x=
0
-165.9000
99.0000
168.3000
>> xn = pinv(A)*b
% Tm kim gii php tiu chun nh nht.
xn=
30.8182
-168.9818
99.0000
159.0545
>> norm(x)
% Tiu chun O_clit vi cc phn t 0.
ans=
256.2200
>> norm(xn) % Gii php tiu chun nh nht
ans=
254.1731
7.2 Cc hm ma trn .
gii ph-ng trnh tuyn tnh, MATLAB cung cp cc hm tr gip sau:
Cc hm ma trn
balance(A)
Cn bng tng chnh xc
cdf2rdf(A)
Chuyn t dng s phc cho sang dng s thc cho
chol(A)
Tm tha s Cholesky
cholinc(A, droptol)
Tha s Cholesky khng y
cond(A)
S iu kin ma trn
condest(A)
c l-ng s iu kin ma trn theo tiu
det(A)
nh thc ma trn
expm(A)
Ma trn theo lut m
expm1(A)
B sung M_file ca expm
expm2(A)
Ma trn theo lut hm m, dng th t Taylor
funm(A, fun)
Tnh ton hm ma trn chung
hess(A)
Mu Hessenberg
inv(A)
Ma trn chuyn v
logm(A)
Ma trn logarithm
lu(A)
Tm tha s vi php kh Gaussian
luinc(A, droptol)
Tha s LU khng y
norm(A)
Ma trn v vector tiu chun
norm(A,1)
Tiu chun 1
norm(A, 2)
Tiu chun 2
norm(A, inf)
V cng
norm(A, p)
Tiu chun P (ch i vi vector)
norm(A, fro)
Tiu chun F
normest(A)
Tiu chun 2 -c l-ng cho ma trn ln
null(A)
Khong rng
orth(A)
Tnh trc giao
poly(A)
a thc c tr-ng
polyvalm(A)
Tnh gi tr ca ma trn
qr(A)
Xc nh trc giao tam gic
qrdelet(Q, R, j)
Xo ct t tha s QR
qrinsert(Q, R, j, x)
Chn ct trong tha s QR
rank(A)
S ca hng hoc ct c lp
rcond(A)
c l-ng iu kin thun nghch
sqrtm(A)
Ma trn gc bnh ph-ng
subspace(A, B)
Gc gia hai im
svd(A)
Phn tch gi tr n
svds(A, K)
Mt s cc gi tr n
trace(A)
Tng cc phn t cho
47
48
0.0751
0.3516
ma trn 2x2 ca cc s cung cp bi hm random vi gi tr trung bnh l 0. Thut ton cho hm rand
v randn c th tm thy trong S.K>Park and K.W.Miller,Random Number Generator: Good Ones Are
Hard to Find, Comm. ACM, 32, 10, Oct. 1988-1201.
>> eye(3)
ans=
1
0
0
1
0
0
Ma trn ng nht 3x3
0
0
1
49
>> eye(3,2)
ans=
1
0
0
1
0
0
Ma trn ng nht 3x2
Ngoi ra ch kch c ca mt ma trn, bn c th dng hm size to mt ma trn c kch c ging
nh- ma trn khc:
>> A = [1 2 3; 4
>> ones(size(A))
ans=
1
1
1
1
6];
1
1
Ma trn rng
To ma trn rng
Ma trn ng nht
Ma trn kim tra nh vi phn t
Ma trn Hadamard
Ma trn Hankel
Ma trn Hilbert
Chuyn thnh ma trn Hilbert
Ma trn vung, gi tr cc phn t bng t 1 n gi tr s phn t
Ma trn 1
Ma trn tam gic Pascal
Ma trn vi cc phn t ngu nhin t 0 n 1.
Ma trn ngu nhin thng th-ng vi gi tr trung bnh bng 0
Ma trn kim tra i xng trc chnh
Ma trn Toeplitz
Ma trn Vandermond
Ma trn kim tra Wilkinson
Ma trn khng
V d
Vn : Ta c mch in nh- trong hnh 7.1 -c m t bng ph-ng trnh in p nt khi ngun a
vo l sng hnh sin.
Hnh 7.1
50
E = 10o;
R1 = 2; L = 10j; C = ; R2 = 10.
y vi l in p gia nt th i v t. Hi in p ti mi nt l bao nhiu?
Gii php: y l vn v phn tch pha. Ph-ng php gii bi ny l gii ph-ng trnh trn, v
chuyn cc kt qu v dng thi gian. Trong MATLAB gii php s l:
function circuit
% circuit.m script file to solve circuit proplem
A(1,1)=1/2;
% poke in nonzero values as needed
A(1,2)=-1/2;
A(2,1)=-1/2;
A(2,2)=1/2 + 0.2j + 1/10j;
A(2,3)= -1/10j;
A(3,2)=-1/10j;
A(3,3)=1/10 + 1/10j;
y=[-1 0 0]';
% right hand side vector
v=A\y
% complex solution
vmag=abs(v)
% solution magnitudes
vphase=angle(v)*180/pi
% solution phase in degrees
theta=linspace(0,2*pi);
% plot results in time
v1=vmag(1)*cos(theta-vphase(1));
v2=vmag(2)*cos(theta-vphase(2));
v3=vmag(3)*cos(theta-vphase(3));
thd=theta*180/pi;
plot(thd,v1,thd,v2,thd,v3)
Sau khi chy ch-ng trnh trn, kt qu s l:
v =
-4.0000 + 6.0000i
-2.0000 + 6.0000i
2.0000 + 4.0000i
vmag =
7.2111
6.3246
4.4721
vphase =
123.6901
108.4349
63.4349
51
Hnh 7.2
---------------------oOo---------------------
ch-ng 8
cc php tnh LOGIC V QUAN H
Thm vo nhng ton t truyn thng, MATLAB cung cp ton t logic v quan h. Bn c th
quen thuc vi nhng php ton ny, nu bn lm quen vi cc ngn ng lp trnh khc. Mc ch
ca nhng ton t v hm ny l tr li cu hi True_False (ng_sai).
i vi cc s th trong ton t logic v quan h quy nh cc s khc khng l True cn s khng l
False. Kt qu ca php ton logic v quan h a ra l 1 cho True, 0 cho False.
8.1 Ton t quan h
Ton t quan h MATLAB bao gm tt c cc php so snh:
Ton t quan h
<
ngha
nh hn
<=
>
>=
==
~=
52
nh hn hoc bng
ln hn
ln hn hoc bng
bng
khng bng
Ton t quan h MATLAB c th dng so snh hai mng c cng kch c hoc so snh mt
mng vi mt s n. Trong tr-ng hp th hai, s n so snh vi tt c cc phn t ca mng, kt qu
tr v ging nh- kch c ca mng. V d:
>> A = 1:9, B = 9 - A
A=
1
2
3
4
5
6
7
8
B=
8
7
6
5
4
3
2
1
>> tf = A>4
tf=
0
0
0
0
1
1
1
1
1
tm kim cc phn t ca A m ln hn 4. Kt qu bng 0 khi A 4, bng 1 khi A>4.
>> tf = (A==B)
tf=
0
0
0
9
0
53
>> x = x + (x==0)*eps;
>> sin(x)/x
ans=
0.8415 0.9276
0.9816
1.0000
0.9816
0.9276
0.8415
ngha
AND
OR
NOT
>> tf = ~(A>4)
1
1
1
0
0
0
0
0
ph nh ca kt qu, t-ng -ng vi v tr no bng khng thay bng mt v ng-c li.
>> tf = (A>2)&(A<6)
tf=
0
0
1
1
Tr li mt ti nhng v tr m phn t ca A ln hn 2 v nh hn 6.
8.3 Cc hm logic v hm quan h
Thm vo nhng ton t logic v ton t quan h cp n trn, MATLAB cung cp cc hm
logic v quan h khc d-i y:
Cc hm logic v hm quan h khc
xor(x,y)
Ton t hoc. Tr li gi tr 1 khi x hoc y khc khng (True), gi tr 0 khi c x
v cng bng khng (False) hoc cng khc khng (True)
any(x).
Tr li 1 nu bt c phn t no trong vector x khc khng. Tr li 1 cho mi ct
trong ma trn x m c cc phn t khc khng.
all(x)
Tr li 1 nu tt c cc phn t ca vector x khc khng. Tr li 1 cho mi ct
trong ma trn x m tt c cc phn t khc khng.
MATLAB cn cung cp rt nhiu cc hm kim tra cho s tn ti ca cc gi tr c bit hoc
iu kin v tr li nhng kt qu l gi tr logic.
Cc hm kim tra
isa(X, name)
iscell(X)
iscellstr(X)
ischar(S)
isempty(X)
isequal(A, B)
isfield(S, name)
isfinite(X)
isglobal(X)
ishandle(h)
ishold
isiee
isinf(X)
isletter(S)
islogical(X)
ismember(A, B)
isnan(X)
isnumeric(X)
isppc
isprime(X)
isreal(X)
isspace(S)
issparse(A)
isstruct(S)
isstudent
isunix
isvms
ch-ng 9
54
True nu X c lp i t-ng l name
True nu i s l mng phn t.
True nu i s l mng phn t ca cc xu.
True nu i s l xu k t.
True nu i s l rng.
True nu A v B ging nhau.
True nu namel mt tr-ng ca cu trc S.
True khi cc phn t c hn.
True khi i s l bin ton cc.
True khi i s l s iu khin i t-ng hp l
True nu th hin ti gi trng thi ON.
True nu my tnh thc hin php s hc IEEE
True ti nhng phn t v cng
True khi cc phn t thuc bng ch ci.
True khi i s l mng logic
True ti nhng v tr m phn t ca A v B trng nhau
True khi cc phn t l khng xc nh (NaN)
True khi i s l mng s
True cho Macintosh vi b x l PowerPC
True khi cc phn t l s nguyn t
True khi i s khng c phn o
True khi cc phn t l k t trng
True nu i s l ma trn Sparse
True nu i s l mt cu trc
True nu Student Edition ca MATLAB
True nu my tnh l UNIX
True nu my tnh l VMS
----------------------oOo-------------------VN Bn
Name
Size
Bytes
t
1x32
64 char
Grand total is 32 elements using 64 bytes
Class
array
55
56
c
t
e
r
Dng ton t chuyn v chuyn t character sang dng ma trn ct
>> v = 'I cant't find the manual!'
v=
I can't find the manual!
Du nhy n vi xu k t l biu t-ng trong hai du nhy n.
Chng ta c th ni hai xu nh- i vi hai mng:
>> w = [u,v]
w=
character I can t find the manual!
Hm disp cho php bn hin th xu k t m khng c tn bin
>> disp(v)
I can't find the manual
57
9.2 Chuyn i xu
Trong tr-ng hp chng ta to mt thng bo c cha cc s khng phi l xu, nhng hm chuyn
i s gip chng ta lm vic .
>> rad = 2.5; area = pi*rad^2;
>> t = ['A circle of radius ' num2str(rad)...
'has an area of ' num2str(area) '.'];
>> disp(t)
A circle of radius 2.5 has an area of 19.63.
y hm num2str -c dng chuyn t s sang xu. Ging nh- vy int2str chuyn t s nguyn
sang xu, c hai hm ny gi hm sprintf, n ging nh- c php trong C dng chuyn s sang xu.
9.3 Cc hm v xu
MATLAB -a ra mt s cc hm ca xu, bao gm cc hm trong danh sch d-i y:
Cc hm xu
blanks(n)
deblank(s)
eval(xu)
eval(try, catch)
feval(f, x, y, ...)
findstr(s1, s2)
ischar(s)
isletter(s)
isspace(s)
lasterr
lower(s)
strcat(s1, s2, ...)
strcmp(s1, s2)
strmatch(s1, s2)
strncmp(s1, s2, n)
strrep(s1, s2)
strtok(s)
strvcat(s1, s2, ...)
upper(s)
Xu vi nhng ch ci th-ng
Ni cc xu thnh hng
True nu cc xu ging nhau
Tm kim kh nng ging nhau ca xu
True nu n k t u ging nhau
Thay th mt xu bng mt xu khc
Tm kim du hiu cho xu
Ni cc xu thnh ct
Chuyn thnh ch in
58
59
Ma trn trn c 4 hng v mt ct nh-ng mi ct li c di khc nhau. Tt c cc phn t
-c t trong du ngoc nhn, mi phn t -c t trong du nhy n, gia hai hng l du chm
phy. Mng t bo -c nh a ch cng ging nh- mng thng th-ng:
>> C(2:)
ans=
'about'
'this for a'
>> C([4 3 2 1])
ans=
'cell array of strings?'
'this for a'
'about'
'How'
>> C(1)
ans=
How
y vn l mng t bo. thay i du nhy ca t bo, ta s dng ngoc nhn:
>> s = c{4}
ans=
cell array of strings?
>> size(s)
ans=
1
22
truy nhp vo nhiu hn mt t bo, ta dng hm deal:
>> [a, b, c, d] = deal(C{:})
a=
How
b=
about
c=
this for a
d=
cell array of trings?
y C{:} ch truy nhp n tt c cc t bo, n ging nh-:
>> [a, b, c, d] = deal(C{1}, C{2}, C{3}, C{4})
a=
How
b=
about
c=
this for a
d=
cell array of strings?
Hm char c th dng chuyn t mng t bo sang mng xu:
>> s = char(C)
How
about
this for a
cell array of strings?
>> size(s)
% Kt qu l cc xu vi cc khong trng.
ans=
4
22
>> ss = char(C(1:2))
ss=
How
about
>> size(ss)
ans=
2
5
chuyn ng-c li mng t bo, ta dng hm cellstr:
60
>> cellstr(s)
ans=
'How'
'about'
'this for a'
'cell array of strings?'
Hu ht cc hm xu trong MATLAB lm vic vi c mng xu hoc mng t bo.
V mng t bo s -c trnh by r hn Ch-ng 19.
ch-ng 10
thi gian
MATLAB -a ra mt s hm thao tc v thi gian t bn c th tnh ton vi ngy, gi, in lch
v tm kin nhng ngy c th. MATLAB cha ngy v thi gian nh- mt s c chnh xc hai s sau
du phy t-ng tr-ng cho s ngy, bt u bng nm khng. V d, mng 1 thng 1 nm 1997 ti lc
na m, n -c t-ng tr-ng bi s 729391, v cng mt ngy nh-ng lc bui ch-a l 729391.5. Cu
trc ny c th d dng cho my tnh x l, nh-ng n rt kh din gii. Do vy MATLAB cung cp cc
hm tr gip chuyn i gia s v xu k t v thao tc vi ngy v thi gian.
10.1 Ngy v gi hin ti
Hm clock tr v ngy v gi hin ti cha trong mt mng. V d:
>> T = clock
T=
1997
1
21
16
33
39.934708
Hm now tr v ngy v thi gian hin ti nh- s ngy quy -c ca my hoc n gin l s ngy.
>> t = now
t=
729411.690045541
'dd-mmm-yyyy'
'mm/dd/yy'
'mmm'
'm'
'mm'
'mm/dd'
'dd'
'ddd'
'd'
'yyyy'
'yy'
'mmmyy'
'HH:MM:SS'
'HH:MM:SS PM'
'HH:MM'
'HH:MM PM'
'QQ-YY'
'QQ'
Example
01-Mar-1995
15:45:17
01-Mar-1995
03/01/95
Mar
M
3
03/01
1
Wed
W
1995
95
Mar95
15:45:17
3:45:17 PM
15:45
3:45 PM
Q1-96
Q1
61
62
08: 22')
10.3 Cc hm v ngy
Ngy ca tun c th tm t xu dng ngy hoc s dng ngy, dng hm weekday, MATLAB s
dng quy -c Sunday = 1 v Saturday = 7.
>> [d
d=
w] = weekday(728647)
2
w=
>> [d
d=
w=
63
Mon
w] = weekday('21-Dec-1994')
4
Wed
Ngy cui thng c th tm bng hm eomday. Trong bt buc phi -a vo nm, thng.
>> eomday(1996, 2)
ans=
29
1996 l nm
F
0
7
14
21
28
0
S
1
8
15
22
29
0
3
10
17
24
31
0
64
Hnh 10.1
65
Hnh 10.2
Ch s khc nhau v hm thi gian gia elapsed_time i vi lnh plot, lnh plot th hai nhanh
hn v MATLAB to hnh dng ca s v dch cc hm cn thit vo trong nh.
Hm cputime tr v tng s thi gian ca CPU (Central Processing Unit), tnh theo giy, trong
thi gian MATLAB dng t khi n c khi ng ln.
Hm etime tnh khong thi gian gia hai vector thi gian. Cc vector phi l vector hng gm 6
phn t, ging nh- kt qu tr v trong lnh clock v datevec. Ti thi gian hin ti etime khng chuyn
gia thng v nm.
Tt c cc hm c th s dng tnh ton thi gian.
>> t0 = cputime; pause(5); cputime - t0
ans =
5
>> t1 = clock; pause(2); etime(clock,t1)
ans =
2.0400
Bn hy xem help v MATLAB CD tm hiu thm v nhng hm ny.
10.5 V th vi hm ngy v thi gian
i khi n rt c ch v th trong dng xu ngy v thi gian cho mt hoc hn mt cc
nhn. Hm datetick t ng vi cng vic ny. Nu th -c v, dng s ngy cho mt hoc hn mt
trc, th hm datetick s vit cc nhn cho im nh du. V d sau v hnh 10.3:
>> t = (1900:10:1990)';
>> p = [75.995; 91.972; 105.771; 123.203; 131.669;
150.697; 179.323; 203.212; 226.505; 249.633];
>> plot(datenum(t,1,1),p)
>> datetick('x','yyyy')
% use 4-digit year on the x-axis
66
Hnh 10.3
67
Hnh 10.4
V d: Tm th su ngy 13
By gi chng ta -c gii thiu cc lnh v thi gian, hy dng chng to mt s hm c
ch. Nu bn l ng-i cn thn, bn mun bit bao gi th su ngy 13 xy ra. Hm M_file s cho bn
nhng thng tin ny.
function m=friday(start)
% FRIDAY Date of the next Friday the 13th
% FRIDAY display the next occurrence of Friday the
% 13th
% FRIDAY(START) start the search at the date
% specified by START
% M=FRIDAY return the date number of the next Friday
% the 13th
if nargin==0
start=now;
% use the current date if none
end
% was supplied
[yr,mo,da]=datevec(start);
da=da+6-weekday(start);
% Start with the Friday in
% this week
start=datenum(yr,mo,da,0,0,0);
while 1
[yr,mo,da]=datevec(start);
if (weekday(start)==6)&(da==13)
break;
end
start=datenum(start+7);
% skip to the next Friday
end
if nargout==0
disp(['Friday,'datestr(start,1)]) % Display the
% the result
else
m=start;
% or return the resulting date
end
% number
68
ch-ng 11
VNG LP IU KHIN
Cc ngn ng lp trnh v my tnh c kh nng lp trnh u cp n mt c im l cho php
bn iu khin vng lp ca cc cu lnh da trn nhng cu trc ca n. Nu bn tng s dng
nhng c im ny th phn ny s rt n gin i vi bn. Mt khc nu vng lp iu khin l mi
i vi bn th n s rt rc ri, nu nh vy, th bn hy nghin cu n t t.
69
Vng lp iu khin rt hu ch v c ng dng rt rng ri, n lm cho cc php ton -c thc
hin mt cch thun tin hn v nhanh hn. MATLAB a ra cc dng vng lp c iu khin l: vng
lp for, vng lp while, cu trc if-else-end v cu trc switch-case. V cc cu trc th-ng hon thin
cc lnh ca MATLAB, nn chng th-ng xut hin trong M_file, hn l trong cu lnh nh trc tip
ti du nhc ca MATLAB.
11.1 Vng lp for
Vng lp for cho php mt nhm lnh thc hin lp li mt s ln c nh. C php ca vng lp for
nh sau:
for
end
x = array
commands % Khi cc lnh
Cc cu lnh gia hai trng thi for v end -c thc hin mt ln cho tt c cc ct ca mng
(array). Ti mi ln lp li, x c gn cho phn t ct tip theo nh- trong sut n ln ca vng lp, x =
array(:, n).
V d:
>> for n = 1:10
x(n) = sin(n*pi/10);
end
>> x
x=
Columns 1 through 7
0.3090
0.5878
0.8090
0.9511
1.0000
0.9511
0.8090
Columns 8 through 10
0.5878
0.3090
0.0000
Ni mt cch khc, trng thi th nht yu cu: Cho n bng t 1 n 10, tnh gi tr ca tt c cc
trng thi cho n trng thi k tip trng thi end. u tin trong vng lp for n=1, tip theo n=2, v
c nh vy cho n tr-ng hp n=10. Sau tr-ng hp n=10, vng lp for kt thc, v tt c cc lnh sau
trng thi end ca vng lp -c thc hin.
Vng lp for khng th b kt thc bng cch gn li bin iu khin n trong vng lp:
>> for n = 1:10
x(n) = sin(n*pi/10);
n = 10;
end
>> x
x=
Columns 1 through 7
0.3090 0.5878 0.8090
Columns 8 through 10
0.5878 0.3090 0.0000
0.9511
1.0000
0.9511
0.8090
Trng thi 1:10 l mt trng thi to ln mng MATLAB tiu chun. Bt c kiu mng no ca
MATLAB u -c chp nhn trong vng lp for:
>> data = [3 9 45 6; 7 16 -1 5]
data =
3 9 45 6
7 16 -1 5
>> for n = data
x = n(1)-n(2)
end
x=
-4
x=
-7
x=
46
x=
1
Bnh th-ng vng lp for c th lng vo nhau:
70
71
>> apple = 10
% s to
>> cost = apple*25
cost=
250
>> if apple > 5
cost = (1-20/100)*cost;
end
>> cost
cost
200
72
% b i 20%
Trong mu dng ny th khi biu thc iu kin u tin ng th cc cu lnh sau khng -c kim
tra na, cc cu trc if-else-end cn li -c b qua. Hn na cu lnh else cui c th khng cn cho
vo.
i vi cu trc if-else-end, chng ta cng c th lng vo cc vng lp for v while:
>> EPS = 1;
>> for num = 1:100
EPS = EPS/ 2;
if (1+EPS)< 1
EPS = EPS*2
break
end
end
EPS =
2.2204e-16
>> num
num=
73
53
V d ny -a ra cch khc tnh s eps. Trong v d, khi lnh break -c thc hin th MATLAB
nhy ra khi vng lp n ang thc hin. Khi lnh break xut hin trong mt vng lp for hoc while
trong cc vng lp nng nhau th n ch nhy ra khi mt vng lp cha n ch n khng nhy ra khi
tt c cc vng lp.
11.4 Cu trc switch-case
Khi mt chui cc lnh nh gi da trn mt biu thc th hoc biu thc iu kin vi nhiu gi
tr th khc nhau, ngi ta th-ng dng cu trc switch-case. Cu trc switch-case c dng nh- sau:
switch biu thc iu kin
case gi tr th 1
khi lnh 1
case { gi tr th 2, gi tr th 3, gi tr th 4}
khi lnh 2
otherwise
khi lnh 3
end
y biu thc iu kin phi l dng s hoc dng chui, nu biu thc iu kin l dng s th
lnh case s th xem gi tr ca biu thc c bng gi tr th i hay khng. Nu biu thc iu kin l
mt chui th lnh case s so snh chui vi gi tr th i. Trong v d tr-c, biu thc iu kin -c
em so snh vi gi tr th 1, nu chng bng nhau th khi lnh u tin -c thc hin, m cc khi
lnh tip theo cho n tr-c trng thi end -c b qua, nu chng khng bng nhau th iu kin tip
tc -c em so snh vi gi tr th 2, gi tr th 3, gi tr th 4, nu mt trong cc gi tr ny bng biu
thc iu kin th khi lnh 2 -c thc hin. Nu tt c cc lnh so snh ca case u khng ng th
khi lnh 3 -c thc hin. Ch rng trong cu trc switch-case c it nht mt nhm lnh phi -c
thc hin. Sau y l mt v d v cu trc switch-case:
x = 2.7;
units = 'm';
switch units
% Chuyn x ra centimeters
case {'inch','in'}
y=x*2.54;
case {'feet','ft'}
y=x*2.54*12;
case {'meter','m'}
y=x/ 100;
case {'millimeter','mm'}
y=x*10;
case {'centimeter','cm'}
y=x;
otherwise
disp(['khng bit units: ' units])
y=nan;
end
Khi thc hin v d ny th gi tr cui cng ca y l: y=0.027.
V d: Vn v li xut
74
75
Payment
1.00
2.00
3.00
4.00
5.00
6.00
7.00
8.00
9.00
10.00
11.00
12.00
13.00
14.00
15.00
Amortization Schedule
Balance
Interest
9756.63
74.17
9511.46
72.36
9264.48
70.54
9015.65
68.71
8764.99
66.87
8512.46
65.01
8258.07
63.13
8001.78
61.25
7743.60
59.35
7483.49
57.43
7221.47
55.50
6957.49
53.56
6691.56
51.60
6423.66
49.63
6153.77
47.64
Principle
243.37
245.17
246.99
248.82
250.67
252.53
254.40
256.28
258.19
260.10
262.03
263.97
265.93
267.90
269.89
V d ny minh ho cu trc lp for v if-else-end. N cng minh ho vic s dng script M_file.
tnh ton mt khon cho vay bt k bn ch cn thay i d- liu vo phn u ca ch-ng trnh v bn
chy li n.
V d: Chui ln xung
Vn : cho x0 l mt s nguyn bt k. Gi s chui xk -c nh ngha nh- sau:
xk+1 = xk/ 2
nu xk l chn
v
xk+1 = 3xk+ 1 nu xk l l
Chui ny c thuc tnh g nu chui s dng li khi xk =1, chui phn k hay hi t v 1.
Gii php: Chng ta ch cn vng lp while xt xem khi no xk= 1 v s dng cu trc
if-else-end thc hin vic tnh ton dy xk. Trong MATLAB th ch-ng trnh nh- sau:
function up_down
% up_down.m script file for up/down sequence proplem
x=zeros(500,1); %preallocate storage for x(k)
x(1)=round(abs(input('Enter a number> ')));
k=1;
while (x(k)>1)&(k<500)
if rem(x(k),2)==0 % x(k) is even
x(k+1)=x(k)/2;
else
% x(k) is old
x(k+1)=3*x(k)+1;
end
k=k+1;
% increment sequence counter
end
x=x(x>0) % keep values generated only and dispay them
M=0:499;
plot(M,x)
Kt qu ca ch-ng trnh ny kh th v, v d vi x=2m , trong m l mt s nguyn th chui s
rt ngn (ti sao?), hn na bt c khi no gi tr ca mt s hng trong chui l lu tha ca 2 th
76
chui s nhanh chng dng li, nh-ng i vi nhng s x t-ng i nh th kt qu l mt chui kh
th v. V d x1=27. Hu nh- tt c cc gi tr ban u u sinh ra mt chui c gi tr rt ngu nhin
nh- hnh v d-i y vi x(1)=837799. Liu bn c dm kt lun chui ny hi t hay khng!
th kt qu ca ch-ng trnh vi x(1)=837799 l:
Hnh 11.1
--------------------oOo------------------ch-ng 12
HM M_FILE
Khi bn s dng cc hm MATLAB nh- inv, abs, angle, v sqrt, MATLAB nhn gi tr m bn
truyn vo, da vo kt qu , tnh ton kt qu ca hm v tr li cho bn kt qu tnh ton. Cc lnh
tnh ton bng hm cng nh- cc bin trung gian -c to ra bi cc lnh ny bn u khng nhn thy,
tt c nhng g bn trng thy ch l cc gi tr nhp vo v cc gi tr -a ra, v vy c th coi mt hm
nh- mt ci hp en. Cc thuc tnh ny lm cho hm tr ln rt hu dng i vi cc lnh tnh ton m
phi dng n cc hm ton hc phc tp th-ng xut hin khi bn gii quyt nhng vn ln. Da
vo -u im ny, MATLAB cung cp mt cu trc bn c th t to mt hm cho mnh d-i dng
mt M_file. Hm flipup d-i y l mt v d v vic dng hm M_file:
function y=flipup(x)
% FLIPUP Flip matrix in up/down directiopn.
% FLIPUP(x) return x with columns preserved and rows flipped
% in the up/down direction. For example.
%
% x = 1 4
becomes
3 6
%
2 5
2 5
%
3 6
1 4
%
%
See also FLIPLR, ROT90, FLIPDIM.
%
Copyright (c) 1984-96 by the MathWork, Inc.
%
$Revision:
5.3 $ $Date: 1996/10/24 18: 41: 14 $
if ndim(x)~=2
error( X must be a 2-D matrix.);
end
[m, n] = size(x);
y = x(m: -1: 1, :);
77
78
y nu li gi ca ng-i s dng ch truyn vo hai i s th linespace tr v gi tr 100, nh-ng nu s i s l 3, v d nh- linespace(0,10,50) th i s th 3 s quyt nh s cc im
d liu.
*) Cc hm c th dng chung cc bin vi hm khc, vi mi tr-ng MATLAB v c th quy nu
nh- cc bin -c khai bo l ton cc. c th truy cp n cc bin trong mt hm hoc trong mi
tr-ng MATLAB th cc bin phi -c khai bo l bin ton cc trong mi hm s dng n. Hm
tic v toc sau y m t mt v d v vic s dng bin ton cc:
function tic
% TIC Start a stopwatch timer.
%
The sequence of lnhs
%
TIC, operation, TOC
%
prints the time required for the operation.
%
%
See also TOC, CLOCK, ETIME, CPUTIME.
%
Copyright (c) 1984-96 by the MathWork, Inc.
%
$Revision:
5.3 $ $Date: 1996/10/24 18: 41: 14 $
% TIC simple stores CLOCK in a global variable
global TICTOC
TICTOC = clock;
function t = toc
% TOC Read the stopwatch timer.
%
TOC, by itself, prints the elapsed time in t,
% instead of
printing it out.
%
%
See also TIC, ETIME, CLOCK, CPUTIME.
%
Copyright (c) 1984-96 by the MathWork, Inc.
%
$Revision:
5.3 $ $Date: 1996/10/24 18: 41: 14 $
%
TOC uses ETIME and the value of clock saved by TIC.
global TICTOC
if nargout< 1
elapsed_time = etime(clock, TICTOC);
else
t = etime(clock, TICTOC);
end
Trong hm tic th bin TICTOC -c khai bo l bin ton cc v gi tr ca bin ny c -c thng
qua vic gi hm clock. Sau trong hm toc, bin TICTOC cng -c khai bo l bin ton cc lm
cho toc c kh nng truy cp n bin TICTOC trong hm tic, s dng gi tr ca bin ny toc s tnh
-c khong thi gian tri qua k t khi hm tic -c thi hnh. Mt iu quan trng cn nh l bin
79
TICTOC ch tn ti trong khng gian lm vic ca tic v toc nh-ng khng tn ti trong mi tr-ng
MATLAB.
*) Vic thi hnh hm M_file s kt thc khi gp dng cui cng ca file hoc gp dng lnh
return. Lnh return gip ta kt thc mt hm m khng cn phi thi hnh ht cc lnh ca hm .
*) Hm error ca MATLAB s hin th mt chui ln ca s lnh v dng thc hin hm, tr iu
khin v cho ca s lnh v bn phm. Hm ny rt hu dng cnh bo vic s dng hm khng
ng mc ch. V d nh- cu lnh sau:
if
end
length(val) > 1
error(VAL phi l gi tr s!)
80
V d: Gii m mu trn cc in tr
Vn : Gi tr ca mt in tr dng trong mch in -c tnh thng qua cc vch mu in trn thn
ca n. i vi mt in tr vi chnh xc l 5% th c 3 di mu, tm gi l A, B, C. Gi tr s -c
gn cho mi mu -c tnh nh- sau:
81
Mu
Gi tr
en
0
Nu
1
Vng
3
Lc
4
Lam
5
Trm
6
Tm
7
Xm
8
Trng
9
Nu A, B, C l cc gi tr ca cc mu trn gii mu th gi tr ca cc in tr l:
R = (10.A + B).10C
S dng cc thng tin ny, hy to mt M_file tr v gi tr ca in tr ng vi bt k mt in tr
chun no.
Gii php: Vn ny yu cu mt chui cc thao tc v so snh thc hin s chuyn i trong
bng trn. Gii php ca MATLAB l:
function r=resistor(a, b, c)
%RESISTOR(A, B, C) Resistor value from color code.
%RESISTOR(a, B, C) returns the resistace
%value of resistor
%given its three color bands, A, B, C.
%A, B, C must be one of the
%following character strings:
%
%'black', 'brown', 'red', 'orange', 'yellow',
%'green', 'blue', 'violet', 'gray', 'white'
% first some error checking
if nargin~=3
error('Three input arguments required')
end
if ~ischar(a)|~ischar(b)|~ischar(c)
error('Inputs Must be Character Xus')
end
%now solve problem
vals=zeros(1,3);
% string cell array of three inputs
abc={a,b,c};
% tring cell aray thr input
for i=1:3
%do each color band in turn
band=lower(abc(i));
%get (i)th input and make lower case
if strncmp(band,'bla',3) % black (compare min # of)
vals(i)=0;
% chars for unique match)
elseif strncmp(band,'br',2) %brown
vals(i)=1;
elseif strncmp(band,'r',1)
%red
vals(i)=2;
elseif strncmp(band,'o',1)
%orange
vals(i)=3;
elseif strncmp(band,'y',1)
%yellow
vals(i)=4;
elseif strncmp(band,'gre',3) %green
vals(i)=5;
elseif strncmp(band,'blu',3) %blue
vals(i)=6;
elseif strncmp(band,'v',1)
%violet
vals(i)=7;
elseif strncmp(band,'gra',3) %gray
vals(i)=8;
elseif strncmp(band,'w',1)
%white
vals(i)=9;
else
error(['Unknown Color Band.'])
end
82
end
if vals(1)==0
error('First Color Band Cannot Be Black.')
end
r=(10*vals(1)+vals(2))*10^vals(3);
S dng hm ny cho mt vi v d:
>> resistor('brown', 'black', 'red')
ans=
1000
------------------------oOo-----------------------
ch-ng 13
PHN TCH D LIU
Bi v MATLAB l mt ng dng h-ng ma trn nn n d dng thc hin cc phn tch thng k
trn cc tp d liu, trong khi theo mc nh MATLAB coi cc tp d liu -c l-u tr trong cc mng
ct, vic phn tch d liu c th thc hin theo bt c chiu no. l tr khi -c ch nh theo mt
cch khc, cc ct ca mt mng d liu th hin cc thng s o khc nhau, mi hng th hin mt gi
tr mu ca cc thng s o . V d gi s nhit ban ngy (tnh theo C) ca 3 thnh ph tnh
trong mt thng (31 ngy -c ghi li v gn cho mt bin l temps trong mt script M_file, khi chy
M_file th gi tr ca temps -c a vo mi tr-ng MATLAB, thc hin cng vic ny, bin temps
cha:
>> temps
temps=
12
15
12
14
12
11
15
8
19
12
14
8
9
5
8
6
9
9
10
7
7
10
18
22
19
23
22
19
15
20
18
18
19
11
9
8
15
8
10
12
9
12
12
10
13
9
10
14
12
13
15
13
12
8
7
8
8
10
7
7
8
8
8
9
12
10
6
7
5
7
10
11
12
17
23
19
18
20
17
22
19
21
20
17
18
20
22
21
22
18
23
24
22
83
84
Hnh 13.1
Lnh plot va dng trn y minh ho thm mt cch s dng. Bin d l mt vector di 31, trong
khi bin temps l mt ma trn 31x3. Cho tr-c nhng d liu ny, lnh plot s trc mi ct ca bin
temps cho vo d.
minh ho mt vi kh nng phn tch d liu ca MATLAB, hy xt cc lnh sau, da trn d
liu v nhit cho:
>> avg_temp = mean(temps)
avg_temp=
11.9677
8.2258
19.8710
V d trn ch ra rng thnh ph th 3 l c nhit trung bnh cao nht, y MATLAB tnh
nhit trung bnh ca mi ct mt cch ring r. Nu tnh trung bnh c 3 thnh ph th:
>> avg_avg = mean(avg_temp)
avg_avg=
13.3548
Khi m cc gi tr u vo trong mt hm phn tch d liu l mt vector hng hay ct th MATLAB
ch n gin l tin hnh cc php ton trn vector v tr v gi tr s.
Bn cng c th dng mng thc hin cng vic ny:
>> avg_temp = mean(temps,1) % Ging nh- trn, tnh cho cc ct
avg_temp =
11.9677
8.2258
19.8710
>> avr_tempr = mean(temps,2)
% Tnh cho mi hng
avr_tempr =
12.6667
15.3333
12.0000
15.0000
13.3333
13.0000
13.0000
12.6667
14.6667
12.3333
14.3333
12.0000
13.0000
11.6667
13.6667
12.3333
11.3333
13.6667
12.0000
13.6667
13.3333
12.0000
14.3333
13.0000
12.6667
14.0000
13.0000
12.6667
16.0000
16.0000
15.3333
85
3.0323
1.0323
0.0323
1.7742
2.7742
3.7742
3.1290
4.1290
2.1290
86
Khi thc hin ph-ng php ny ta thy n chm hn so vi cc cu lnh -c MATLAB thit k
ring dng cho mng. Khi ta nhn bn bin avg_temp kch th-c ca n bng vi kch th-c
ca temps. Sau thc hin php tr th s nhanh hn rt nhiu:
>> tdev = temps - avg_temp(ones(31,1),:)
tdev =
0.0323
-0.2258
-1.8710
3.0323
0.7742
2.1290
0.0323
-3.2258
-0.8710
2.0323
-0.2258
3.1290
0.0323
-2.2258
2.1290
-0.9677
0.7742
-0.8710
3.0323
0.7742
-4.8710
-3.9677
1.7742
0.1290
7.0323
-1.2258
-1.8710
0.0323
-1.2258
-1.8710
2.0323
1.7742
-0.8710
-0.9677
-0.2258
-2.8710
-2.9677
-1.2258
3.1290
-3.9677
-0.2258
-0.8710
3.0323
-0.2258
-1.8710
-3.9677
0.7742
0.1290
-1.9677
-1.2258
-2.8710
0.0323
-1.2258
2.1290
-2.9677
-0.2258
-0.8710
0.0323
-0.2258
1.1290
0.0323
-0.2258
0.1290
-1.9677
0.7742
-2.8710
1.0323
3.7742
-1.8710
-2.9677
1.7742
0.1290
-1.9677
-2.2258
2.1290
2.0323
-1.2258
1.1290
0.0323
-3.2258
2.1290
1.0323
-1.2258
-1.8710
3.0323
1.7742
3.1290
1.0323
2.7742
4.1290
0.0323
3.7742
2.1290
y avg_temp(ones(31,1),:) s nhn bn hng u tin (v l hng duy nht) ca bin
avg_temp thnh 31 bn, to ln mt ma trn 31x3. Trong ct th i chnh l avg_temp(i).
>> max_temp = max(temps)
max_temp=
19
12
24
Cu lnh tm ra nhit ln nht mi thnh ph trong thng .
>> [max_temp,x] = max(temps)
max_temp=
x=
19
12
87
24
9
23
30
Cho bit gi tr nhit ln nht mi thnh ph v gi tr ch s hng x, ti gi tr ln nht xut
hin, trong v d ny x cho bit ngy nng nht trong thng.
>> min_temp = min(temps)
min_temp=
8
15
2.2322
= diff(temps)
4
-3
4
-1
-3
-4
5
-2
0
1
-2
6
-4
-1
2
-3
5
-3
2
-1
-3
1
-4
1
4
-2
1
2
-2
-1
-2
-4
1
-2
2
3
1
1
88
2
2
-1
1
-4
5
1
-2
Cho bit s khc nhau v nhit gia cc ngy lin tip chnh l chnh lch nhit ca ngy
hm sau so vi ngy hm tr-c. Trong v d ny, hng u tin ca daily_change l chnh lch
nhit gia ngy u tin v ngy th hai trong thng.
13.1 Cc hm phn tch d liu
Phn tch d liu trong MATLAB -c thc hin thng qua cc ma trn h-ng ct, cc bin khc
nhau -c l-u gi trong cc ct khc nhau v mi hm th hin gi tr ca bin mt thi im quan
st nht nh. Cc hm thng k ca MATLAB gm c:
Cc hm phn tch d liu
cplxpair(x)
cross(x,y)
cumprod(x)
cumprod(x,n)
cumsum(x)
cumsum(x,n)
cumtrapz(x,y)
cumtrapz(x,y,n)
del2(A)
diff(x)
diff(x,m)
diff(x,m,n)
dot(x,y)
gradient(Z,dx,dy)
histogram(x)
max(x), max(x,y)
max(x,n)
mean(x)
mean(x,n)
median(x)
median(x,n)
min(x), min(x,y)
min(x,n)
prod(x)
prod(x,n)
rand(x)
randn(x)
sort(x)
sort(x,n)
sortrows(A)
std(x), std(0)
std(x,1)
Xp xp cp phc lin hp
Tch cho vector
Tch tch lu theo ct
Tch tch lu theo chiu n
Tng tch lu theo ct
Tng tch lu theo chiu n
Tch cho tch lu
Tch cho tch lu theo chiu n
Ton t ri rc Laplacian 5 im
Tnh chnh lch gia cc phn t
Tnh s ra cp m ca cc phn t
Tnh s ra cp m ca cc phn t theo chiu n
Tch v h-ng ca hai vector
Gradient vi phn
Biu hnh ct
Phn t ln nht
Phn t ln nht theo chiu n
Gi tr trung bnh ca ct
Gi tr trung bnh theo chiu n
Gi tr ca phn t gia ca ct
Gi tr ca phn t gia theo chiu n
Phn t nh nht
Phn t nh nht theo chiu n
Tch cc phn t trong ct
Tch cc phn t theo chiu n
S ngu nhin phn b u
S ngu nhin phn b bnh thng
Xp xp cc ct theo th t tng dn
Xp xp theo chiu n
Xp xp cc hng theo th t tng dn
lch chun ca ct chun ho theoN-1
lch chun ca ct chun ho theoN
std(x, flag, n)
subspace(A,B)
sum(x)
sum(x,n)
trapz(x,y)
trapz(x,y,n)
89
---------------------oOo------------------ch-ng 14
A THC
14.1 Cc nghim ca a thc
Tm nghim ca a thc l gi tr a thc bng khng, l mt bi ton th-ng gp trong thc
t. MATLAB gii quyt nhng bi ton ny v ng thi cung cp nhng cng c tnh ton a thc.
Trong MATLAB mt a thc -c biu din bng mt vector hng cc h s vi bc gim dn. V d
a thc
x4-12x3+25x+116 -c nhp vo nh- sau:
>> p = [1
p=
1
-12
-12
25
116]
0
25
116
90
16];
75
84
64
d]
20
52
81
96
84
91
f=
1
6
20
52
81
96
84
Kt qu cng ging nh- a thc e trn. Tt nhin polyadd cng c th dng thc hin php tr.
>> g = polyadd(c,-d)
g=
1
6
20
48
69
72
44
14.4 Chia hai a thc
Trong mt s tr-ng hp ta phi chia a thc ny cho mt a thc khc, trong MATLAB cng vic
ny -c thc hin bi hm deconv, s dng cc a thc b v c trn ta c:
>> [q,r] = deconv(c,b)
q=
1
2
3
r=
0
0
0
4
0
80
144
138
72
-7
-10];
92
Hnh 14.1
i khi bn gp nhng bi ton lin quan n t s ca hai a thc hay cn gi l phn thc hu t,
v d nh- cc hm truyn hay cc hm xp x pade c dng nh- sau:
Trong MATLAB phn thc cng -c m phng bng hai a thc ring r.
V d nh-:
>> n=[1 -10 100]
% a numerator
n =
1
-10
100
>> d=[1 10 100 0]
% a dimominator
d =
1
10
100
0
>> z=roots(n)
% the zeros of n(x)/d(x)
z =
5.0000 + 8.6603i
5.0000 - 8.6603i
>> p=roots(d)
% the poles of n(x)/d(x)
p =
0
-5.0000 + 8.6603i
-5.0000 - 8.6603i
o hm ca phn thc ny theo bin x -c tnh da trn hm polyder:
>> [nd,dd]=polyder(n,d)
nd =
93
-1
20
-100
-2000
-10000
dd =
Columns 1 through 6
1
20
300
2000
10000
0
Column 7
0
y nd v dd l t thc v mu thc ca o hm. Mt thao tc thng th-ng khc l tm phn d ca
phn thc.
>> [r,p,k]=residue(n,d)
r =
0.0000 + 1.1547i
0.0000 - 1.1547i
1.0000
p =
-5.0000 + 8.6603i
-5.0000 - 8.6603i
0
k =
[]
Trong tr-ng hp ny hm residue tr v cc h s m rng phn thc tng phn r, cc nghim ca
phn thc l p v phn th-ng chia ht ca phn thc l k. Nu bc ca t s nh hn bc ca mu s
th phn thc chia ht s bng khng. Trong v d trn th m rng phn thc tng phn ca phn thc
cho l:
Nu cho tr-c cc a thc ny th phn thc ban u s tm -c bng cch s dng hm residue:
>> [nn,dd]=residue(r,p,k)
nn =
1.0000 -10.0000 100.0000
dd =
1.0000
10.0000 100.0000
V vy trong tr-ng hp ny, hm residue c th thc hin -c vic chuyn i hai chiu tu thuc
vo s l-ng cc tham s vo v ra truyn cho n.
--------------------oOo------------------
ch-ng 15
php ni suy v mn ho -ng cong
94
Trong cc lnh vc ng dng s, nhim v ca chng ta l phi biu din s liu, th-ng l cc
s o bng cc chc nng phn tch. C hai cch gii quyt vn ny, trong ph-ng php ni im
(interpolation) th d liu -c coi l ng v ci chng ta cn l cch biu din d liu khng nm gia
cc gi tr o -c, theo ph-ng php th hai gi l ph-ng php mn ho ng cong (curve fitting or
regression), bn tm mt ng cong khng gy khc m ph hp nht vi d liu c, nh-ng khng
cn thit phi i qua mt cch chnh xc bt k mt in no trn bng s liu. H15.1 minh ho hai
ph-ng php trn, ch o nh du cc im biu din d liu, cc on thng bng nt lin ni cc -ng biu din d liu li vi nhau theo phng php ni im cn -ng chm chm l mt ng cong
v theo ph-ng php mn ho d liu.
15.1 Mn ho -ng cong
Ph-ng php mn ho -ng cong lin quan n vic tr li hai cu hi c bn, l -ng cong
th no th ph hp vi d liu nht v cu hi th hai l phi s dng loi -ng cong no. Ph hp
nht c th hiu theo nhiu cch v do c nhiu -ng cong, v vy chng ta phi bt u t u?.
Nu ph hp nht l gim nh n mc ti thiu tng sai s qun ph-ng ti mi im biu din d
liu, so vi gi tr t-ng ng trn -ng cong th -ng cong ph hp nht s l mt -ng thng v
mt ton m ni ph-ng php ny -c gi l ph-ng php xp x a thc. Nu nh- khi nim ny cn
kh hiu i vi bn th xin hy xem li hnh 15.1 khong cch theo chiu dc gia -ng cong d liu
v cc im biu din d liu gi l sai s ca im , bnh ph-ng khong cch ny ln v cng tt c
chng li ta c tng bnh ph-ng sai s. -ng cong chm chm l -ng cong lm cho bnh ph-ng
sai s l nh nht v -c gi l -ng cong ph hp nht. T qun ph-ng b nht l cch ni tt
ca cm t Tng bnh phng sai s b nht.
Hnh 15.1
Trong MATLAB hm polyfit s gii quyt vn xp x -ng cong qun ph-ng b nht.
minh ho cho vic s dng hm ny, chng ta hy bt u bng cc d liu c trong hnh v.
>> x = [0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1];
>> y =[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
95
s dng hm polyfit, chng ta phi truyn cho n d liu trn v bc ca a thc m chng ta
mun ph hp vi d liu, nu chng ta chn bc n l 1 th -ng cong xp x gn nht s l -ng
thng. Ph-ng php ny -c gi l ph-ng php xp x tuyn tnh. Mt khc nu chng ta chon n=2
th chng ta s tm -c mt tam thc bc hai. V d:
>> n = 2;
>> p = polyfit(x,y,n)
p =
-9.8108
20.1293
-0.0317
Kt qu ca polyfit l mt vector biu din h s ca mt a thc bc hai. y a thc l
y= -9.8108x2+20.1293x-0.0317. so snh mc xp x ca a thc vi cc im d liu
chng ta hy v hai -ng:
>> xi = linspace(0,1,100);
Dng ny to ra d liu trc x chun b v a thc
>> z = polyval(p,xi)
Dng ny gi hm polyval ca MATLAB tnh gi tr ca a thc p ti cc im xi
>> plot(x,y,'-o',xi,z,':')
V cc im c to l x v y, nh du cc im ny bng ch o sau ni cc im ny bng cc
on thng. Ngoi ra n cn v d liu ca a thc xi v z dng -ng chm chm.
>> xlabel('x'),ylabel('y=f(x)')
>> title('Second Oder Curver Fitting')
To nhn cho -ng cong va v. Kt qu ca cc lnh trn y l mt th -c gii thiu
trn.
Vic chn bc ca a thc khng phi l ngu nhin, nu c hai im th xc nh mt -ng thng,
tc l mt a thc bc nht, ba im th xc nh mt parabol bc hai. C nh- vy, xc nh mt -ng cong bc n, cn c n+1 im. V vy, trong v d tr-c c 11 im d liu, chng ta c th chn
bc ca a thc l t 1 n 10. Tuy nhin, do tnh cht s hc ca cc a thc bc cao rt phc tp nn
bn khng nn chn bc ca a thc ln hn mc cn thit. Ngoi ra khi bc ca a thc tng ln th s
xp x cng km hn, v vy cc a thc bc cao c th b o hm nhiu ln tr-c khi o hm ca
chng bng khng. V d cho mt a thc bc 10:
>> pp = polyfit(x,y,10)
pp =
1.0e+006 *
Columns 1 through 7
-0.4644
2.2965
-4.8773
5.8233
-4.2948
0.6032
Columns 8 through 11
0.1090
-0.0106
0.0004
-0.0000
>> format short e
% change display format
>> pp.' % display polynomial coefficients as a column
ans =
-4.6436e+005
2.2965e+006
2.0211
96
-4.8773e+006
5.8233e+006
-4.2948e+006
2.0211e+006
-6.0322e+005
1.0896e+005
-1.0626e+004
4.3599e+002
-4.4700e-001
L-u kch th-c ca vector h s a thc trong tr-ng hp ny so vi -ng cong bc hai tr-c y,
ng thi cng lu s khc nhau gia s hng nh nht v s hng ln nht trong a thc vo khong
107. Hy th v -ng cong ny v so snh vi d liu gc v vi -ng cong bc hai.
>>
>>
>>
>>
Hnh 15.2
Trn hnh 15.2, d liu gc -c nh du o, -ng cong bc hai -c v bng nt chm chm, cn
-ng cong bc 10 -c v bng nt m. n nt gn sng xut hin gia cc im d liu bn
pha tri v bn pha phi ca -ng cong bc 10. Da vo th ny th r rng rng ci chit l cng
nhiu cng tt khng th p dng -c y.
15.2 Ni im mt chiu
Nh- gii thiu th ni im -c nh ngha nh- l mt ph-ng php d on gi tr ca hm
gia nhng im cho tr-c. Ni im l mt cng c hu hiu khi chng ta khng th nhanh chng
97
tinh -c gi tr ca hm ti cc im trung gian. Ph-ng php ny -c s dng rng ri i vi d
liu l gi tr ca cc php o thc nghim hoc l kt qu ca cc chui tnh ton di. C th v d n
gin nht ca vic ni im chnh l ph-ng php v tng im ca MATLAB, tc l v nhng on
thng ni nhng im d liu lin tip to ln mt th.
y l ph-ng php ni im tuyn tnh, n cho rng cc gi tr ca hm nm gia hai im cho tr-c s ri vo khong gia hai u ca on thng ni hai im . Hin nhin l khi s l-ng cc im
d liu tng ln v khong cch gia chng gim i th ph-ng php ni im tuyn tnh cng tr ln
chnh xc.
>>
>>
>>
>>
>>
x1 = linspace(0,2*pi,60);
x2 = linspace(0,2*pi,6);
plot(x1,sin(x1),x2,sin(x2),'-')
xlabel('x'),ylabel('sin(x)')
title('Linear Interpolation')
Hnh 15.3
C hai th cng v mt hm sine nh-ng th 60 im th mn hn th 6 im.
Cng ging nh- ph-ng php xp x ho -ng cong, y chng ta cng phi thc hin mt s
la chn, c rt nhiu cch ni hai im, tu thuc vo gi nh m chng ta la chn. Hn na
chng ta c th ni cc im trong khng gian khng phi l mt chiu. Ni nh- th nu bn c d liu
phn nh mt hm ph thuc vo hai bin z=f(x,y), bn c th ni gi tr nm gia hai im c x v y
khc nhau tm ra gi tr trung gian ca hai im. MATLAB cung cp mt s hm ni l : interp1
ni cc d liu mt chiu, interp2 ni cc d liu hai chiu, interp3 ni cc d liu ba chiu, interpn
ni cc d liu c s chiu ln hn 3.
Sau y chng ta s xem xt cc d liu mt v hai chiu. minh ho vic ni d liu mt chiu,
hy xt v d sau, kh nng ca thnh gic, v d nh mc m thanh b nht hay cn gi l ng-ng nghe
ca tai ngi thay i theo tn s, d liu do ng-i thng k -c cho nh- sau:
98
>>
>>
>>
14
-8
>>
semilogx(Hz,spl,'-o')
xlabel('Frequency, Hz')
ylabel('Relative Sound Presure Level1, dB')
title('Threshold of Human Hearing')
Da vo hnh 15.4 ta thy tai ng-i nhy cm ht i vi cc m thanh trong khong 3kHz. Da
vo cc s liu ny, chng ta hy d on ng-ng nghe tn s 2,5kHz bng mt vi cch khc nhau.
>> s = interp1(Hz,spl,2.5e3)
%linear interpolation
s =
-5.5000e+000
>> s = interp1(Hz,spl,2.5e3,'linear') %linear interpolation again
s =
-5.5000e+000
>> s = interp1(Hz,spl,2.5e3,'cubic') % cubic interpolation
s =
-5.8690e+000
>> s = interp1(Hz,spl,2.5e3,'spline') % spline interpolation
s =
-5.8690e+000
>> s = interp1(Hz,spl,2.5e3,'nearest')% nearest-neighbor
s =
-8
Hy n s khc nhau trong cc kt qu, hai gi tr u tin tr v mt cch chnh xc gi tr -c v trn hnh ti tn s 2,5kHz bi v MATLAB ni cc im mt cch tuyn tnh gia cc
im d liu trn th cc -ng cong a thc, v d nh- a thc bc 3 s xp x ho cc im trn
th theo cc cch khc nhau, kt qu l cc -ng cong ny t-ng i ph hp vi cc d liu m n i
qua trn th nh-ng khc bit kh xa so vi ph-ng php ni bng -ng thng.
99
Hnh 15.4
V vy bn chn cch no gi quyt mt bi ton cho tr-c?, trong nhiu tr-ng hp th ch cn
ni mt cch tuyn tnh l , trong thc t th chnh l ph-ng php mc nh khi cc -ng cong
cng gn vi cc on thng th cng km chnh xc nh-ng ng-c li tc tnh ton nhanh, iu ny
c bit quan trng khi tp d liu ln. Mt ph-ng php tiu tn nhiu thi gian, cho ra kt qu p
mt nh-ng khng hiu qu. Trong thc t mt trong nhng tc dng ch yu ca ph-ng php ni im
bng hm bc 3 hoc cao hn l mn ho d liu, c ngha l cho tr-c mt tp d liu ta c th dng
ph-ng php ny tnh ra gi tr ca hm nhng thi im nht nh bt k. V d:
>>
>>
>>
>>
>>
>>
>>
>>
>>
Hzi = linspace(2e3,5e3);
% look closely near minimum
spli = interp1(Hz,spl,Hzi,'cubic');% interpolate near minimum
i = find(Hz>=2e3&Hz<=5e3);
% find original data indices near minimum
semilogx(Hz(i),spl(i),'-o',Hzi,spli) % plot old and new data
xlabel('Frequency, Hz')
ylabel('Relative Sound Presure Level1, dB')
title('Threshold of Human Hearing')
grid on
100
Hnh 15.5
Trn hnh 15.5 -ng gch gch s dng ph-ng php ni im tuyn tnh, -ng lin nt l mt
hm bc 3, cn nhng im d liu gc -c nh du bi ch o. Bng cch nng cao phn gii trn
trc tn s v s dng -ng bc 3 th cc s liu v ng-ng nghe m chng ta d on -c s mn
hn.
Cn ch rng dc ca -ng bc 3 khng thay i mt cch t ngt khi i qua im d
liu nh- l khi s dng ph-ng php ni tuyn tnh. Vi b d liu trn chng ta c th d on -c
tn s m ti tai ngi nhy cm nht i vi m thanh.
>> [sp_min,i] = min(spli)
% minimum and index of minimum
sp_min =
-8.4245e+000
i =
45
>> Hz_min = Hzi(i)
% frequency at minimum
Hz_min =
3.3333e+003
Tai ng-i nhy cm nht i vi m thanh c tn s khong 3.3kHz. Tr-c khi cp n vic xp
x ho hai chiu th chng ta cn nhn r hai hn ch ln ca interp1 l: Th nht khi yu cu tnh ton
ngoi khong ca mt bin c lp. V d nh interp1(Hz, spl, 1e5) th s sinh ra kt qu NaN.
Th hai l cc bin c lp phi n iu, ngha l cc bin c lp phi lun tng hoc l lun
gim. Trong v d trn ca chng ta th trc tn s Hz lun tng.
15.3 Xp x ho hai chiu
101
Xp x ho hai chiu da trn cng mt nguyn l ca xp x ho mt chiu. Tuy nhin nh- tn
ca n ch ra, xp x ho hai chiu l xp x mt hm ph thuc vo hai bin c lp
z = f(x, y). hiu r khi nim ny, ta hy xt v d sau:
Mt cng ty thm him i d-ng, cn thm him mt vng bin, c 0.5Km theo hnh vung th
su ca y bin li -c o v ghi li mt phn ca d liu thu thp -c l-u trong mt ch-ng trnh
MATLAB d-i dng mt M_file c tn l ocean.m nh- sau:
function ocean
% ocean depth data
x=0:.5:4; % x-axis (veries across the rows of z)
y=0:.5:6; % y-axis ( varies down the columns of z)
z=[100
99 100
99 100
99
99
99 100
100
99
99
99 100
99 100
99
99
99
99
98
98 100
99 100 100 100
100
98
97
97
99 100 100 100
99
101 100
98
98 100 102 103 100 100
102 103 101 100 102 106 104 101 100
99 102 100 100 103 108 106 101
99
97 99
100 100 102 105 103 101 100
100 102 103 101 102 103 102 100
99
100 102 103 102 101 101 100
99
99
100 100 101 101 100 100 100
99
99
100 100 100 100 100
99
99
99
99
100 100 100
99
99 100
99 100
99];
th ca d liu trn -c v bi cc lnh sau:
mesh(x,y,z)
xlabel('X-axis, Km')
ylabel('Y-axis, Km')
zlabel('Ocean depth, m')
title('Ocean depth Measurements')
Hnh 15.6
S dng cc d liu ny th su ca mt im bt k nm trong khu vc kho st c th tnh -c da vo hm interp2. V d:
>> zi = interp2(x,y,z,2.2,3.3)
102
zi =
1.0392e+002
>> zi = interp2(x,y,z,2.2,3.3,'linear')
zi =
1.0392e+002
>> zi = interp2(x,y,z,2.2,3.3,'cubic')
zi =
1.0419e+002
>> zi = interp2(x,y,z,2.2,3.3,'nearest')
zi =
102
Cng ging nh- trong tr-ng hp xp x ho mt chiu, xp x ho hai chiu cng c nhiu ph-ng
php, m ph-ng php n gin nht l ph-ng php ni bng on thng, hay cn gi l ni tuyn
tnh. Mt ln na chng ta c th xp x ho cho th tr ln mn hn vi phn gii cao hn:
xi=linspace(0,4,30);
% finer x-axis
yi=linspace(0,6,40);
% finer y-axis
[xxi,yyi]=meshgrid(xi,yi);
% grid of all combinations of xi and yi
zzi=interp2(x,y,z,xxi,yyi,'cubic'); % interpolate
mesh(xxi,yyi,zzi)
% smoothed data
hold on
[xx,yy]=meshgrid(x,y); % grid original data
plot3(xx,yy,z+0.1,'ok')
% plot original data up a bit to show nodes
hold off
Hnh 15.7
y hm meshgrid -c dng to mng xp x ho bao ph ton b nhng im yu cu nm
trong im kho st. Nh- trong hnh 15.7, hm meshgrid thc hin iu bng cch to ra mt mng
hai chiu da trn cc vector xi v yi, s dng mng ny chng ta c th d on -c ch nng nht
ca y bin.
>> zmax = max(max(zzi))
zmax=
108.05
>> [i,j] = find(zmax==zzi);
>> xmax = xi(j)
xmax=
2.6207
>> ymax = yi(j)
ymax=
2.9231
-----------------oOo-------------------
103
ch-ng 16
phn tch s liu
Cho d vic gii mt bi ton tch phn hoc tnh gi tr ca mt hm l t-ng i phc tp, nh-ng i vi my tnh th ch n gin l vic x l cc s liu. Lnh vc ny ca tin hc v ton hc
-c gi l x l s liu. Nh- bn c th d on, MATLAB cung cp cc cng c gii quyt vn
ny. Trong ch-ng trnh nychng ta xem xt cch s dng cc cng c .
16.1 V th
Cho n thi im ny th vic v th ca mt hm vn ch n gin da trn vic tnh gi tr ca
hm ti mt s im ri rc, v dng cc im biu din cc hm ti cc gi tr ri rc . Trong
nhiu tr-ng hp th gii php ny l c th chp nhn -c. Tuy nhin c mt s hm th t-ng i
bng phng mt s khong no nh-ng li tr ln t bin mt s gi tr nht nh. S dng ph-ng php v truyn thng trong tr-ng hp ny c th lm mt i tnh chn thc ca th. V vy
MATLAB cung cp cho ta mt hm v th thng minh, gi l fplot. Hm ny tnh ton mt cch cn
thn hm s cn v v m bo mt cch chc chn rng tt c cc im c bit -c biu din trn
th. Hm flot nhn vo l tn ca hm cn v di dng mt chui k t, v gi tr cn v di dng mng
gm hai phn t cha gi tr u v gi tr cui.
V d:
>> fplot('humps',[0 2])
>> title('FPLOT of humps')
Tnh cc gi tr ca hm humps nm gia 0 v 2 v th hin th trong hnh 16.1. Trong v d ny
humps l mt hm M_file thit k sn.
104
Hnh 16.1
105
thng th-ng xy ra khi s dng hm fplot cng ging nh- khi s dng cc hm phn tch s khc
l b quyn du nhy n tn hm cn v. Hm fplot cn du nhy n trnh nhm ln tn hm
vi cc bin trong mi tr-ng MATLAB. i vi cc hm n gin -c biu din bng mt chui cc
k t. V d y = 2.e-xsin(x) th hm fplot c th v -c th ca hm trn m khng cn phi
to ra mt M_file. thc hin iu ch cn vit hm cn v d-i dng mt chui k t c s dng x
l bin s c lp.
>> f = '2*exp(-x).*sin(x)';
y hm
Hnh 16.2
Da trn nhng tnh nng c bn ny, hm fplot c nhng kh nng rt mnh, hy xem phn tr gip
trc tuyn ca MATLAB hiu r hn v cch dng hm ny.
16.2 Cc tr ca mt hm
Ngoi vic s dng ph-ng php v th thu -c nhng thng tin trc quan v hm, chng ta
cn cn phi bit thm nhng thng tin v mt s thuc tnh nht nh ca hm. Trong nhiu tr-ng
hp chng ta cn phi bit cc cc tr ca hm , l cc cc i, cc cc tiu. V mt ton hc th
106
cc tr -c tm theo phng php gii tch bng cch tnh o hm ca hm v tm nhng im
m ti o hm bng 0. iu ny rt d hiu nu bn xem li th ca hm humps ni trn. Nhng
im m th ca hm nh ln cao l nhng im cc i, cn nhng im th lm xung thp
nht l nhng im cc tiu. R rng rng khi hm -c nh ngha mt cch n gin th ph-ng php
gii tch c th d dng thc hin -c, tuy nhin i vi mt s hm cho d vic tnh o hm l kh
d dng th vic tm nghim ca o hm th li khng phi l n gin.Trong nhng tr-ng hp ny, v
trong nhng tr-ng hp kh c th tm ra cch phn tch o hm, th cn thit phi tm hm v cng v
s l-ng. MATLAB cung cp hai hm thc hin vic ny, l fmin v fmins , hai hm ny t-ng ng
tm gi tr cc tiu ca cc hm mt chiu v hm n chiu. Ta ch quan tm n fmin trong phn ny.
Hn na fmin c th tm thy trong help trc tuyn. Bi v max ca f(x) hon ton t-ng -ng vi
min ca -f(x) , nn fmin v fmins , c hai u -c dng tm gi tr ln nht v nh nht.
minh ho php cc tiu ho v cc i ho, hy xem v d tr-c mt ln na.T hnh 16.2 c
mt gi tr cc i gn xmax =0.7 v mt gi tr nh nht gn xmin =4. iu ny c th cho php ta xem
nh xmax=/40.785, xmin=5/43.93. Vit ra mt script-file dng ch son tho thun tin v s dng fmin
tm ra s ny:
function ex_fmin.m
%ex_fmin.m
fn='2*exp(-x)*sin(x)';
% define function for min
xmin=fmin(fn,2,5)
% search over range 2<x<5
emin=5*pi/4-xmin
x=xmin;
ymin=eval(fn)
fx='-2*exp(-x)*sin(x)';
xmax=fmin(fn,0,3)
% find error
% eval needs x since fn has x
% as its variable
% evaluate at xmin
% definr function for max:
% note minus sign
% search over range 0<x<3
emax=pi/4-xmax
% find error
x=xmax;
ymax=eval(fn)
Chy M_file ny th kt qu nh- sau:
xmin =
3.9270
emin =
1.4523e-006
ymin =
-0.0279
xmax =
3.0000
emax =
-2.2146
ymax =
107
0.0141
Kt qu ny hon ton ph hp vi th tr-c . Ch rng fmin lm vic ni chung l nh- fplot.
V d ny cn gii thiu hm eval , hm ny nhn mt xu k t v gii thch n nh- l xu -c nh
vo t du nhc ca MATLAB.
Cui cng, mt iu quan trng cn ch khc l vic ti thiu ho lin quan n vic tm gi tr nh
nht, fmin s -c l-ng hm tm gi tr ny. Qu trnh tm kim s tn thi gian nu nh- hm c mt
l-ng php tnh ln, hoc l hm c nhiu hn mt gi tr cc tiu trong di tm kim. Trong mt s tr-ng hp, qu trnh ny khng tm ra -c p s. Khi m fmin khng tm -c gi tr nh nht th n
dng li v a ra li gii thch.
16.3 Tm gi tr khng
Nu nh- bn quan tm n vic tm kim khi hm tin ra v cng, th i khi rt l quan trng
tm ra khi no hm qua 0 v khi no qua cc gi tr khng i
Mt ln na MATLAB cung cp cho ta cng c gii quyt vn ny. Hm fzero tm gi tr 0
ca mng mt chiu. lm sng t, chng ta cng xem li v d v hm humps mt ln na:
>> xzero = fzero('humps',1.2)
% look for zero near 1.2
xzero =
1.2995
>> yzero = humps(xzero)
% evaluate at zero
yzero =
3.5527e-15
Nh- vy, gi tr 0 gn vi 1.3. Nh- thy trn, qu trnh tm kim gi tr 0 c th khng c kt qu.
Nu khng tm thy , n dng li v a ra gii thch.
Hm frzero bt buc phi -c cung cp tn cho n mi khi n -c gi n. fzero cho bit ti u
hm bng 0 hoc n cn c th tm ra gi tr khi no hm bng hng s. V d tm x f(x)= c,
th ta phi nh ngha li hm g(x) nh- sau: g(x)= f(x)- c, v hm fzero tm gi tr ca x
g(x)= 0, t-ng -ng f(x)= c.
16.4 Php ly tch phn
MATLAB cung cp cho ta ba hm tnh cc php ton lin quan n tch phn: trapz, quad v
quad8. Hm trapz cho ta gi tr xp x tch phn pha d-i hm bng cch ly tng cc min hnh
thang ca cc im d liu nh- trong hnh 16.4.
Nh- thy trong hnh 16.4, cc min hnh thang c lp c gi tr -c l-ng d-i mc thc t. Nu ta
chia nh ra nh- php ni suy tuyn tnh th s xp x ca hm s cao hn. V d nu ta gp i s l-ng
cc hnh thang c, th xp x tng ln nh- hnh
v 16.5.
5 0
4 0
3 0
2 0
1 0
-1 0
-1
-0 . 5
0 .5
1 .5
Hnh 16.4
8 0
7 0
6 0
5 0
4 0
3 0
2 0
1 0
-1 0
-1
-0 . 5
0 .5
1 .5
Hnh 16.5
Tnh ton cc vng ny bng hm y = humps(x) vi -1<x<2 , s dng trapz cho mi hnh trn ta
c:
>> x = -1:.3:2;
>> y = humps(x);
>> area = trapz(x,y)
area =
21.8453
% rough approximation
% call trapz just like the plot command
>> x = -1:.15:2;
>> y = humps(x);
>> area = trapz(x,y)
area =
25.8523
% better approximation
108
Thng th-ng th kt qu ca chng l khc nhau, da trn s l-ng cc min -c chia trong hnh
v. Tuy nhin, khng c g m bo rng qu trnh xp x no l tt hn, ngoi tr s ng n ca
php ton, hin nhin khi bn thay i mt cch c lp cc vng hnh thang, v nh lm cho n nh i
th chc chn l kt qu s chnh xc hn nhiu.
Hm quad v quad8 u l cc hm c cch tnh nh- nhau. S nh gi ca c hai hm l rt cn
thit t kt qu chnh xc. Hn na xp x ca chng l cao hn so vi hnh thang n, vi
quad8 c kt qu chnh xc hn quad. Cc hm ny -c gi ging nh- gi fzero:
>> area = quad('humps',-1,2)
% find area between -1 and 2
area =
26.3450
>> area = quad8('humps',-1,2)
area =
26.3450
bit thm chi tit v hm ny , bn hy xem trn h tr gip ca MATLAB.
16.5 Php ly vi phn
So snh vi php ly tch phn, ta thy php ly vi phn kh hn nhiu. Php ly tch phn cho c
mt vng hoc c tnh v m ca hm trong khi php ly vi phn ch ly ti mt im no y, hay
cn gi l c tnh vi m ca hm. Kt qu l php tnh vi phn s khng n nh khi c tnh ca hnh
thay i trong khi php tnh tch phn th t chu nh h-ng hn.
Bi v php tnh tch phn l kh nn ng-i ta c trnh nhng php tnh no m khng th thc hin
-c, c bit khi d liu ly tch phn l kt qu ca thc nghim. V d, chng ta hy xem xt v d
lm trn hnh trong ch-ng 15:
>> x = [0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1];
>> y = [-.447 1.978 3.28 6.16 7.08 7.34 ...
7.66 9.56 9.48 9.30 11.2]; % data
>> n = 2; % order of fit
>> p = polyfit(x,y,n)
% find polynomial coefficients
p =
-9.8108
20.1293
-0.0317
>> xi = linspace(0,1,100);
>> z = polyval(p,xi);
% evaluate polynomial
>> plot(x,y,'o',x,y,xi,z,':')
>> xlabel('x'),ylabel('y=f(x)')
>> title('Second Order Curve Fitting')
Vi phn trong tr-ng hp ny -c s dng bng cch s dng hm o hm polyder:
>> pd = polyder(p)
pd =
-19.6217
20.1293
Vi phn ca a thcy=-9.8108x2+20.1293x-0.0317ldx/dy= -19.6217x+20.1293. Bi
v o hm ca mt a thc cng -c v v tnh gi tr ging nh- l i vi a thc:
>> z = polyval(pd,xi); % evaluate derivative
>> plot(xi,z)
>> xlabel('x'),ylabel('dy/dx')
>> title('Derivative of a Curve Fit Polynomial')
109
Hnh 16.6
Hnh 16.7
Trong tr-ng hp ny xp x a thc l mt hm bc hai v o hm ca n tr thnh hm bc nht.
MATLAB cung cp mt hm tnh ton o hm mt cch s b da vo d liu m t mt s
hm, hm ny c tn l diff, n tnh ton chnh lch gia cc phn t trong mng. Bi v o hm -c nh ngha nh- sau:
nn o hm ca hm f(x) c th -c tnh mt cch s b da vo cng thc:
khi h>0
Gi l s ra ca y chia cho s ra ca x, do hm diff tnh ton s khc nhau gia cc phn t trong mng
nn o hm c th -c tnh mt cch xp x da vo hm diff:
>>
>>
>>
>>
>>
>>
>>
dy = diff(y)./diff(x);
% compute differences and use array division
xd = x(1:length(x)-1);
% create new x axis array since dy is shorter than y
plot(xd,dy)
title('Approximate Derivative Using DIFF')
ylabel('dy/dx'),xlabel('x')
110
Hnh 16.8
Do hm diff tnh ra s khc nhau gia cc phn t nn kt qu ca v d trn l mt mng c s
phn t t hn mng ban u mt phn t. V vy v -c th ca o hm th phi b i mt phn
t ca mng x. So sng hai th cui cng th thy hin nhin rng o hm tnh bng phng php gn
ng khc xa so vi thc t.
16.6 Ph-ng trnh vi phn
C th bn kh quen vi thc t l rt nhiu h thng vt l u -c m t bng ph-ng trnh vi
phn. Do vy phn sau y i vi bn c th kh hp dn.
Mt ph-ng trnh vi phn th-ng m t tc thay i ca mt bin s trong h thng theo s thay
i ca mt bin khc trong h thng hoc theo kch thch bn ngoi. Ph-ng trnh vi phn thng th-ng c th -c gii nh cc ph-ng php gii tch hoc s dng cng c ton k hiu ca MATLAB.
Trong nhng tr-ng hp m ph-ng trnh vi phn khng th gii -c bng ph-ng php gii tch th
vic s dng ph-ng php s hc tr ln kh hiu qu. minh ho hy xt ph-ng trnh Van Der Pol,
ph-ng trnh biu din mt b dao ng.
Tt c cc ph-ng php ton hc gii ph-ng trnh dng ny u s dng mt ph-ng trnh vi
phn cao cp hn, t-ng -ng vi mt tp ph-ng trnh vi phn bc nht. i vi ph-ng trnh vi phn
trn th cch gii ny -c thc hin bng cch nh ngha hai bin trung gian:
t y1 = x, v y2 =
suy ra:
i vi cc h ph-ng trnh nh- th ny MATLAB cung cp mt tp cc hm ODE gii xp x
ho chng mt cch s hc. Trong quyn h-ng dn ny chng ta khng c kh nng nu ht nhng
ni dung v ng dng ca tng hm trong b ODE. tm hiu thm v cc hmm ODE ng dng
trong rt nhiu bi ton th d, hy g >> odedemo ti du nhc ca MATLAB. Tr-c ht chng ta
hy xt v d sau y, chnh l v d ode45. Chng ta phi vit mt hm M_file tr v cc o hm nu
bit tr-c cc gi tr tc thi ca y1 v y2. Trong MATLAB cc o hm -c cho bi cc vector ct,
111
trong tr-ng hp ny gi l yprime. T-ng t y1 v y2 c vit d-i dng vector ct y. Kt qu
ca mt hm M_file nh- sau:
function yprime=vdpol(t,y);
% VDPOL(t,y) returns the state derivatives of
%
the Van der Pol equation:
%
%
x''-mu*(1-x^2)*x+x=0
%
%
let y(1)=x
and y(2)=x'
%
%
then y(1)'=y(2)
%
y(2)'=mu*(1-y(1)^2)*y(2)-y(1)
mu=2;
% choose 0< mu < 10
yprime=[y(2)
mu*(1-y(1)^2)*y(2)-y(1)]; % output must be a column
Gi s thi gian ko di t 0 n 30 giy, v d tspan=[0 30]. Sau s dng lnh vdpol th li
gii cho bi ton nh- sau:
>> tspan = [0 30];
>> yo = [1;0];
>> ode45('vdpol',tspan,yo);
Khi s dng hm m khng c i s ra, cc hm ODE s t ng chn nhng thi im thch hp
tnh o hm. c th truy nhp -c d liu, ta ch cn cung cp cho hm nhng thng s ra.
>> [t,y] = ode45('vdpol',tspan,yo);
y t l mt vector ct cha nhng thi im tnh o hm, cn y l mt ma trn cha hai ct v
cc hng length(t), hng u tin ca ma trn y cha bin s y(1), hng th hai l bin s
y(2).
Da vo nhng c im ny chng ta c th v -c th pha, l th gia y(2) v y(1):
>> plot(y(:,1),y(:,2))
4
Hnh 16.9
Cc hm ODE ca MATLAB u c tr gip trc tuyn, mi hm u c cc i s cng nh- cch
s dng ring, nu bn mun nghin cu thm th hy tham kho thm phn tr gip trc tuyn ca
chng.
1
-1
-2
-3
-4
1 0
15
2 0
25
3 0
4
3
2
Hnh 16.10
1
0
-1
-2
-3
-4
-3
-2
-1
ch-ng 17
ho trong h to phng
112
>> x = linspace(0,2*pi,30);
>> y = sin(x);
>> plot(x,y)
V d ny to 30 im d liu trong on 0 x 2 theo chiu ngang th, v to mt vector y khc l
hm sine ca d liu cha trong x. Lnh plot m ra mt ca s ho gi l ca s figure, trong ca
s ny n s to chia ph hp vi d liu, v th qua cc im, v th -c to thnh bi vic
ni cc im ny bng -ng nt lin. Cc thang chia s v du -c t ng cp nht vo, nu nhca s figure tn ti, plot xo ca s hin thi v thay vo l ca s mi.
Hnh 17.1
By gi cng v hm sine v cosine trn cng mt th
>> z = cos(x);
>> plot(x,y,x,z)
Hnh 17.2
113
V d ny cho thy bn c th v nhiu hn mt th trn cng mt hnh v, bn ch vic a
thm vo plot mt cp i s, plot t ng v th th hai bng mu khc trn mn hnh. Nhiu -ng
cong c th cng v mt lc nu nh- bn cung cp cc cp i s cho lnh plot.
Nu nh- mt trong cc i s l ma trn v i s cn li l vector, th lnh plot s v t-ng ng mi
ct ca ma trn vi vector :
>> W = [y;z]
% xy dng mt ma trn sine v cosine
>> plot(x,W)
% v cc ct ca W vi x
Hnh 17.3
Nu nh- bn thay i trt t cc i s th th s xoay mt gc bng 90 .
>> plot(W,x)
114
Hnh 17.4
Nu lnh plot -c gi m ch c mt i s, v nh plot(Y) th hm plot s a ra mt kt qu khc,
ph thuc vo d liu cha trong Y. Nu gi tr ca Y l mt s phc, Plot(Y) t-ng -ng vi plot (
real(Y ) ) v plot ( imag(Y ) ), trong tt c cc tr-ng hp khc th phn o ca Y th-ng -c b qua.
Mt khc nu Y l phn thc th plot(Y) t-ng ng vi
plot(1:length(Y), Y).
17.2 Kiu -ng, du v mu
Trong v d tr-c, MATLAB chn kiu nt v solid v mu blue v green cho th. Ngoi ra bn
c th khai bo kiu mu, nt v ca ring bn bng vic a vo plot mt i s th 3 sau mi cp d
liu ca mng. Cc i s tu chn ny l mt xu k t, c th cha mt hoc nhiu hn theo bng d-i y:
K hiu
Mu
K hiu
Kiu nt v
K hiu
ngha
b
xanh da tri
nt lin
s
vung
g
xanh l cy
-ng chm
d
diamond
:
r
115
>> plot(x,y,' b:p',x,z,' c-',x,z,' m+')
17.3 Kiu th
Hnh 17.5a
Lnh colordef cho php bn la chn kiu hin th. Gi tr mc nh ca colordef l white . Kiu
ny s dng trc to , mu nn, nn hnh v mu xm sng, v tn tiu ca trc mu en. Nu bn
thch nn mu en, bn c th dng lnh colordef black. Kiu ny s cho ta nn trc to en, nn
hnh v mu ti xm, v tiu trc mu trng.
17.4 th l-i, hp cha trc, nhn, v li ch gii
Lnh grid on s thm -ng li vo th hin ti. Lnh grid off s b cc nt ny, lnh grid m
khng c tham s i km theo th s xen k gia ch on v off. MATLAB khi to vi
grid off . Thng th-ng trc to c nt gn kiu solid nn gi l hp cha trc. Hp ny c th tt i
vi box off v box on s khi phc li. Trc ng v trc ngang c th c nhn vi lnh xlabel v
ylabel. Lnh title s thm vo th tiu nh. Dng hm sine v cosine minh ho:
>>
>>
>>
>>
x = linspace(0,2*pi,30);
y = sin(x);
z = cos(x);
plot(x,y,x,z)
116
>>
>>
>>
>>
Hnh 17.5b
box off
xlabel('Independent variable X')
ylabel('dependent variable Y and Z')
title('Sine and Cosine Curve')
Hnh 17.6
Bn c th thm nhn hoc bt c chui k t no vo bt c v tr no bng cch s dng lnh text.
C php ca lnh ny l : text (x, y,string) trong x, y l to tm bn tri ca chui vn bn.
thm nhn vo hnh sine v tr (2.5, 0.7) nh- sau:
>> grid on, box on
>> text(2.5,0.7,'sin(x)')
Nu bn mun thm nhn m khng mun b hnh v khi h trc ang xt, bn c th thm chui
vn bn bng cch di chut n v tr mong mun. Lnh gtext s thc hin vic ny.
V d (Hnh 17.8):
>> gtext('cos(x)')
117
Hnh 17.7
Hnh 17.8
17.5 Kin to h trc to
MATLAB cung cp cho bn cng c c th kim sot hon ton hnh dng v thang chia ca c hai
trc ng v ngang vi lnh axis. Do lnh ny c nhiu yu t, nn ch mt s dng hay dng nht -c
118
M t
Thit lp cc gi tr min,max ca h trc dng cc gi tr
V l mt vector ct c cha thang chia cho th hin ti:
[xmin xmax ymin ymax]
Tr li gi tr mc nh thang chia
xmin = min(x), xmax = max(x), ..v.v...
Gii hn thang chia nh thang chia hin ti
S dng (mc nh ) h to decac trong gc to
Gc gc thp nht bn tri, trc ngang tng t tri qua
phi, trc ng tng t d-i ln
S dng h to ma trn, trong gc to nh gc
tri, trc ng tng t nh xung, trc ngang tng t tri
qua phi
Thit lp th hin ti l hnh vung, so vi mc nh hnh
ch nht
Thit lp thang chia ging nhau cho c hai h trc
T-ng t nh axis equal nh-ng hp th va i vi d
liu
Tt i ch axis equal, equal, tight v vis3d
Tt b ch nn trc, nhn, li, v hp, du. Thot khi
ch lnh title v bt c lnh label no v thay bi lnh
text v gtext
Ng-c li vi axis off nu chng c th.
Hnh 17.9
>> axis on, grid off
119
Hnh 17.10
>>axis ij
Hnh 17.11
>> axis square equal
120
Hnh 17.12
>> axis xy normal
Hnh 17.13
17.6 In hnh
in cc hnh m bn va v hoc cc hnh trong ch-ng trnh ca MATLAB m bn cn, bn c
th dng lnh in t bng chn hoc nh lnh in vo t ca s lnh:
121
+) In bng lnh t bng chn: Tr-c tin ta phi chn ca s hnh l c s hot ng bng cch
nhn chut ln n, sau bn chn mc bng chn Print t bng chn file. Dng cc thng s to ln
trong mc bng chn Print Setup hoc Page Setup, th hin ti ca bn s -c gi ra my in.
+) In bng lnh t ca s lnh: Tr-c tin bn cng phi chn ca s hnh lm ca s hot ng bng
cch nhn chut ln n hoc dng lnh figure(n), sau bn dng lnh in.
>> print
% prints the current plot to your printer
Lnh orient s thay i kiu in: Kiu mc nh l kiu portrait, in theo chiu ng, gia
trang. Kiu in landscape l kiu in ngang v kn ton b trang. Kiu in tall l kiu in ng nh-ng kn
ton b trang. thay i kiu in khc vi kiu mc nh, bn dng lnh orient vi cc thng s ca n
nh sau:
>> orient
% What is the current orientation
ans=
portrait
>> orient landscape
% print sideways on the page
>> orient tall % stretch to fill the vertical page
Nu bn mun tm hiu k hn v chng th hy xem tr gip trc tuyn v chng.
17.7 Thao tc vi th
Bn c th thm nt v vo th c sn bng cch dng lnh hold. Khi bn thit lp hold on,
MATLAB khng b i h trc tn ti trong khi lnh plot mi ang thc hin, thay vo , n thm
dng cong mi vo h trc hin ti. Tuy nhin nu nh- d liu khng ph hp vi h trc to c, th
trc -c chia li . Thit lp hold off s b i ca s figure hin ti v thay vo bng mt th mi.
Lnh hold m khng c i s s bt tt chc nng ca ch thit lp hold tr-c . Tr li vi v d
tr-c:
>> x = linspace(0,2*pi,30);
>> y = sin(x);
>> z = cos(x);
>> plot(x,y)
Hnh 17.14
By gi gi nguyn th v thm vo -ng cosine
>> hold on
%Gi nguyn th v lc tr-c
>> ishold
% hm logic ny tr v gi tr 1 (true) nu hold trng thi ON
ans =
1
>> plot(x,z,'m')
122
Hnh 17.15
Nu bn mun hai hay nhiu th cc ca s figure khc nhau, hy dng lnh figure trong ca
s lnh hoc chn new figure t bng chn file, figure khng c tham s s to mt figure mi. Bn c
th chn kiu figure bng cch dng chut hoc dng lnh figure(n) trong n l s ca s hot hot
ng.
Mt khc mt ca s figure c th cha nhiu hn mt h trc. Lnh subplot(m,n,p) chia ca s
hin ti thnh mt ma trn mxn khong v th, v chn p l ca s hot ng. Cc th thnh
phn -c nh s t tri qua phi, t trn xung d-i, sau n hng th hai .v.v. . . V d:
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
x = linspace(0,2*pi,30);
y = sin(x);
z = cos(x);
a = 2*sin(x).*cos(x);
b = sin(x)./(cos(x)+eps);
subplot(2,2,1)
% pick the upper left of
% 2 by 2 grid of subplots
plot(x,y),axis([0 2*pi -1 1]),title('sin(x)')
subplot(2,2,2)
% pick the upper right of the 4 subplots
plot(x,z),axis([0 2*pi -1 1]),title('cos(x)')
plot(x,z),axis([0 2*pi -1 1]),title('cos(x)')
subplot(2,2,3)% pick the lowwer left of the 4 subplots
plot(x,a),axis([0 2*pi -1 1]),title('2sin(x)cos(x)')
subplot(2,2,4)%pick the lowwer right of the 4 subplots
plot(x,b),axis([0 2*pi -20 20]),title('sin(x)/cos(x)')
123
Hnh 17.6
17.8 Mt s c im khc ca th trong h to phng
loglog t-ng t nh- plot ngoi tr thang chia l logarithm cho c hai trc.
semilogx t-ng t nh- plot ngoi tr thang chia ca trc x l logarithm cn thang chia trc y l
tuyn tnh.
semology t-ng t nh- plot ngoi tr thang chia ca trc y l logarithm, cn thang chia trc x l
tuyn tnh.
area( x, y ) t-ng t nh- plot (x,y) ngoi tr khong cch gia 0 v y -c in y, gi tr c bn y
c th -c khai bo, nh-ng mc nh th khng.
S hnh mi tiu chun -c to thnh t lnh pie(a, b), trong a l mt vector gi tr v b l
mt vector logic tu chn. V d:
>> a = [.5 1 1.6 1.2 .8 2.1];
>> pie(a,a==max(a));
>> title('Example Pie Chart')
Hnh 17.7
Mt cch khc quan st d liu l biu Pareto, trong cc gi tr trong cc vector -c
v thnh mt khi ch nht. V d dng vector a ni trn:
>> pareto(a);
124
Hnh 17.18
>>
>>
>>
>>
>>
>>
i khi bn mun v hai hm khc nhau trn cng mt h trc m li s dng thang chia khc
nhau, plotyy c th lm iu cho bn:
x = -2*pi:pi/10:2*pi;
y = sin(x);z = 2*cos(x);
subplot(2,1,1),plot(x,y,x,z),
title('Two Plots on the same scale');
subplot(2,1,2),plotyy(x,y,x,z)
title('Two plots on difference scale.');
Hnh 17.19
th bar v stair c th sinh ra bi vic dng lnh bar, bar3, barh v stairs. D-i y l v d:
>> x = -2.9:0.2:2.9;
>> y = exp(-x.*x);
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
subplot(2,2,1)
bar(x,y)
title('Bar chart of bell Curve')
subplot(2,2,2)
bar3(x,y)
title('3-D Bar Chart of a Bell Cuve')
subplot(2,2,3)
stairs(x,y)
title('Stair Chart of a Bell Curve')
subplot(2,2,4)
barh(x,y)
title('Horizontal Bar Chart')
Hnh 17.20
>> v = randn(100,1)*pi;
>> rose(v)
>> title('Angle Histogram of Random Angle')
125
126
Hnh 17.21
----------------------oOo----------------------
ch-ng 18
ho
trong khng gian 3 chiu
MATLAB cung cp mt s hm hin th d liu 3 chiu nh- cc hm v -ng thng trong
khng gian 3 chiu, cc hm v b mt v v khung dy v mu c th -c s dng thay th cho chiu
th t-.
18.1 th -ng thng.
Lnh plot t trong khng gian hai chiu c th m rng cho khng gian 3 chiu bng lnh plot3.
Khun dng ca plot3 nh- sau:
plot3 ( x1, y1, z1, S1, x2, y2, z2, S2, .... ), trong xn, yn v zn l cc vector hoc ma trn, v Sn
l xu k t tu chn dng cho vic khai bo mu, to biu t-ng hoc kiu -ng. Sau y l mt s v
d:
>>
>>
>>
>>
127
Hnh 18.1
Ch rng: hm zlabel t-ng ng vi hm hai chiu xlabel v ylabel. T-ng t nh- vy, lnh axis
cng c khun dng: axis ( [xmin xmax ymin ymax zmin zmax ] ) thit lp gii hn cho c 3 trc.
V d :
>> axis('ij') % thay i h-ng trc t sau ra tr-c
Hnh 18.2
Hm text cng c khun mu nh- sau: text ( x, y, z, string ) s t v tr xu string vo to x,
y, z.
18.2 th b mt v l-i
MATLAB nh ngha b mt l-i bng cc im theo h-ng trc z trn -ng k hnh vung
trn mt phng x-y. N to ln mu mt th bng cch ghp cc im gn k vi cc -ng thng.
Kt qu l n trng nh- mt mng l-i nh c vi cc mt l-i l cc im d liu. th l-i ny
th-ng -c s dng quan st nhng ma trn ln hoc v nhng hm c hai bin.
B-c u tin l a ra th l-i ca hm hai bin z = f (x, y ), t-ng ng vi ma trn X
v Y cha cc hng v cc ct lp i lp li. MATLAB cung cp hm meshgrid cho mc ch ny. [
X, Y ] = meshgrid(x, y ), to mt ma trn X, m cc hng ca n l bn sao ca vector x, v
ma trn Y c cc ct ca n l bn sao ca vector y. Cp ma trn ny sau -c s dng -c l-ng hm hai bin s dng c tnh ton hc v mng ca MATLAB.
Sau y l mt v d v cch dng hm meshgrid.
128
>> x = -7.5:.5:7.5;
>> y = x;
>> [X,Y] = meshgrid(x,y);
X, Y l mt cp ca ma trn t-ng ng mt l-i ch nht trong mt phng x-y. Mi hm z=f(x,y)
c th s dng tnh cht ny.
>> R = sqrt(X.^2+Y.^2)+eps;
>> % find the distance from the origin (0,0)
>> Z = sin(R)./R;
% calculate sin(r)/ r
Ma trn R cha bn knh ca mi im trong [X,Y], n l khong cch t mi im n tm
ma trn. Cng thm eps khng xy ra php chia cho 0. Ma trn Z cha sine ca bn knh chia cho
bn knh mi im trong s . Cu lnh sau v th l-i:
>> mesh(X,Y,Z)
Hnh 18.3
th trn l n sc. Tuy nhin bn c th thay i mu sc vi s tr gip ca MATLAB rt
r dng nu bn c n phn colormaps..
Trong v d ny, hm mesh xp xp gi tr ca cc phn t ca ma trn vo cc im
(X,Y,Z) trong khng gian ba chiu. mesh cng c th v mt ma trn n t-ng t nh- vi mt
i s; mesh(Z), s dng cc im (i,j,Z). Nh- vy Z -c v ng-c li vi cc ch s ca n,
trong tr-ng hp ny mesh(Z) ch n gin l chia li khc cc trc x, y theo cc ch s ca ma trn
Z. Bn hy th to v d cho tr-ng hp ny?.
th b mt ca cng mt ma trn Z trng nh- th l-i tr-c , ngoi tr khong cch gia
hai -ng l khc nhau (gi l patchs). th loi ny dng hm surf, n c tt c cc i s nh- hm
mesh. Hy xem v d d-i y (Hnh 18.4):
>> surf(X,Y,Z)
129
Hnh 18.4
lm r thm mt vi ch , chng ta cng quay li hm peaks a ra phn tr-c. th l-i
trong khng gian 3 chiu ca hm ny -c -a ra nh- sau (hnh 18.5):
>> mesh(peaks)
>> title('Mesh Plot of Peaks function')
Hnh 18.5
th ng vin cho ta thy -c nng hoc cao ca hnh. Trong MATLAB th -ng
vin trong khng gian hai chiu t-ng t nh- trong khng gian ba chiu nhng hm gi ca n l
contour3. th s dng cc lnh s -c minh ho trong bng khc mu.
18.3 Thao tc vi th
130
MATLAB cho php bn khai bo gc t quan st -c th trong khng gian ba chiu.
Hm view(azimuth, elevation ) thit lp gc xem bng vic khai bo azimuth v elevation. Elevation
m t v tr ng-i quan st, xem nh- l gc o bng trn h trc x-y. Azimut m t gc trong h
trc ni ng-i quan st ng.
Azimuth -c o bng t phn m trc y. Pha m trc y c th quay theo chiu kim ng h
mt gc -37.5 t pha bn. Elevation l gc m ti mt bn thy -c mt phng x-y. S dng
hm view cho php bn c th quan st hnh v t cc gc khc nhau. V d nu elevation thit lp l
m, th view s nhn hnh t pha d-i ln. Nu azimuth thit lp d-ng, th hnh s quay ng-c chiu
kim ng h t im nhn mc nh.Thm ch bn c th nhn trc tip t trn bng cch thit lp
view(0,90 ). Thc ra th y l im nhn mc nh 2 chiu, trong x tng t tri qua phi, v y tng t
trn xung d-i, khun dng view(2) hon ton ging nh- mc
nh ca view(0, 90 ), v view(3) thit lp mc nh trong khng gian 3 chiu.
Lnh view c mt dng khc m rt tin ch khi s dng l view([X,Y,Z ]) cho php bn quan st
trn mt vector cha h trc to decac trong khng gian 3 chiu. Khong cch t v tr bn quan st
n gc to khng b nh h-ng. V d, view([0 10 0 ]), view([0 -1 0 ]) v view(0, 0 ) cho cc kt
qu nh- nhau. Cc thng s azimuth v elevation m bn ang quan st c th ly li -c bng cch
dng [az, e] = view. Vd:
>> view([-7 -9 7])
>> [az,el] = view
az =
-37.8750
el =
31.5475
Mt cng c hu dng khc l quan st th khng gian 3 chiu bi hm rotate3d. Cc thng s
Azimtuh v elevation c th -c tc ng bi chut, rotate3d on cho php chut can thip, rotate3d
off khng cho php.
Lnh hidden du cc nt khut. Khi bn v th, th mt s phn ca n b che khut bi cc phn
khc, khi nu dng lnh ny th cc nt khut s b du i, bn ch c th nhn phn no trong tm
nhn ca bn. Nu bn chuyn n hidden off, bn c th thy phn khut qua mng l-i. D-i y
l v d:
>>
>>
>>
>>
>>
mesh(peaks(20)+7)
hold on
pcolor(peaks(20))
hold off
title('Mesh with hiden on')
131
Hnh 18.8
By gi hy b ch du cc nt khut i ta s thy s khc nhau:
>> hidden off
>> title('Mesh with Hidden Off ')
Hnh 18.9
132
Hnh 18.10
Hm clabel tng thm cao cho th -ng vin. C ba mu clabel(cs), clabel(cs, V ) v clabel(
cs, manual). clabel(cs), trong cs l cu trc -ng vin -c tr v t lnh contour,
cs=contour(z), ly nhn tt c cc th -ng vin vi cao ca n. V tr ca nhn -c ly
ngu nhin. clabel (c, manual) nh v nhn -ng vin v tr kch chut t-ng t nh- lnh ginput
ni trn. Nhn phm Return kt thc vic to nhn ny.
Hm contourf s v mt th -ng vin kn, khng gian gia -ng vin -c lp y bng mu.
Hai mu trng thi ca lnh mesh dng vi th l-i l: meshc v th l-i v thm -ng vin
bn d-i, meshz v th l-i v th c dng nh- mn che.
Hm waterfall -c xem nh- mesh ngoi tr mt iu l hm mesh ch xut hin h-ng x.
C hai mu trng thi ca lnh surf, l surfc v mt th surf v thm -ng bao bn d-i,
surflvex v mt th surf nh-ng thm vo s chiu sng b mt t ngun sng. Cu trc tng qut
l surfl( X,Y, Z, S, K ) trong X, Y,v Z t-ng t nh- surf, S l mt vector tu chn trong h to
decac (S=[Sx Sy Sz]) hoc trong to cu (S=[az,el]) ch ra h-ng ca ngun
sng. Nu khng khai bo, gi tr mc nh ca S l 45 theo chiu kim ng h t v tr ng-i
quan st, S l mt vector tu chn ch ra phn ng gp tu thuc vo ngun sng bao quanh, s
phn chiu nh sng v h s phn chiu (K=[ka,kd,ks,spread]).
>> colormap(gray)
>> surfl(peaks)
>> title('surf1 plot of peaks with default lighting')
133
Hnh 18.11
fill3, phin bn 3 chiu ca fill, v mt a gic u trong khng gian ba chiu. Khun dng tng
qut ca n l fill3(x, y, z, c), trong chiu ng ca a gic -c ch bi ba thnh phn x, y, z.
Nu c l mt k t, a gic s -c lp y mu nh- bng mu. c cng c th l mt vector hng
c 3 thnh phn ([r g b]) trong r, g v b l cc gi tr gia 0 v 1 thay cho cc mu ,
xanh l cy v xanh da tri. Nu c l mt vector hoc ma trn, n -c s dng nh- mt ch s ch
ra s mu. Nhiu a gic c th -c to ra bng cch cho thm nhiu i s nh- fill3 (x1, y1,
z1,c1, x2, y2, z2, c2, ....). V d sau s v ngu nhin 4 tam gic vi mu:
>> color(cool)
>> fill3(rand(3,4),rand(3,4),rand(3,4),rand(3,4))
bar3 v bar3h l phin bn 3 chiu ca bar v barh, bie3 l phin ban ca pie.
18.5 Bng mu
Mu v biu mu -c cp n trong mt s v d phn tr-c. Trong phn ny chng ta s ni
r v chng. MATLAB nh ngha mt biu mu nh- l mt ma trn c 3 ct. Mi hng ca ma trn
nh ngha mt mu ring bit s dng cc s trong di 0 v 1. Nhng s ny ch ra cc gi tr RGB,
nhy ca cc mu thnh phn , xanh l cy, v xanh da tri trong mt mu do cc thnh phn to
ra. Mt s mu c bn -c cho trong bng d-i y:
0
1
1
0
0
1
1
0
Xanh l cy
0
1
0
1
0
1
0
1
Xanh da tri
0
1
0
0
1
0
1
1
mu
en
trng
xanh l cy
xanh da tri
vng
tm
lam xm
-5
-5
1
-49
-5
0
-62
1
-5
0
-40
-83
xm trung bnh
ti
ng
ngc xanh bin
134
M t bng mu
Gi tr mu bo ho (HSV)
en--vng-trng
xm cn bng tuyn tnh
xm c pha nh vi mu xanh
sc thi ca mu ng
mu hng nht nh
trng hon ton
xen k , trng, xanh da tri, v en
s thay i mu bo ho
c mu sc lng knh
mu xanh tm
mu ca nt v
Bng ca xanh l cy v vng
Bng ca v vng
Bng ca xanh l cy v xanh da tri
Bng ca magenta v yellow
[X,Y,Z]=peaks(30);
surf(X,Y,Z,atan2(X,Y))
colormap(hsv),shading flat
axis([-3 3 -3 3 -6.5 8.1]),axis off
title('using a color Argument to surf')
135
Hnh 18.12
18.7 S dng mu thm thng tin
Mu c th -c dng thm thng tin vo th 3 chiu nu n -c s dng to thnh chiu
th t-. Cc hm nh- mesh v surf bin i mu dc theo trc z, tr khi mt i s mu -c a ra
nh- surf(X,Y,Z) hon ton t-ng -ng vi surf(X,Y,Z,t ) trong thnh phn th t- -c dng nhmt ch s trong biu mu. iu ny khin cho th y mu nh-ng li khng thng tin khi m
trc z tn ti.
D-i y l mt s cch s dng i s mu thm thng tin hoc nhn mnh thng tin tn ti
trong th
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
136
Hnh 18.13
18.8 Hin th bng mu.
Bn c th hin th bng mu theo mt s cch sau. Mt trong nhng cch l xem tt c cc phn
t trong trong mt ma trn bng mu mt cch trc tip:
>> hot(8)
ans =
0.3333
0.6667
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
0
0
0
0.3333
0.6667
1.0000
1.0000
1.0000
0
0
0
0
0
0
0.5000
1.0000
colormap(jet(n))
n=8;
colormap(jet(n))
pcolor([1:n+1;1 :n+1]')
title('using pcolor to display a colormap')
137
Hnh 18.4
Hm colorbar thm mt thanh mu ng hoc thanh mu ngang (cn chnh mu ) vo ca s hnh
v ca bn, -a ra biu mu cho trc hin ti. colorbar( h) nh v thanh mu ngang d-i hnh v
hin ti ca bn. colorbar( v) nh v thanh mu ng v bn phi hnh v ca bn. colorbar khng c
i s th l thm mt thanh mu ngang, nu thanh mu ny khng tn ti hoc l cp nht nu n tn
ti.
>> [X,Y,Z] = peaks;
>> mesh(X,Y,Z );
>> colormap(hsv)
>> axis([-3 3 -3 3 -6 8])
>> colorbar
Hnh 18.5
138
Hnh 18.6
139
Ch-ng19
Mng t bo v cu trc
MATLAB 5.0 gii thiu 2 loi d liu mi c tn gi l mng t bo v cu trc. Mng t bo -c xem nh- mt mng ca cc s nh phn hoc l nh- b cha c th l-u gi nhiu kiu d liu
khc nhau. Cu trc l nhng mng d liu h-ng i t-ng xy dng cng vi tn cc tr-ng c th
cha nhiu kiu d liu khc nhau, bao gm mng t bo v cc cu trc khc. Cu trc cung cp cho ta
ph-ng tin thun li nhm cc kiu d liu khc nhau. Nhng kiu d liu mi ny, mng t bo v
cu trc to cho bn kh nng t chc d liu thnh cc gi rt thun tin.
19.1 Mng t bo
Mng t bo l nhng mng MATLAB m cc phn t ca n l cc t bo. Mi t bo trong
mng t bo cha cc kiu d liu ca MATLAB bao gm mng s, vn bn, i t-ng c tr-ng, cc
mng t bo v cu trc. V d mt t bo ca mng t bo c th l mng s, loi khc l kiu chui
vn bn, loi khc l vector cc gi tr s phc. Cc mng t bo c th -c xy dng vi s chiu ln
hn 2, tuy nhin cho thun tin khi xt ng-i ta ly s chiu l 2 .
19.2 Xy dng v hin th mng t bo
Mng t bo c th -c xy dng bng cch dng cu lnh gn, hoc ch nh mng tr-c bng
cch s dng hm t bo sau gn d liu cho mng.
Nh- mi loi mng khc, mng t bo c th to ra bng cch gn d liu cho tng t bo c
lp cng mt thi im. C hai cch khc nhau thm nhp vo mng t bo. Nu bn s dng c php
mng tiu chun, bn phi cc t bo trong du ngoc { }. V d:
>>
>>
>>
>>
140
>> C= cell ( 2, 3 )
C=
[] []
[] []
[]
[]
141
double
>> y = B[2,2]
% truy nhp vo bn thn t bo.
y =
[5]
>> class(y)
ans=
cell
>> B{1,1} (1,2) % truy nhp vo phn t th hai ca
% vector trong t bo
ans=
2
truy nhp di cc phn t trong mng t bo, s dng hm deal
>> [a,b] = deal(B{2,:1})
a =
2.0000+
3.0000i
b =
5
Hm deal cn mt danh sch cc bin phn bit nhau bi du phy. Biu thc B{2, :} c th s dng
mi ni v du phy dng phn tch danh sch cc bin. Do , B{2, :} t-ng -ng vi B(2,1) v
B(2,2).
19.5 Mng t bo ca chui k t
Mt trong nhng ng dng ph bin ca mng t bo l xy dng mt mng vn bn. Mng
chui k t tiu chun i hi tt c cc chui u c chung di. Bi v mng t bo c th cha
nhiu kiu d liu khc nhau trong mi phn t, chui k t trong mng t bo khng c gii hn ny.
V d:
>> T = {' Tom';' Disk'}
T=
'Tom'
'Disk'
19.6 Cu trc
Cu trc l nhng i t-ng MATLAB c tn b cha d liu cn gi l fields. Nh- mi phn
t ca mng t bo, tr-ng cu trc c th c bt c mt kiu d liu no. Chng khc ch cu trc
tr-ng -c truy nhp bng tn ph bin hn l ch s, v khng c s hn ch no v ch s cng nhcu hnh ca cc tr-ng cu trc. Cng ging nh- mng t bo, cu trc c th -c nhm li vi nhau
to thnh mng v mng t bo. Mt cu trc n l mt mng cu trc 1x1.
19.7 Xy dng mng cu trc
Cu trc s dng du . truy nhp vo tr-ng. Xy dng mt cu trc n gin nh- gn d
liu vo cc tr-ng c lp. V d sau to mt bn ghi client cho th- vin kim tra.
>> client.name = ' John Doe';
>> client.cost = 86.50;
>> client.test.AIC = [6.3 6.8
>> client.test.CHC = [2.8 3.4
>> client
client =
name L ' John Doe '
7.1
3.6
7.0
4.1
6.7 6.5
3.5];
6.3
6.4]
cost :86.50
test : [1x1 struct]
>> client.test
ans=
AIC:6.3000 6.8000 7.1000 7.0000 6.7000 6.5000
CHC:2.8000 3.4000 3.6000 4.1000 3.5000
142
6.3000 6.4000
ans=
John Doe
143
Alice Smith
>> bills(2).cost
ans=
112.3500
>> bills(1)
ans=
name : ' John Doe '
cost : ' 86.5000 '
payment: 10.000
20.0000 45.0000
>> baldue = bills(1).cost - sum(bills(1).payment )
baldue=
6.5000
>> bills(2).payment(2)
ans =
12.3500
>> client(2).test.AIC(3)
ans=
7.000
Ph-ng php ch mc trc tip th-ng -c s dng truy nhp gi tr tr-ng. Tuy nhin, cc
M-file nu tn cc tr-ng -c gi ra t hm fieldnames, th hm getfield v setfield c th -c s
dng truy nhp d liu trong cu trc. V d :
>> getfield(bills,{1},'name' )
% t-ng t nh bills(1).name
ans=
John Doe
>> T = fieldnames(bills);
>> getfriend(bills,{2},T{3},{2})%tng t nh s(2),payment(2)
ans=
12.3500
V d sau tr li cu trc c cha cng kiu d liu nh- cu trc nguyn thu vi mt gi tr b thay
i. Dng lnh t-ng -ng ca client(2).test.AIC(3) = 7.1. l:
>> client = setfield(client,{2 },'test', 'AIC ',{3},7.1)
client=
1x2 struct array with fields
name
cost
test
>> client(2).test.AIC(3)
ans=
7.1000
Mt tr-ng c th -c thm vo trong mt mng cu trc ch n gin bng cch gn gi tr
cho tr-ng cu trc mi.
>> client(1).addr = {' MyStreet';' MyCity '}
client =
1x2 struct array with fields
name
cost
test
144
addr
Mt tr-ng c th -c b i khi cu trc ( hoc mt mng cu trc ) bng lnh rmfield. S=
rmfield ( S, field ) s b i tr-ng field t cu trc S. S= rmfield ( S, F ), trong F l mt mng t
bo ca tn cc tr-ng, b i nhiu hn mt tr-ng t cu trc S ti mt thi im.
>> client = rmfield( client,' addr ')
client =
1x2 struct array with fields
name
cost
test
19.9 S nghch o v hm kim tra
S nghch o gia cc mng t bo v cc cu trc bng cch dng hm struct2cell v
cell2struct . Tn tr-ng phi -c cung cp y cho cell2struct v b mt i khi chuyn thnh mt
mng t bo t mt cu trc. S chuyn i t mng s v mng xu k t thnh mng t bo bng
cch s dng hm num2cell v cellstr. Ng-c li chuyn i t mt mng t bo thnh mng k t bng
hm char.
Mc d hm class tr v kiu kiu d liu ca i t-ng, class vn khng thun tin s dng
kim tra kiu d liu. Hm isa(x, class ) tr li true nu x l mt i t-ng kiu class. V d, isa (
client, struct ) s tr li true. thun tin, mt s hm kim tra s khc c sn trong th- vin ch-ng trnh nh-: isstruct, iscell, ischar, isnumeric, v islogical.
---------------------oOo---------------------Ch-ng 20
Biu t-ng ca hp cng c ton hc
Cc ch-ng tr-c, bn bit -c MATLAB mnh ra sao trn ph-ng din lp trnh, tnh ton.
Mc d kh nng tnh ton ca n rt mnh, tuy nhin n vn cn c nhng hn ch. Nh- mt my
tnh, MATLAB c s s dng cc con s. N nhn cc s (123/4) hoc cc bin (x =[ 1 2 3 ]).
Hp cng c ton hc l mt tp hp cc cng c ( hm ) MATLAB s dng nhm gii cc
bi ton. C cc cng c t hp, n gin ho, tch phn, vi phn v gii cc php ton i s v
php ton vi phn. Cc cng c khc s dng trong i s hc tuyn tnh chuyn i chnh xc dng
nghch o, nh thc v cc khun mu tiu chun.
Cc cng c trong Symbolic Math Tollbox -c to nn t ch-ng trnh phn mm mnh c tn
l Maple@ pht trin khi u t trng i hc Waterloo Ontario, Canada v by gi l phn mm ca
hng Waterloo Maple Software. Khi bn yu cu MATLAB thc hin mt php ton, n s s dng cc
hm ca Symbolic Math Tollbox lm vic ny v tr li kt qu ca s lnh.
20.1 Biu thc v cc i t-ng c tr-ng
MATLAB c s s dng mt s cc kiu i t-ng khc nhau l-u tr gi tr. Bin s hc
dng l-u tr gi tr s hc, v d nh- x=2, mng k t l-u tr chui vn bn, v nh- : t = A text
string . Hp cng c ton hc c tr-ng dng nhng i t-ng ton hc thay th cc bin v cc ton
t, v d: x = sym ( x ). Cc i t-ng ton hc -c s dng bi MATLAB trong nhiu tr-ng hp
t-ng t nh- cc bin s hc v chui -c s dng. Biu thc ton hc l nhng biu thc c cha i
t-ng ton hc thay th cho cc s, hm, ton t.v cc bin. Cc bin khng yu cu phi nh ngha
tr-c. Thut ton l cng c thc hnh gii quyt nhng bi ton trn c s bit -c nhng quy lut
v s nhn dng cc biu t-ng -c a ra, chnh xc nh- ci cch bn gii bng i s hc v s tnh
145
Lp
double
double
double
double
double
double
double
double
double
double
sym
sym
sym
sym
146
MATLAB c cc biu thc c tr-ng ging nh- l biu thc c cha i t-ng c tr-ng khc
nhau gia chng v bin s, biu thc, php ton nu khng chng gn ging nh- biu thc MATLAB
c bn. Sau y l mt vi v d ca biu thc c tr-ng.
Biu thc t-ng tr-ng
x=sym( x ) y=
x=sym(x) cos(x2)-sin(2x)
x=sym(x)
Cc hm c trng ca MATLAB
nhau. V d:
>> x = sym('x')
>> diff(cos(x))
ans =
-sin(x)
% to mt bin c tr-ng x
% i ca cos(x ) vi bin s l x
147
ans =
2
2
>> class(M)
% C nhng loi i t-ng no l M?
ans =
double
>> M = '[a, b; c, d ]'
% M l mt chui c tr-ng
M =
[a, b :c, d ]
>> size(M)
% M l mt vector hng ca 9 k t
ans =
1
9
>> class( M )
ans =
char
>> M = sym('[a,b;c,d ]')
M=
[a,b;c,d]
>> size(M)
% M l mt vector 3 phn t (2 du phy )
ans =
1
3
>> class(M)
ans =
sym
>> syms a b c d
% nh ngha bin s c tr-ng a n d
>> M = [a,b;c,d]
% M l mt ma trn c tr-ng
M =
[a, b]
[c, d]
>> size(M)
ans =
2
2
>> class(M)
ans =
sym
>> a = 1; b = 2 ; syms c d
% nh ngha mt bin c nh t a
>> M = [a,b;c,d]
M=
[1, 2]
[c, d]
>> size(M)
ans=
sym
% M l mt ma trn c tr-ng t a n d
148
149
Tt c cc hm c tr-ng, ( vi vi im c bit s ni phn sau) da trn cc biu thc
c tr-ng v cc mng c tr-ng. Kt qu ging nh- mt s nh-ng n l mt biu thc c tr-ng. Nhchng ta ni trn, bn c th tm ra u l kiu s nguyn, mt chui c tr-ng hoc mt i t-ng
c tr-ng bng cch s dng hm class t MATLAB c s.
20.6 Tch cc t s v mu s
Nu biu thc ca bn l mt a thc hu t hoc c th m rng ti mt a thc hu t t-ng
-ng ( bao gm ton b cc phn t ca t s c chung mu s), bn c th tch t s v mu s bng
cch s dng hm numden. V d:
m = x2, f = a x2/( b-x)
g = 3 x 2 /2 + 2 x /3 -3/5.
2
h = (x + 3)/ ( 2 x - 1 ) + 3x/(x-1)
numden t hp hoc hu t ho biu thc nu cn thit, v tr li kt qu t s v mu s. Cu lnh
MATLAB -c thc hin nh- sau:
>> sym x a b
% to mt s bin c tr-ng
>> m = x^2
% to mt biu thc n gin
m =
x^2
>> [n,d] = numden(m)
% tch t s v mu s.
n =
x^2
d =
1
>> f = a*x^2/(b-x) % to mt biu thc lin quan
f =
a*x^2/(b-x)
>> [n d] = numden(f)
% tch t s v mu s.
m =
-a*x^2
d=
-b + x
Hai biu thc u tin cho ta kt qu nh- mong mun
>> g = 3/2*x^2 + 2*x - 3/4
% to mt biu thc khc.
g =
3/2*x^2 + 2*x - 3/4
>> [n,d] = numden(g)
% hu t ho v tch cc phn
n =
6*x^2 + 8*x - 3
d =
4
>> h = (x^2 + 3)/(2*x - 1) + 3*x/(x - 1) % tng ca a thc hu t
h =
x^3 + 5*x^2 - 3
d= (2*x - 1)*(x - 1)
>> h2 = n/d
% to li biu thc cho h
h2 =
(x^2 + 3)/(2*x - 1) + 3*x/(x - 1)
Hai biu thc g v h -c hu t ho hoc tr v biu thc n gin vi mt t s v mu s, tr-c khi
cc phn t -c tch c th chia t s cho mu s to li biu thc nguyn gc.
150
Mt s php ton tiu chun c th biu din trn biu thc c tr-ng s dng cc ton t quen
thuc. V d cho hai hm:
f = 2x2 + 3x - 5
g = x2 - x + 7
>> sym('x')
% nh ngha mt bin s c tr-ng
>> f = (2*x^2 + 3*x - 5)
% nh ngha biu thc c tr-ng f v g
f=
(2*x^2 + 3*x - 5 )
>> x^2 - x + 7
g =
x^2 - x + 7
>> f +
ans =
3*x^2 + 2*x + 2
>> f - g
% tm biu thc ca f-g
ans =
x^2 + 4*x - 12
>> f*g
% tm mt biu thc ca f*g
ans =
(2*x^2 + 3*x -5 ) *( x^2 - x + 7)
>> f/g
% tm mt biu thc ca f/g
ans =
(2*x^2 + 3*x - 5 )/(x^2 - x + 7)
>> f ^(3*x)
% tm nt biu thc cho f3x
ans =
(2*x^2 + 3*x - 5)*3*x
Thc s l mt php ton trn bt c biu thc no cha t nht mt bin s c tr-ng s cho kt
qu ca mt biu thc c tr-ng, bn hy t hp cc biu thc c nh to nhng biu thc mi. V
d:
>> a = 1; b = 3/2 ; x = sym('x'); % to mt s v nhng bin s c tr-ng
>> f = sin(a - x)
% to mt s biu thc
ans=
-sin(x-1)
>> g = sin(b*x^2)
ans=
sin(3/2*x^2)
>> b*f/(g - 5)+ x
% kt hp chng
ans =
-3/2*sin(x - 1)/(sin(3/2*x^2)- 5 )+ x )
Tt c cc php ton ny u thc hin tt vi cc i s l mng.
20.8 Cc php ton nng cao
MATLAB c th biu din nhiu php ton nng cao hn biu thc c tr-ng. Hm compose
kt hp f(x ) v g ( x) thnh f ( g(x)). Hm finverse tm hm nghch o ca mt biu thc v hm
symsum tm tng c tr-ng ca mt biu thc. V d :
151
f = 1/ ( 1 + x2 )
g = sin ( x )
h = x/ ( 1 + u 2 )
k = cos ( x+v )
>> syms x u v
% nh ngha 3 bin c tr-ng
>> f = 1/(1+x^2)
% to 4 biu thc
>> g = sin(x)
>> h = x/(1 + u^2)
>> k = cos(x + v)
>> compose(f,g)
% tm biu thc ca f( g ( x ))
ans =
sym(1/(1 + x^2))
compose c th -c s dng cc hm m c cc bin c lp khc nhau.
>> compose(h,k)
% cho h( x), k ( x ), tm h( k(x) )
ans=
cos(x + v)/(1 + u^2)
>> compose(h,k,u,v)
% cho h( u), k( v ), tm h( k( v))
ans =
x/(1 + cos(2*v)^2)
Hm nghch o ca mt biu thc, gi l f(x), l biu thc g (x) m tho mn iu kin
g( f (x)) = x. V d hm nghich o ca ex l ln(x), do vy ln(ex) =x. Hm nghch o ca sin(x) l
arcsin(x), v hm nghch o ca 1/tan(x) l arctan(1/x). Hm finverse tr thnh hm nghch o ca
mt biu thc. Ch finverse tr li duy nht mt kt qu thm ch nu kt qu khng l duy nht.
>> syms x a b c d z
% nh ngha mt s bin c tr-ng
>> finverse(1/x)
% nghch o ca 1/x l x
ans =
1/x
>> finverse(x^2)
% tm mt trong cc gii php g(x2 ) =x
ans =
x^(1/2)
>> finverse(a*x + b)
% tm gii php g(f(x)) = x
ans =
-(b - x)/a
>> finverse(a*b + c*d - a*z,a) %tm gii php g(f(a))=a
ans=
-(c*d - a)/(b - z)
Hm symsum tm tng c tr-ng ca mt biu thc. C 4 c php ca hm: symsum(f) tr li
tng , symsum(f,s) tr li tng , symsum(f,a,b) tr li tng , cn hm symsum(f, a, b, s) tr li tng .
Chng ta cng xem xt tng , tr li x3/3-x2/2+x/6
>> syms x n
>> symsum(x^2)
ans =
1/3*x^3 - 1/2*x^2 + 1/6*x
20.9 Hm nghch o
Mc ny trnh by cc cng c chuyn i biu thc c tr-ng sang gi tr s v ng-c li.
C mt s rt t cc hm c tr-ng c th tr thnh gi tr s.
152
Hm sym c th chuyn i mt chui hoc mt mng s thnh s biu din c tr-ng; hm
double thc hin ng-c li. duble chuyn i mt hng c tr-ng ( mt biu thc c tr-ng khng c
bin) thnh gi tr s c kiu xc nh double.
>> phi = sym('(1 + sqrt(5))/2')
phi =
(1 + sqrt(5))/2
>> double(phi)
% nghch o ca gi tr s
ans =
1.6180
Hai cch trn cho ta cng mt kt qu.
Bn lm vic vi a thc trn MATLAB c bn, s dng vector m cc phn t ca n l cc h
s ca a thc. Hm c tr-ng sym2poli chuyn i mt a thc c tr-ng thnh vector ca h h s
. Hm poli2sym th lm ngc li, v bn hy khai bo bin s dng trong php ton cui cng.
>> x = sym('x')
>> f = x^3 + 2*x^2 - 3*x + 5
% f l a thc c tr-ng
f =
x^3 + 2*x^2 - 3*x + 5
>> n = sym2poli(f)
% tch vector cc h s
n =
1 2 -3
5
>> poly2sym(n)
% to li a thc ca x ( mc nh )
ans =
x^3 + 2*x^2 - 3*x + 5
>> s = sym('s')
% nh ngha s nh- l bin c tr-ng
>> poly2sym(n,s)
% to li a thc ca f
ans=
s^3 + 2*s^2 - 3*s + 5
20.10 S thay th bin s
Gi s bn c mt biu thc c tr-ng ca x, v bn mun i bin thnh y. MATLAB cung
cp cho bn cng c thay i trong biu thc c tr-ng, gi l subs. C php l:
subs( f, old, new ), trong f l mt biu thc c tr-ng, old l bin hoc biu thc c tr-ng, v new l
bin c tr-ng, biu thc hoc ma trn hoc mt gi tr s hoc ma trn. Ni dung ca new s thay th
old trong biu thc f. D-i y l mt s v d:
>> syms a alpha
b c
s
x
% nh ngha mt vi bin c tr-ng
>> f = a*x^2 + b*x + c
% to mt hm f(x)
f =
a*x^2 + b*x + c
>> subs(f,x,s)
% thay th xbng s trong biu thc ca f
ans=
a*s^2 + b*s + c
>> subs(f,a,[alpha;s])
% thay th a bng ma trn c trng a
ans=
[alpha*x^2 + b*x + c]
[s*x^2 + b*x + c]
>> g= 3*x^2 + 5*x - 4
% to mt hm khc
g=
3*x^2 + 5*x - 4
153
>> h = subs(g,x,2)
% new l mt gi tr s
h =
18
>> class(h)
% biu din kt qu l mt ni dung c tr-ng
ans =
sym
V d tr-c biu din cch subs to h s, v sau lm n gin ho biu thc. T kt qu
ca h s l mt ni dung c tr-ng, MATLAB c th rt gn n thnh mt gi tr n. Ch rng
subs l mt hm c tr-ng, n tr thnh mt biu thc c tr-ng, mt ni dung c tr-ng thm ch n l
mt s. nhn mt s chng ta cn s dng hm double chuyn i chui .
>> double(h)
ans=
18
>> class(ans)
ans=
double
Hm diff cng c th thao tc trn mng. Nu f l mt vector c tr-ng hoc ma trn, diff( f) ly
vi phn mi phn t trong mng:
>> f = [a*x,b*x^2;c*x^3,d*s]
% to mt mng c tr-ng
f =
[ a*x
b* x^2 ]
[ c*x^3
d*s
]
Ch rng hm diff cng s dng trong MATLAB c bn tnh php vi phn s hc ca mt
vector s v ma trn.
20.12 Php tch phn
154
Hm tch phn int(f ) trong f l biu thc t-ng tr-ng, s tm ra mt biu thc t-ng
tr-ng F khc sao cho diff(F)=f. Nh bn thy trong phn nghin cu php tnh, php tch phn phc tp
hn php vi phn.Tch phn hoc o hm khng tn ti d-i mt hnh dng khp kn; hoc n c th
tn ti nh-ng phn mm khng tm ra n hoc phn mm c th tm ra n nh-ng khng b nh hoc
thi gian chy. Khi MATLAB khng tm thy php tnh o hm n a ra cnh bo v s thay th t-ng tr-ng php tch phn khng th s dng vi hm pretty.
>> x = sym('x');
>> p = int(log(x)/exp(x^2))
% ly tch phn
Warning:Explicit integral could not be found.
In C:\MATLAB\toolbox\symbolic\@sym\int.m at line 58
p = int(....
>> pretty(p)
ans =
output from pretty
Hm tch phn, cng nh- hm vi phn u c nhiu hn mt c php. int(f) s tm mt php tnh
tch phn theo cc bin c lp mc nh, cn int(f, s ) tm php ly tch phn theo bin c tr-ng s.
Khun mu int( f, a, b ) v int (f, s, a, b ), trong a, b l cc bin s, tm ra biu thc c tr-ng cho
php ly tch phn theo cn t a n b. T-ng t cho hm int(f, m, n ) v
int ( f, s, m, n ).
>> syms x s m n
% nh ngha mt s bin
>> f = sin(s + 2*x)
% to mt hm t-ng tr-ng
f=
sin(s+2*x)
>> int(f)
% php ly tch phn theo bin x
ans=
-1/2*cos(s+2*x)
>> int(f,s)
% php ly tch phn theo i s s
ans=
-cos(s + 2*x)
>> int(f,pi/2,pi)
% ly tch phn theo bin x vi cn t pi/2 n pi
ans=
-cos(s)
>> int(f,s,pi/2,pi)
% ly tch phn theo s, cn t pi/2 n pi
ans=
2*cos(x)^2 - 1 - 2*sin(x)*cos(x)
>> g = simple(int(f,m,n))
% ly tch phn theo x, cn t m n n
g =
-1/2*cos(s + 2*n) + 1/2*cos(s + 2*m)
Trong v d ny, hm simple c s dng n gin ho kt qu ca php ly tch phn. Chng ta s
nghin cu thm v hm simple sau ny.
Cng nh- hm diff, hm ly tch phn int trn mi phn t ca mng c tr-ng:
>> syms a
b
c
d
x
s
>> f = [a*x,b*x^2;c*x^3,d*s]
f=
[a*x,
b*x^2 ]
[c*x^3,
d*s ]
>> int(f)
ans =
155
[1/2*a*x^2,
[1/4*c*x^4,
1/3*b*x^3]
d*s*x]
% tm gi tr ca t khi v(t)=0
156
Bi v solve l mt hm c tr-ng, n tr li mt hng c tr-ng ( thm ch n trng nh- mt
s). By gi chng ta tm cao cc i, thi im t = 2.0505 s.
>> y_max = subs(y, t, t_top ) % thay th t bi t_top trong y
y_max =
50.505
Ch rng hm subs c cng gi tr nh- chng ta lm tr-c khi chng ta kim tra biu thc
y, subs s thay bin c tr-ng 2.0505 vo cc gi tr t trong biu thc.
By gi chng ta tm thi gian qu c chua chm mt t.
% qu c chua chm mt t khi y =0
% v cao qu c chua
-4.8768*t^2+20.*t+30
50
40
30
20
10
-10
-20
-30
0
3
t
157
i khi MATLAB tr li mt biu thc c tr-ng qu kh c th c. Mt s cng c c
sn tr gip lm cho biu thc d c hn. Tr-c tin l hm pretty. Lnh ny hin th biu thc c
tr-ng theo mt khun mu t-ng t nh- ku ton hc. Chng ta hy xem s m rng chui Taylor:
>> x = sym('x');
>> f = taylor(log(x+1)/(x-5))
f =
-1/5*x+3/50*x^2-41/750*x^3+293/7500*x^4-1207/37500*x^5
>> pretty(f)
2
41 3
293 4
-1/5 x + 3/50 x - --- x + ---- x 750
7500
1207 5
----- x
37500
Biu thc c tr-ng c th -a ra d-i nhiu dng t-ng t nhau. MATLAB s dng mt s
lnh n gin ho hoc thay i khun mu trong biu thc c tr-ng.
>> x = sym('x');
>> f = (x^2 - 1)*(x - 2)*(x - 3)
% to mt hm
f =
(x^2 - 1)*(x - 2)*(x - 3)
>> collect(f)
% gom tt c cc mc nh-nhau
ans =
x^4 - 5*x^3 + 5*x^2 + 5*x - 6
>> horner(ans)
ans =
-6 + (5 + (5 + (-5 + x)*x)*x)*x
>> factor(ans)
% biu din d-i dng mt a thc
ans =
(x - 1)*(x - 2)*(x - 3)*(x + 1)
>> expand(f)
ans =
x^4 - 5*x^3 + 5*x^2 + 5*x - 6
simplify l mt cng c rt mnh, mc ch c bn l n gin ho biu thc d-i nhiu kiu
khc nhau nh-: tch phn v lu tha phn s; lut s m v hm log; v Bessel, hnh hc v hm
gamma. Mt vi v d s minh ho iu ny:
>> syms x y a
>> simplify(sin(x)^2 + 3*x + cos(x)^2 - 5)
ans =
-4 + 3*x
>> simplify(log(2*x/y))
ans =
log(2) + log(x/y)
>> simplify((-a^2 + 1)/(1 - a))
ans =
a + 1
20.15 Tm tt v mt s c im khc
158
Biu thc c tr-ng s phc trong c php MATLAB c th -c trnh by theo mt hnh mu
m ta c th d ng c bng vic s dng hm pretty.
C th c nhiu kiu t-ng t nhau ca biu thc c tr-ng, mt s chng th d dng s dng hn
mt s khc trong nhng tnh hung khc nhau. MATLAB a ra mt s cng c thay i khun
dng trong biu thc. l :
Cng c
collect
factor
expand
simplify
simple
M t
Gom tt c cc mc ging nhau
Biu din d-i dng mt a thc
M rng tt c cc mc
n gin ho cc biu thc
Tm biu thc t-ng -ng c chui k t ngn nht
Hm c tr-ng MATLAB c th -c s dng chuyn biu thc c tr-ng thnh phn thc., cho
mt a thc hu t th int( f ) s ly tch phn hm ny, v diff( f ) s ly vi phn hm ny. V d:
>> s = sym('s');
>> Y =(10*s^2 + 40*s + 30 )/(s^2 + 6*s + 8)
Y =
(10*s^2 + 40*s + 30)/(s^2 + 6*s + 8)
>> diff(int(Y))
ans =
10 - 15/(s + 4) - 5/(s + 2)
>> pretty(ans)
15
5
10 - ----- - ----s + 4
s + 2
K thut ny cng tht l hu ch khi ta mun ti gin a thc trong c bc cao hn mu s.
>> x = sym('x');
>> g = (x^3 + 5)/(x^2 - 1)
g =
(x^3 + 5)/(x^2 - 1)
>> diff(int(g))
ans =
x + 3/(-1+ x) - 2/(x + 1)
>> pretty(ans)
3
2
x + ------ - ----20.16 T lm
-1 + x
x + 1
159
Ph-ng trnh c tr-ng c th -c gii bng cng c ton hc c sn trong MATLAB. Mt
s -c gii thiu, mt s s -c chng minh phn sau.
20.18 Gii ph-ng trnh i s n gin
Hm solve gn biu thc c tr-ng v 0 tr-c khi gii n:
>> syms a b c x
>> solve(a*x^2 + b*x + c)
ans =
[1/2/a*(-b + (b^2 - 4*a*c)^(1/2))]
[1/2/a*(-b - (b^2 - 4*a*c)^(1/2))]
Kt qu l mt vecto c tr-ng m cc phn t ca n c dng nh- trn . gii php ton c
cha du bng, gii mt chui c cha biu thc:
>> solve('a*x^2 + b*x - (-c)')
ans =
[1/2/a*(-b + (b^2 - 4*a*c)^(1/2))]
[1/2/a*(-b (b^2 - 4*a*c)^(1/2))]
Nu nh- bn mun gii i s khc so vi bin s mc nh th bn c th khai bo trong solve nhsau:
>> solve(a*x^2 + b*x + c,b)
ans =
-(a*x^2 + c)/x
Php ton c th gii bng cch gn biu thc cho 0. By gi chng ta s gii cos(x)=sin(x) v tan(x)
=sin(2x) theo x, v qui kt qu ca chng v bin f v t:
>> f = solve(cos(x)- sin(x))
f =
1/4*pi
>> t = solve(tan(x)- sin(2*x))
t =
[
0]
[
pi]
[ 1/4*pi]
[ -3/4*pi]
Kt qu d-i dng s:
>> double(f)
ans =
0.7854
>> double(t)
ans =
0
3.1416
0.7854
-2.3562
160
20.19 Mt vi php ton i s
C th gii vi php ton cng mt lc. Cu lnh [a1, a2, ..., an ] = solve(f1, f2, ...,fn ) gii n php
ton cho cc bin mc nh v tr li kt qu trong a1, a2, ..., an. Tuy nhin bin mc nh s -c l-u
tr . V d:
>> syms x y
>> [a1 a2] = solve(x^2 + x^y + y - 3, x^2 - 4*x + 3)
a1 =
[ 1]
[ 3]
a2 =
[
1]
[ -(6*log(3)+lambertw(1/729*log(3)))/log(3)]
20.20 Php ton vi phn
Thng th-ng php ton vi phn rt kh gii, MATLAB cung cp cho bn mt s cng c
mnh tm kt qu ca php ton vi phn.
Hm dsolve s gii cc php ton vi phn v cho ta kt qu. C php ca dsolve khc vi phn
ln cc hm khc. i s ca hm phi l xu k t thay v biu thc, v nh- xu cha mt du =.
iu ny r rng l khc so vi hm solve, m i s ca n phi l mt biu thc c tr-ng khng c
du =.
Php ton vi phn -c nhn ra bng k hiu ch hoa D v D2, D3, v.v... .Bt k mt ch no
theo sau Ds u ph thuc vo bin. Php ton ( d2y/dt2 ) -c thay bi chui k t D2y=0. cc bin
c lp c th -c ch ra, hoc nu khng s mc nh l t. V d gii php ton
(dy,dt) - 1+2y2:
>> clear
>> dsolve('Dy=1+y^2')
ans =
tan(t - C1)
trong C1 l hng s. Cng bi ton trn nh-ng cho gi tr ban u l y(0) =1 th s c kt qu sau:
>> dsolve('Dy=1+y^2, y(0)=1')
ans =
tan(t+1/4*pi)
20.21 Mt vi php ton tch phn
Hm dsolve c th gii nhiu php ton vi phn cng mt lc. Khi gii nhiu php ton vi phn
dsolve tr cc bin vo mt cu trc hoc mt vector nh solve lm. Ch dsolve xp xp cc bin tr-c khi c lp tr-c khi tr. V d:
Gii php ton sau:
df/dt = 3f + 4g
dg/d = -4f + 3g
>> [f,g] = dsolve('Df = 3*f + 4*g, Dg = -4*f + 3*g')
f =
exp(3*t)*cos(4*t)*C1 + exp(3*t)*sin(4*t)*C2
g =
-exp(3*t)*sin(4*t)*C1 + exp(3*t)*cos(4*t)*C2
161
[ a, b, c]
[ b, c, a]
[ c, a, b]
>> G = [cos(t),sin(t);-sin(t),cos(t)]
G =
[ cos(t), sin(t)]
[ -sin(t), cos(t)]
Kch th-c ca ma trn c tr-ng c th tm -c bng hm chun size v length. V d:
>> syms a b c d e f
>> S = [a,b,c;d,e,f]
S =
[ a, b, c]
[ d, e, f]
>> h = size(S)
h =
2
3
>> [m,n] = size(S)
m =
2
n =
3
>> length(S)
ans =
3
Phn t ca mng c tr-ng cng -c truy nhp t-ng t nh- mng s
>> syms ab cd ef gh
>> G = [ab,cd,ef,gh]
G =
[ ab, cd, ef, gh]
>> G(1,2)
ans =
cd
20.23 Php ton i s tuyn tnh
Php nghch o v nh thc ca ma trn -c tnh bi hm: inv v det
>> H = sym(hilb(3))
H =
[1,
1/2, 1/3]
[1/2, 1/3, 1/4]
162
Hm step, u(t) v hm impulse, (t) th-ng -c dng trong h thng. Hm b-c Ku(t-a ) trong
K l hng s -c nh ngha nh- sau: Ku(t-a) =0 nu t<a v Ku(t-a)= K nu T>=a. D-i
y l hm b-c:
20.25 Bin i Laplace
Php bin i laplace bin i t min t sang min s. Hm ca n nh- sau:
L(s) =
>> syms a s t w
>> f = exp(-a*t)*cos(w*t)
f =
exp(-a*t)*cos(w*t)
>> L = laplace(f,t,s)
L=
(s + a)/((s + a)^2 + w^2)
>> pretty(L)
s + a
------------2
2
s + a) + w
20.26 Bin i Fourier
Hm bin i Fourier v Fourier ng-c nh- sau:
F() =
f(t)=
MATLAB dng w thay cho trong biu thc c tr-ng
>> syms t w
>> f=t*exp(-t^2)
f =
t*exp(-t^2)
>> f=fourier(f,t,w)
% bin i fourier s dng tham s t v w
f =
-1/2*i*pi^(1/2)*w*exp(-1/4*w^2)
>> ifourier(f,w,t)
% timbin i fourier ng-c
ans =
163
1/2*4^(1/2)*t*exp(-t^2)
>> simplify(ans)
ans =
t*exp(-t^2)
--------------------------oOo-------------------------
ch-ng 21
hp cng c h thng iu khin
MATLAB : A, B, C, D
MATLAB : A, B, C, D
=
C mt s t-ng quan t nhin 1-1 gia ch s mng t bo v ch s ma trn hm truyn.
21.2 i t-ng LTI
Ri
164
MATLAB cung cp mt cch tm l-c mng d liu t-ng quan thnh cc i t-ng
tuyn tnh, bt bin theo thi gian, hoc cc i t-ng LTI. iu ny gip cho vic qun l chng -c
d dng. V d:
>> my_sys= zpk( z, p, k )
Zero/ pole / gain from input 1 to output:
1
s
Zero / pole / gain from input 2 to output:
3 ( s+1 )
-------------(s+10) (s+2)
xy dng mt i t-ng LTI zero-pole-gain c tn l my_sys c cha h thng 2 u vo v mt u ra.
Cng nh- vy:
>> H = tf( num, den )
Transfer function from input 1 to output...
10
#1: .........
s+10
-1
#2: .....
s
Transfer function from input 2 to output ...
s+10
#1:..............
s^2+6 s+10
3s+1
#2: ............
s^2 + 3 s + 3
to mt hm truyn i t-ng LTI t mng t bo num v den nhp vo tr-c . Cng nh- vy h
thng hin ti hin th mt ch d hiu.
Cui cng, i t-ng LTI khng gian trng thi -c hnh thnh nh- sau:
>> a = [ 0
1 ;
] ; b = [ 0 1 ]; c = [ 1 1 ] ; d =0;
% inh ngha ma trn khng gian trng thi
>> system2=ss( a, b, c, d)
a=
x1
x2
x1
0
1.00000
x
-2.00000 -4.00000
b =
x1
x2
c =
-2
-4
u1
0
1.00000
x1
x2
y1
1.00000
1.00000
165
d=
u1
y1
0
H thng lin tc theo thi gian
Trong tr-ng hp ny, h thng s xc nh cc thnh phn bin gn vi mi phn t v xc nhn h
thng l lin tc theo thi gian.
xy dng mt h thng gin on theo thi gian, s dng hm zpk, tf, v hm ss, bn nht
thit phi khai bo chu k ly mu km theo vi h thng -c xem nh- l mt i s u vo cui
cng.V d:
>> dt_sys = tf ( [ 1 0.2 ], [ 1 -1 ], 0.01 )
hm truyn
z+0.
...........
z-1
thi gian ly mu : 0.01
H thng ri rc theo thi gian ny c chu k ly mu l : 0.01
21.3 Khi phc d liu
Gi s i t-ng LTI -c to dng, th d liu trong c th tch ra bng cch s dng
hm tfdata, zpkdata, v ssdata. V d :
>> [nz, dz ]= tfdata (dt_sys )
% tch ra nh- l mng t bo
nz =
[1x2
double ]
dz =
[1x2
double ]
>> [ n z, dz ] = tfdata (dt_sys, 'v' ) % chch ra nh- l vector
z =
[ -0.2 ]
p =
[ 1 ]
k =
1
>> [z, p, k ] =zpkdata ( dt_sys, 'v' ) % chch ra nh- l vector
z =
-0.2
p =
1
k =
1
>> [ a, b, c, d ] = ssdata(dt_sys)
% chch ra ma trn khng gian trng
%thi s
a =
1
b =
1
c =
1.2
d =
166
1
167
s^2 + 6 s + 100
-5,
-10 ], 100 )
% h thng open-loop
100
....................
s (s+5 ) ( s+ 10 )
>>t =minreal ( g /( 1 +g ) ) H thng closed-loop
Zero / pole/ gain:
100
.....................................
(s+11.38 ) ( s^2 + 3.62 s ) + 8.789 )
Poles ca h thng ny l:
>>pole( t )
ans =
-11.387
-1.811 + 2.3472 i
-1.811 + 2.3472 i
th Bode ca h thng -c cho nh- hnh v:
>>bode(g)
Hnh 21.1
th Bode n gin ca h thng closed-loop l:
168
>> bode(t)
p ng xung ca h thng
Hnh 21.2
>> step(t)
Hnh 21.3
169
Ngoi cc ph-ng php nu trn, hp cng c h thng iu khin cn a ra thm cho bn lnh
tr gip ltiview. Hm ny cho php bn la chn cc i t-ng LTI t ca s lnh v quan st cc p
ng khc nhau trn mn hnh.
21.7 Danh sch cc hm ca hp cng c h thng iu khin
S hnh thnh cc kiu LTI
ss
zpk
tf
dss
filt
set
ltiprops
Phn tch d liu
ssdata
zpkdata
tfdata
dssdata
get
c tnh ca cc loi
class
size
isempty
isct
isdt
isproper
issiso
isa
S nghch o
ss
zpk
tf
c2d
d2d
Cc php ton
+ v *
\
/
.
[...]
inv
ng hc
pole, eig
tzero
pzma
dcgai
norm
covar
damp
esort
dsort
pade
p ng thi gian
step
impulse
inittial
lsim
Ltiview
gensig
stepfun
p ng tn s
bode
sigma
nyquist
nichols
ltiview
evalfr
margin
Lin kt h thng
append
parallel
series
feeback
star
connect
Dng c thit k c in
rlocus
acker
place
estime
170
H thng poles
S truyn h thng cc s 0
Biu Pole-Zero
nh hng DC ( tn s thp)
Ch tiu h thng LTI
Covar of response ln nhiu trng
Tn s t nhin v s suy gim cc h thng
Xp xp cc tnh lin tc bi phn thc
Xp xp cc tnh ri rc bi bin
Xp x pade ca thi gian tr
p ng bc
p ng xung
p ng h thng khng gian trng thi vi trng
thi khi to
p ng u vo tu
p ng phn tch GUI
Pht sinh tn hiu u vo cho lsim
Pht sinh u vo n v -bc
th Bode ca p ng tn s
th gi tr tn s duy nht
th Nyquist
Biu Nichols
p ng phn tch GUI
p ng tn s ti mt tn s nht nh
Gii hn pha v tng ch
Qu tch nghim
S thay th cc SISO
S thay th cc MIMO
Khun dng b nh gi
171
B iu chnh hi tip v phng trnh bc hai tuyn tnh
B iu chnh LQ vi u ra ph
B bin i LQ ri rc sang lin tc
B nh gi Kalman
B bin i LQG c a ra t tng ch LQ v b nh
gi Kalman
-----------------------oOo----------------------
Ch-ng 22
Hp dng c x l tn hiu
172
>>
>>
>>
>>
x = fft(x);
X = fft(x);
Ts = t(2)- t(1);
Ts = t(2)- t(1)
Hnh 22.1
Ts =
0.0196
>> Ws = 2*pi/Ts;
>> Wn = Ws/2
Wn =
160.5354
>> W = linspace(0,Wn,length(t)/2);
>> Xp = abs(X(1:length(t)/2));
>> plot(w,Xp)
th -c v hnh 22.2
173
Hnh 22.2
>> i = find(w<=20);
>> plot(w(i),Xp(i))
>> grid
>> xlabel('tan so, rad/s')
>> titile('Pho bien do cua tin hieu nhieu')
Pho bien do cua tin hieu nhieu
1400
1200
1000
800
600
400
200
0
0
10
tan so, rad/s
Hnh 22.3
15
20
174
ch-ng 23
tr gip
23.1 Ca s lnh tr gip
MATLAB tr gip mt s lnh gip bn truy nhp thng tin nhanh chng v cc lnh ca
MATLAB hoc cc hm bn trong ca s lnh, bao gm help, lookfor,whatsnew, v info.
23.1.1 Lnh help
Lnh help ca MATLAB l cch n gin nht nhn tr gip nu bn bit -c topic ca ci
cn tr gip. Nhp vo lnh help topic, mn hnh s hin th ni dung ca topic nu nh- n tn ti.
V nh-:
>> help sqrt
SQRT
Square root.
SQRT(x) is the square root of the elements of x. complex
results are produced if X is not positive
See also SQRT
Bn s nhn -c tr gip ca MATLAB v hm cn bc hai. Mt khc, nu nh- bn nhp vo
dng lnh sau:
>> help cows
cows not found
th MATLAB s khng bit g v cows. Bi v hm ny khng c trong th- vin mu.
Ch : trong v d trn, SQRT -c vit ch hoa. Tuy nhin khi s dng sqrt khng bao gi l ch in,
do MATLAB l mt ngn ng cht ch nn SQRT s khng -c bit n v qu trnh s sinh ra li.
>> SQRT (2)
??? SQRT (
|
Missing operator, coma, or semicolon.
tm tt, tn hm -c in hoa cho d c nhng khi s dng, hm s dng k t thng th-ng.
Lnh help hot ng tt nu nu nh- bn bit chnh xc topic m bn mun tr gip m iu
ny th-ng kh thc hin, help h-ng dn bn trc tip truy tm chnh xc cc topic m bn mun, bn
ch n gin nhp vo help m khng c topic.
>> help
HELP topics
MATLAB : general
MATLAB : ops
MATLAB : lang
MATLAB : elphun
MATLAB : specfun
MATLAB : matfun
MATLAB : datafun
MATLAB : polyfun
MATLAB : funfun
mc ch chung ca cu lnh
cc ton t v cc k hiu c bit
xy dng ngn ng lp trnh.
cc hm ton hc s ng
cc hm ton hc c bit
hm ma trn - i s hc tuyn tnh
- hm bin i fourier v phn tch d liu
- cc a thc v php ni suy
- ph-ng n gii cc ODE v cc hm ca hm
MATLAB : sparfun
MATLAB : graph2d
MATLAB : graph3d
MATLAB : specgraph
MATLAB : graphics
MATLAB : uitools
MATLAB : strfun
MATLAB : iofun
MATLAB : timefun
MATLAB : datattypes
MATLAB : MacOS
MATLAB : demos
MATLAB : specmat
MATLAB : local
MATLAB : cntol
MATLAB : signal
MATLAB : symbolic
- ma trn sparfun
- ho 2 chiu
- ho 3 chiu
- th ph
- thao tc ho
- cc cng c giao tip ng-i s dng v ho
- xu k t
- tp vo / ra
- ngy thng v thi gian
- cu trc v kiu d liu
- cc hm trong Macintosh
- v d v minh ho
- ma trn c bit
- tham chiu
- hp cng c h thng iu khin
- hp cng c x l tn hiu
- hp cng c ton hc
175
176
whatsnew MATLAB hoc info signal, th file Readme cha thng tin Toolbox s hin th, nu n
tn ti.
23.2 Ca s tr gip
Mt s m rng ca h thng tr gip trong MATLAB5 l ca s help mi. Lnh helpwin s
m ra ca s mi trn mn hnh ca bn v bn c th dng chut i di chuyn thanh sng n mc no
m bn quan tm. Nu dng lnh helpwin m khng c tham s, th ca s help c dng nh- hnh sau:
Hnh 23.1
Nhn kp vo bt c topic no hin th trong ca s help, s hin th mt ca s mi cha cc topic
con hoc cc hm gn vi n.
Nhn kp vo bt c biu t-ng no trong s hin th thng tin tr gip v mc .
HELP Topic
Th- mc MATLAB
Mc ch chung ca cu lnh
Qun l -ng dn
path
addpath
rmpath
editpath
Qun l cc hm v lnh
what
type
edit
lookfor
which
pcode
inmem
mex
Nhn/to -ng dn
Thm th- mc theo ng dn
Ri th- mc t t -ng dn
Sa i -ng dn
Cu lnh iu khin
echo
more
diary
format
Ly li lnh t file-M
Kim sot u ra cc trang ca s lnh
L-u gi vn bn
Thit lp nh dng cho u ra
177
pwd
dir
delete
getenv
!
dos
unix
vms
web
computer
M-file g ri
debug
dbstop
dbclear
dbcont
dbstack
dbstatus
dbstep
dbtype
dbup
dbquit
dbmex
Cc ton t
plus (+)
uplus (+)
minus ( - )
uminus (-)
mtimes(. *)
times (*)
mpower (^)
power (. ^ )
mldivide (\ )
mrdivide /)
ldivide (.\ )
mdivide (./ )
kron
Ton t quan h
eq (== )
ne ( ~= )
lt (< )
gt (>)
le (<= )
ge (>= )
Ton t logic
and ( & )
Cng
Cng unary
Tr
Tr unary
Nhn ma trn
Nhn mng
Lu tha ma trn
Lu tha mng
Chia tri ma trn
Chia phi ma trn
Chia tri mng
Chia phi ma trn
Sn phm c cng
Bng
Khng bng
Nh thua
Ln hn
Nh thua hoc bng
Ln hn hoc bng
Logic v
178
or ( | )
not ( ~ )
xor
any
all
Logic hoc
Logic ph nh
Logic hoc ph nh
True nu mi phn t ca vector khc khng
True nu tt c cc phn t khc khng
Cc ton t Bitwise
bitand
bitcmp
bitor
bitmax
bitset
bitget
bitshift
Bitwise and
Bit hon thnh
Bitwise OR
Maximum floating point integer
Thit lp bt
Nhn bt
Dch bit
Thit lp cc k t
union
unique
intersect
setdiff
setxor
ismember
Thit lp lin kt
Ch s duy nht
Thit lp s giao nhau
To s khc nhau
Thit lp hoc ph nh
True nu thit lp cc thnh vin
Cc k t c bit
colon
()
[]
{}
.
.
..
...
,
;
%
!
=
transpose(.)
ctranspose( )
horzcat [, ]
vertcat[; ]
subsasgn
bsref
subsindex
Du hai chm
Du ngoc n
Du ngoc vung
Du ngoc nhn
Chm thp phn
Truy nhp cu trc tr-ng
Th- mc m
S tip tc
Du phy
Du chm phy
Ch thch
Lin quan cu lnh ca h iu hnh
Gn
Nhy
Chuyn v
Chuyn v s pc lin hp
Gp chui theo chiu ngang
Gp chui theo chiu ng
Gn subscripted
Tham chiu subscripted
Ch s subscripted
Cu Trc ngn ng lp trnh
Cu lnh iu khin
if
179
elseif
else
end
for
while
break
return
pause
Thi hnh v nh gi
eval
feval
evalin
builtin
assignin
run
Script, hm, v cc bin
script
function
global
mfilename
lists
exist
isglobal
Thao tc vi cc i s
nargchk
nargin
nargout
varagin
varaout
inputname
Hin th thng bo
error
warning
lasterr
errortrap
disp
fprintf
sprintf
u vo t-ng h
input
keyboard
pause
uimenu
uicontrol
Dng vi if
Dng vi if
Kt thc lnh if, for, while
Lp li cu lnh mt s ln
vng lp while
Thot khi vng lp for v while
Tr v t hm gi
Tm dng cho ti khi nhn mt phm bt k
Thc hin xu vi biu thc MATLAB
Thc hin hm ch ra bi xu
nh gi cc biu thc trong khng gian lm vic
Thc hin cc hm c to bi ph-ng php xp chng
Gn cc bin trong khng gian lm vic
Chy script
Hin th thng bo li v hm hu
Hin th thng bo cnh bo
Thng bo li tr-c
B qua li trong qu trnh kim tra
Hin th mt mng
Hin th thng bo nh dng
Ghi d liu nh dng vo mt xu
Nhc ng-i s dng nhp vo
Gi bn phm t M-file
i ng-i s dng nhp d liu vo
To giao din bng chn-ng-i s dng
To giao din ng-i iu khin
180
Thao tc vi ma trn
reshape
diag
tril
triu
fliplr
flippud
flipdim
rot90
find
end
sub2ind
ind2sub
Hng v cc bin c bit
ans
eps
realmax
realmin
pi
i, j
inf
NaN
isNaN
Mng s khng
Mng s 1
Nhn dng ma trn
Ti to v mng
S ngu nhin xp xp ng u
S ngu nhin xp xp thng th-ng
Vector khng gian tuyn tnh
Vector khng gian logarthm
Mng X-Y cho th 3 chiu
Vector khng gian thng th-ng v ch s trong ma trn
Kch c ma trn
di vector
S chiu
Hin th ma trn hoc vn bn
True nu l ma trn trng
True nu ma trn l ng nht
True cho mng s
True cho mng logic
Chuuyn i gi tr s thnh logic
Thay i kch c
Ma trn -ng cho v -ng cho ca ma trn
Trch pha d-i ra ma trn tam gic
Trch pha trn ra ma trn tam gic
Ma trn flip theo h-ng tri /phi
Ma trn flip theo h-ng trn/ di
Ma trn flip dc theo chiu khai bo
Quay i mt gc 90
Tm ch s phn t khc khng
Ch s cui
Ch s tuyn tnh t multiple subscripts
Multiple subscripts t ch s tuyn tnh
Tr li kt qu khi biu thc khng -c gn
Vit d-i dng du phy ng
S du phy ng d-ng ln nht
S du phy ng d-ng nh nht
3.1415926535897...
n v o
V cng
Khng phi l mt s
True nu NaN
181
isinf
isfinite
flops
Cc bin c bit
ans
eps
pi
i, j
inf
NaN
clock
date
flops
nargin
narout
Cc loi ma trn c bit
comban
diag
eye
gallery
hadamar
hankel
hilb
invhilb
linspace
logspace
magic
meshdom
ones
rand
toeplitz
vander
zeros
Cc hm l-ng gic
sin
cos
tan
asin
acos
atan
atan2
sinh
cosh
tanh
Bu bn
-ng cho
Nhn dng
B mt
Hadamard
Hankel
Hilbert
Hilbert o
Vector
Vector
Vung Magic
Thc hin cho mesh plots
Hng
Cc phn t ngu nhin
Toeplitz
Vandermonde
Khng
182
asinh
acosh
atanh
Cc hm ton hc
abs
angle
sqrt
real
imag
conj
round
fix
floor
ceil
sign
rem
exp
log
log10
Cc hm c bit
airy
besselj
bessely
besselh
besseli
besselk
beta
betainc
betaln
erf
erfc
ellipk
ellipj
gamma
gammaln
inverf
rat
Hm l thuyt s hc
factor
isprime
primes
gcd
lcm
rat
rats
perms
nchoosek
Arcsine hyperpolic
Arccosine hyperpolic
Arctangent hyperpolic
Tr tuyt i hoc bin s phc
Gc pha
Cn bc hai
Phn thc
Phn o
Phc lin hp
Lm trn n s nguyn gn nht
Lm trn n khng
Lm trn n m v cng
Lm trn n v cng
Hm du
S lu li hoc cc khi ( modulus)
Hm m c s e
Logarithm t nhin
Log 10 c s
Hm airy
Hm Bessel loi th nht
Hm Bessel loi th hai
Hm Bessel loi th ba ( hm Hankel )
Sa i hm Bessel loi th nht
Sa i hm Bessel loi th hai
Hm beta
Hm beta khng hon ton
Hm logarithm beta
Hm li
Hm li thnh phn
Php tch phn elliptic
Hm elliptic Jacobian
Hm gamma
Hm logarithm gamma
Hm li ng-c
Xp x
H s s khai
True nu l s s khai
Danh sch cc s s khai
B chia chung ln nht
Php nhn chung nh nht
Xp x hu t
u ra hu t
S hon v
S t hp chp K ca N phn t
ho
183
Trang ho
plot
loglog
semilogx
semilogy
polar
mesh
contour
meshdom
bar
errorbar
title
xlabel
ylabel
grid
text
gtext
ginput
iu khin ca s ho
axis
zoom
hold
shg
clg
subplot
184
th tuyn tnh X-Y
th loglog X-Y
th semi-log X-Y
th semi-log X-Y
th to cc
Mt l-i khng gian 3 chiu
th -ng bao
Min trong ca th l-i
Biu hnh ch nht
Thm vo errorbars
Tiu th
Nhn trc x
Nhn trc y
K -ng l-i trong th
Vn bn v tr bt k
Vn bn v tr con tr
Nhp ho
Cn chnh trc to v hnh dng ca n
Co vo hoc dn ra th
Gi th trn mn hnh
Hin th th nn mn hnh
Xo th trn mn hnh
Tch ca s ho
ho TRONG KHNG GIAN 3 chiu
Bng mu
hsv
hot
gray
pink
white
bone
.
..
iu chnh trc
axis
zoom
grid
box
hold
axes
185
Bng gi tr mu bo ho
Bng mu en- trng- - vng
Bng mu chia theo xm tuyn tnh
Mu hng
Mu trng
Mu xm pha ln xanh da tri
Ch thch ho
title
xlabel
ylabel
zlabel
colorbar
text
gtext
Tiu ho
Nhn trc x
Nhn trc y
Nhn trc z
Hin th thanh mu
Ch thch vn bn
Di vn bn n v tr chut
chui k t
To mt chui k t
Chuyn chui sang m s k t
To mng chui t bo t mng k t
Xu rng
Di chuyn cc xu rng
Thc hin xu vi biu thc MATLAB
True
True
True
True
nu l chui k t ( xu )
nu l mng chui t bo
nu l ch hoa trong bng ch ci
nu l k t rng
Kt ni xu
Kt ni dc xu
So snh chui
So snh N k t u tin ca chui
Tm mt xu bn trong xu khc
Mng k t ng u
Thay th chui bng chui khc
Tm th bi trong chui
Chuyn chui sang ch hoa
Chuyn chui sang k t thng th-ng
186
Chui v vn bn
abs
num2str
int2str
settr
sprintf
hex2num
M v ng file
fopen
fclose
File nh phn i/o
fread
fwrite
File i/o nh dng
fscanf
fprintf
fgetl
fgets
input
V tr file
ferror
feof
fseek
ftell
frewind
Cc hm xut nhp file
load
save
dlmread
dlmwrite
Xut nhp file o
imread
imwrite
imfinfo
Xut nhp file audio
auwrite
auread
wavwrite
wavread
M file
ng file
c d liu nh phn t file
Vit d liu nh phn ln file
c d liu nh dng t file
Ghi d liu nh dng ln file
c dng lnh t file, thay bng dng mi
c dng lnh t file, gi nguyn dng mi
Hin th ng-i dng nhp vo
Kim ra trng thi file
Kim tra xem kt thc file hay cha
Thit lp b ch th v ch file
Nhn t b ch th v tr file
Rewind file
Ca s lnh I / O
clc
home
disp
input
pause
187
Xo ca s lnh
a con tr v u vn bn
Hin th mng
Thng bo cho ngi s dng nhp vo
i t ng-i s dng tr li
thi gian v ngy
Gi v ngy hin ti
now
date
clock
Cc hm c bn
datenum
datestr
datevec
Hm ngy thng
calendar
weekday
eomday
datetick
Hm m
cputime
tic, toc
etime
pause
S ngy ni tip
Chui thay th ngy
Thnh phn ngy thng
Lch
Ngy trong tun
Kt thc thng
Du tick nh dng cho ngy thng
Thi gian cpu tnh theo n v giy
B m ngng hot ng
Thi gian thit lp
Dng trong mt giy
kiu d liu v cu trc
Kiu d liu
double
sparse
char
cell
struct
uint8
inline
Hm ca mng nhiu chiu
cat
ndims
ndgrid
permute
ipermute
shiftdim
188
Hm ca mng t bo
cell
celldisp
cellplot
num2cell
deal
cell2struct
struct2cell
iscell
Hm cu trc
struct
fieldsnames
getfield
setields
isfield
istruct
To mng t bo
Hin th ni dung ca mng t bo
Hin th thut ho mng t bo
Chuyn i mng s thnh mng t bo
Phn pht u vo n u ra
Chuyn i mng t bo thnh mng cu trc
Chuyn i mng cu trc thnh mng t bo
True nu l mng t bo
To hoc chuyn i thnh mng cu trc
Nhn tn tr-ng cu trc
Nhn li ni dung ca tr-ng cu trc
Thit lp ni dung tr-ng cu trc
True nu tr-ng trong mng cu trc
True nu l mng t bo
chuyn i d liu ng
Hm t DDE
ddeadv
ddeexec
ddeinit
ddereq
ddeterm
ddeunadv
MATLAB/matrn
intro
inverter
matmanip
Ca s lnh
clc
home
format
disp
fprintf
echo
General
hlep
demo
who
what
size
lengh
clear
computer
^C
quit
exit
di vector
Xo khng gian lm vic
Loi my tnh
Hu bin a ph-ng
Lt thc ch-ng trnh
T-ng t nh- quit
i th- mc hin ti
Xo file
Ghi mc
Th mc ca file trn a
Np cc bin t file
L-u cc bin nn file
Lit k hm hoc file
Hin th cc M-file trn a
Vit vo file
Nn b nh qua save
a thc c tr-ng
Nghim a thc- ph-ng php ma trn bu bn
Nghim a thc- ph-ng php Laguerre
c l-ng a thc
c l-ng a thc ma trn
Php nhn
Php chia
Khai trin a thc
S diu chnh chnh lch a thc
Cc hm ma trn v i s tuyn tnh
189
det
trace
null
orth
rref
subspace
nh thc
Tng cc phn t trn -ng cho chnh
Khng gian trng
Tnh trc giao
Rt gn hng theo hnh bc thang
Gc gia hai s m
Gi tr duy nht
svd
svds
poly
polyeig
condeig
qz
schur
Hm ma trn
expm
logm
sqrtm
funm
Ma trn theo hm m
Ma trn logarithm
Ma ttrn bc hai
nh gi chung hm ma trn
190
cumtrapz
Sai phn c hn
diff
gradient
del2
Sai phn v o hm xp x
Gradient xp x
Laplacien ri rc
Bin i fourier ri rc
Bin i fourier ri rc 2 chiu
Bin i fourier ri rc n chiu
Bin i fourier ri rc ng-c
Bin i fourier ri rc hai chiu
Bin i fourier ri rc n chiu
a thc v php ni suy
Php ni suy mt chiu ( tra bng )
Php ni suy tuyn tnh mt chiu nhanh
Php ni suy mt chiu s dng ph-ng php FFT
Php ni suy hai chiu ( tra bng )
Php ni suy ba chiu ( tra bng )
Php ni suy n chiu ( tra bng )
iu chnh b mt v li d liu
hm v gii php ODE
Ti thiu hm mt bin
Ti thiu hm vi bin
Tm hm mt bin khng
191
i t-ng hm inline
inline
argnames
formula
char
192
Xy dng i t-ng INLINE
Tn i s
Th thc hm
Chuyn i i t-ng INLINE thnh mng k t
ma trn ri rc
mc lc
Matlab ton tp....................................................................................................................... 1
ci t........................................................................................................................................... 1
1. MATLAB for WIN..................................................................................................................... 1
a) CD ROM.1
b ) B nh1
ch-ng 1: GII THIU chung ........................................................................................ 2
1.1 Cc php ton n gin ......................................................................................................... 3
1.2 Khng gian lm vic ca MATLAB .................................................................................... 4
1.3 Bin ......................................................................................................................................... 5
1.4 Cu gii thch (comment) v s chm cu ........................................................................... 6
1.5 S phc ................................................................................................................................... 7
ch-ng 2: CC C tnh K THUT........................................................................ 8
2.1 Cc hm ton hc thng th-ng ........................................................................................... 8
ch-ng 3: NHNG C IM CA CA S LNH ...................................... 13
3.1 Qun l khng gian lm vic ca MATLAB ...................................................................... 14
3.2 Ghi v phc hi d liu ........................................................................................................ 15
3.3 Khun dng hin th s ........................................................................................................ 16
ch-ng 4: Script M_files ........................................................................................... 16
ch-ng 5: QUN L Tp .................................................................................................. 19
5.1 MATLAB khi khi ng...................................................................................................... 22
ch-ng 6: cc php ton vi MNg............................................................... 23
193
194
195
196
23.1.3 Lnh whatsnew v info.................................................................................................... 175
23.2 Ca s tr gip................................................................................................................. 176
197
198