Professional Documents
Culture Documents
Part I Basic
Part I Basic
Part I Basic
away.
Matlab
part I
Basis and languge
PhÇn 1. NhËp m«n vÒ ng«n ng÷ Matlab
Ch¬ng 1. C¸c kh¸i niÖm c¬ b¶n.
1.1 Khëi ®éng matlab (trong windows 9x).
1.2 C¸c phÝm chuyªn dông vµ c¸c lÖnh th«ng
dông hÖ thèng.
1.3 BiÕn vµ thao t¸c biÕn
1.4 Sè phøc
1.5 Lµm viÖc ë chÕ ®é héi tho¹i (command
window).
1.6 Lµm viÖc ë chÕ ®é so¹n ch¬ng tr×nh (edit
window).
1.7 S¬ lîc vÒ ®å ho¹.
1.8 C¸c hµm ©m thanh.
Ch¬ng 2. Ma trËn vµ c¸c phÐp to¸n ma trËn
2.1 V« híng, vector vµ ma trËn.
2.2 C¸c ma trËn ®Æc biÖt.
2.3 C¸c phÐp to¸n v« híng
2.4 C¸c phÐp to¸n ma trËn
Ch¬ng 3. LËp tr×nh trong Matlab
3.1 C¸c phÇn tö c¬ b¶n
3.2 Hµm vµ t¹o hµm
3.3 C©u lÖnh CÊu tróc
Ch¬ng 4. §å ho¹ 2 chiÒu
4.1 C¸c phÐp biÕn ®æi ®å ho¹.
4.2 PhÐp biÕn ®æi Affine trong mÆt ph¼ng
4.3. C¸c hµm chuÈn ®å ho¹ 2 chiÒu
Ch¬ng 5. §å ho¹ kh«ng gian 3D
5.1. Hµm ®ång møc (contour).
5.2. Chia líi.
5.3. §å ho¹ 3D.
5.4. MÆt líi ®å ho¹ 3D.
5.5. §å ho¹ bÒ mÆt.
5.6. §iÓm nh×n vµ phÐp phèi c¶nh.
5.7. MÆt c¾t (slice).
Page 1 of 73
5.8. MÇu s¾c vµ c¸c hÖ mµu
part II
matlab symbolic
part III
numerical method
Page 2 of 73
Basic concepts
ma trËn (matrix):
vÐc t¬ (vector):
v« híng (scalar):
kiÓu khèi(cell):
Page 3 of 73
PhÇn I
NhËp m«n vÒ ng«n ng÷ Matlab
Giíi thiÖu
-Matlab lµ phÇn mÒm cña c«ng ty Math Works céng hoµ SÐc.
-C«ng dông : Matlab lµ ch¬ng tr×nh phÇn mÒm trî gióp cho viÖc
tÝnh to¸n vµ hiÓn thÞ c¸c bµi to¸n kü thuËt. Matlab ®îc ®iÒu khiÓn
bëi tËp hîp c¸c lÖnh, t¸c ®éng qua bµn phÝm trªn cöa sæ ®iÒu
khiÓn (Command Window). Nã còng cho phÐp mét kh¶ n¨ng lËp
tr×nh víi th«ng dÞch tËp hîp lÖnh-lËp tr×nh scrip file.
-Matlab lµ viÕt t¾t cña tõ Matrix Laboratory.
-§Æc ®iÓm cña ng«n ng÷ Matlab:
+Xö lý c¸c ma trËn thùc, phøc, c¸c x©u kÝ tù.
+KÕt hîp phÐp tÝnh logic víi sè häc..
+C¸c hµm ®å ho¹ m¹nh vµ dÔ dµng kÕt hîp víi qu¸ tr×nh tÝnh
to¸n.
+Hç trî c¸c c«ng cô m¹nh cho c¸c øng dông cô thÓ
-ChÕ ®é lµm viÖc:
+Héi tho¹i ngêi-m¸y (user-machine at command window): Cho
phÐp nhËp lÖnh tõ bµn phÝm vµ thu ®îc c¸c kÕt qu¶ sö
lýlÖnh tõ m¸y tÝnh.
+ChÕ ®é lËp tr×nh: C¸c lÖnh ®îc chuÈn bÞ trªn mét file ch¬ng
tr×nh vµ cho phÐp ch¹y ch¬ng tr×nh tõ c¸c file lÖnh nµy.
-Cã nhiÒu phiªn b¶n kh¸c nhau (versions), cho phÐp ch¹y trªn c¸c
m¸y tÝnh cã hÖ ®iÒu hµnh kh¸c nhau nh DOS, UNIX, APPLE,
WINDOWS, LINUX...
-Víi Matlab, c¸c vÊn ®Ò cÇn gi¶i quyÕt cña b¹n sÏ ®îc ph©n tÝch vµ
xö lý theo 5 bíc nh sau[1]:
Bíc 1: §Æt vÊn ®Ò.
Bµi to¸n ®Æt ra cÇn ®îc ph©n tÝch, biÓu diÔn mét
c¸ch râ rµng vµ cô thÓ. §©y lµ bíc më ®Çu rÊt quan
träng, nã quyÕt ®Þnh toµn bé híng gi¶i quyÕt tiÕp theo
cña bµi to¸n ®Æt ra.
Bíc 2: M« t¶ c¸c gi¸ trÞ d÷ liÖu vµo/ra.
ViÖc m« t¶ c¸c th«ng tin cÇn gi¶i ®¸p cã liªn quan trùc
tiÕp ®Õn c¸c tham sè ®îc sö dông trong qu¸ tr×nh tÝnh
to¸n, bëi vËy bíc nµy cÇn ®îc tiÕn hµnh cÈn träng. Trong
nhiÒu trêng hîp, s¬ ®å khèi ®îc sö dông ®Ó x¸c ®Þnh
vÞ trÝ luång vµo/ra, tuy nhiªn ®«i khi chóng chØ lµ hép
®en v× kh«ng thÓ x¸c ®Þnh ®îc luång ra t¹i mét
®iÓm nµo ®ã trong c¸c bíc. MÆc dÇu vËy, ta vÉn chØ
ra ®îc nh÷ng th«ng tin ®Ó tÝnh to¸n luång ra.
Page 4 of 73
Bíc 3: C¸c tÝnh to¸n b»ng tay víi c¸c tËp d÷ liÖu ®Çu vµo
®¬n gi¶n
§©y lµ bíc ®Ó nh»m t×m kiÕm nh÷ng gi¶i ph¸p cô thÓ,
b¹n kh«ng nªn bá qua kÓ c¶ ®èi víi c¸c bµi to¸n ®¬n
gi¶n. NÕu trong bíc nµy b¹n cha lÊy ®îc d÷ liÖu hay cha
tÝnh ®îc ®Çu ra th× cã thÓ chuyÓn sang bíc kÕ tiÕp.
Bíc 4: ChuyÓn bµi to¸n sang gi¶i ph¸p b»ng Matlab.
ë bíc nµy b¹n sÏ sö dông c¸c hµm to¸n, còng lµ c¸c lÖnh
®Ó m« t¶ bµi to¸n theo Matlab
Bíc 5: KiÓm tra.
§©y lµ bíc cuèi cïng trong tiÕn tr×nh gi¶i bµi to¸n. Bµi
to¸n ®îc kiÓm tra b»ng c¸c d÷ liÖu ®Çu vµo. Matlab
thùc hiÖn bµi to¸n vµ cho b¹n kÕt qu¶ ë ®Çu ra.
Trong trêng hîp kh«ng cã kÕt qu¶ hoÆc kÕt qu¶ sai th×
®iÒu ®ã cã nghÜa lµ Matlab cha thùc hiÖn ®îc bµi to¸n,
b¹n cÇn kiÓm tra l¹i c¶ tÝnh to¸n b»ng tay vµ thao t¸c b»ng
Matlab.
Page 5 of 73
Ch¬ng 1
C¸c kh¸i niÖm c¬ b¶n
-Khíi ®éng matlab: KÝch chuét vµo nót Start chän Program
chän Matlab chän Matlab 5.3 hoÆc kÝch chuét vµo biÓu t-
îng cña Matlab trªn Desktop.
-Giao diÖn cña Matlab gåm :
+Mét cöa sæ lÖnh (command window)
+Mét cöa sæ so¹n (edit window)
th¶o
+NhiÒu cöa sè ®å (figures)
ho¹
-ViÖc ng¾t ch¬ng tr×nh ®ang thùc hiÖn kh«ng ®óng theo yªu cÇu
th«ng qua phÝm nãng Ctrl+C .
-§Ó tho¸t ra khái m«i trêng lµm viÖc Matlab, chóng ta cã thÓ sö
dông c¸c lÖnh cña Matlab lµ : » quit hoÆc » exit
1.2 C¸c phÝm chuyªn dông vµ c¸c lÖnh th«ng dông hÖ thèng.
Page 6 of 73
input NhËp d÷ liÖu tõ bµn phÝm
load T¶i c¸c biÕn lu trong 1 file ®a vµo vïng lµm viÖc.
pause LÖnh t¹m thêi dõng ch¬ng tr×nh ®Õn phÝm bÊt
k× ®îc nhÊn.
save Lu gi÷ c¸c biÕn vµo file Matlab.mat
version Cho biÕt phiªn b¶n hiÖn t¹i cña Matlab.
ver Cho biÕt phiªn b¶n hiÖn t¹i cña c¸c toolbox ®· cã.
what Cho biÕt danh s¸ch Matlab-file th môc hiÖn t¹i.
which Cho biÕt ®êng dÉn cña 'file_name'.
Tªn biÕn trong Matlab (tõ 5.3 trë ®i) cã thÓ dµi tíi 31 kÝ tù bao
gåm c¸c ch÷ c¸i A-Z hay a-z cïng c¸c ch÷ sè vµ dÊu g¹ch díi '_', tªn
ph¶i ®îc b¾t ®Çu b»ng ch÷ c¸i, tªn biÕn kh«ng ®îc ®Æt trïng víi
tªn c¸c tõ kho¸. Tªn c¸c hµm ®· ®îc ®Æt còng cã thÓ ®îc sö dông
lµm tªn cña biÕn, vµ hµm nµy sÏ mÊt t¸c dông cho ®Õn khi biÕn ®ã
®îc xo¸.
C¸c hµm t¸c ®éng lªn biÕn:
clear all Xo¸ tÊt c¶ c¸c biÕn hiÖn cã trong
vïng nhí.
clear ChØ xo¸ c¸c biÕn cã tªn chØ ®Þnh.
name2,name2,...
exist('name') Tr¶ vÒ ®Þnh nghÜa cña 'name':
0 nÕu 'name' kh«ng tån t¹i.
1 nÕu 'name' lµ biÕn.
2 nÕu 'name' lµ tªn m-file.
3 nÕu 'name' lµ MEX-file.
4 nÕu 'name' lµ MDL-file.
5 nÕu 'name' hµm built-in.
6 nÕu 'name' lµ P-file.
7 nÕu 'name' lµ tªn th môc.
pack LÖnh thùc hiÖn s¾p xÕp l¹i vïng nhí
cho c¸c biÕn. Khi bé nhí m¸y tÝnh
®Çy, lÖnh pack cho phÐp t¹o ra
thªm vïng nhí cho biÕn mµ kh«ng
ph¶i xo¸ c¸c biÕn ®· tån t¹i.
who HiÓn thÞ tªn c¸c biÕn.
whos HiÓn thÞ tªn vµ kiÓu c¸c biÕn.
who global HiÓn thÞ c¸c biÕn côc bé.
who -file 'filename' HiÓn thÞ c¸c biÕn trong tªp
filename.mat.
Page 7 of 73
§é lín, hay chiÒu dµi cña biÕn vector còng nh ma trËn ®îc x¸c
qua c¸c hµm cã s½n cña Matlab.
size(A) Tr¶ vÒ vector 2 phÇn tö, phÇn tö ®Çu cho biÕt
sè hµng cña ma trËn, phÇn tö ®Çu cho biÕt sè
cét cña ma trËn
[m,n]=size( Tr¶ gi¸ trÞ ®é lín cña ma trËn, m-sè hµng, n-sè
A) cét.
size(A,p) Tr¶ vÒ sè hµng nÕu p=1 vµ sè cét nÕu p2.
length(x) Tr¶ vÒ gi¸ trÞ sè lîng phÇn tö cña x.
length(A) Tr¶ gi¸ vÒ trÞ max(m,n) víi [m,n]=size(A).
ans BiÕn cã s½n ®îc dïng lu kÕt qu¶ phÐp tÝnh cuèi cïng.
eps Tr¶ vÒ ®é chÝnh x¸c t¬ng ®èi tÝnh to¸n cña m¸y x¸c
®Þnh kho¶ng tõ 1.0 ®Õn sè ph¶y ®éng lín nhÊt tiÕp
theo. EPS ®îc sö dông lµ sai sè cho phÐp mÆc ®Þnh
cña pinv, rank vµ c¸c hµm kh¸c.
pi Tr¶ vÒ trÞ 3.1415926535897…
realmax Cho biÕt gi¸ trÞ lín nh
Êt m¸y tÝnh cã thÓ tÝnh to¸n ®îc, c¸c sè lín h¬n gi¸
trÞ nµy sÏ g©y trµn trªn.
realmin Cho biÕt gi¸ trÞ nhá nhÊt m¸y tÝnh cã thÓ tÝnh to¸n
®îc, c¸c sè lín bÐ gi¸ trÞ nµy sÏ g©y trµn díi.
inf biÓu diÔn sè v« cïng
NaN biÓu diÔn kÕt qu¶ 0/0, -
1.4 Sè phøc.
Page 8 of 73
abs(a1+i*b1 Tr¶ vÒ modul a12 b12 cña sè phøc
)
angle(a+i*b TÝnh gãc cã gi¸ trÞ lµ atan2(b,a), gi¸ trÞ gãc
)
-T¹i dÊu mêi » gâ dßng lÖnh, dßng lÖnh sÏ ®îc thùc hiÖn ngay lËp
tøc sau khi nhÊn phÝm Enter . KÕt qu¶ sÏ ®îc ®a ra cöa sæ lÖnh
hoÆc cöa sæ ®å ho¹. NÕu cã lçi, lçi sÏ ®îc ghi ngay t¹i cöa sæ
lÖnh.
-Qui t¾c viÕt dßng lÖnh:
+Trªn 1 dßng cã thÓ viÕt nhiÒu lÖnh, c¸c lÖnh ®îc ph©n c¸ch
bëi dÊu ',' hoÆc ';'. NÕu kÕt qu¶ lÖnh tr¶ vÒ gi¸ trÞ sè vµ kÕt thóc
bëi dÊu ',' kÕt qu¶ sÏ ®îc in trªn cöa sæ lÖnh, cßn nÕu kÕt thóc bëi
dÊu ';' kÕt qu¶ sÏ kh«ng ®îc in ra. Víi c¸c lÖnh kh«ng tr¶ vÒ biÕn
nµo, dÊu ph©n c¸ch lÖnh ',' vµ ';' lµ nh nhau.
+Khi lÖnh qu¸ dµi, hoÆc muèn viÕt trªn nhiÒu dßng lÖnh dïng
dÊu ... ®Ó matlab nhËn dßng tiÒp theo.
Page 9 of 73
-ChØ nªn sö dông chÕ ®é héi tho¹i khi gi¶i bµi to¸n cã cÊu tróc ®¬n
gi¶n. Cßn víi bµi to¸n cã cÊu tróc phøc t¹p nªn sö dông chÕ ®é lËp
tr×nh.
Kh¶ n¨ng ®å ho¹ trong Matlab rÊt phong phó cho phÐp vÏ hÇu
hÕt c¸c d¹ng ®å thÞ vµ c¸c d¹ng biÓu ®å cho c¸c th«ng tin trong
mÆt ph¼ng (2D) vµ trong kh«ng gian (3D).
c¸c lÖnh ®å ho¹ ®¬n gi¶n:
plot(x1,y1,s1,x2,y VÏ c¸c ®å thÞ trong mÆt ph¼ng to¹
2,s2,..) ®é ®Òc¸c víi kiÓu ®êng chØ ®Þnh
trong s1,s2..
plot(y) NÕu y lµ d·y sè
thùcplot(i=1:length(y),y).
nÕu y lµ sè
phøcplot(real(y),imag(y)).
plot3(x1,y1,z1,s1,. VÏ c¸c ®å thÞ trong kh«ng gian to¹
.) ®é ®Òc¸c víi kiÓu ®êng chØ ®Þnh
trong s1,..
title('tiªu ®Ò ®å §a tiªu ®Ò ®å thÞ.
Page 10 of 73
thÞ')
xlabel, ylabel, §a vµo c¸c nh·n cho c¸c trôc x, y, z.
zlabel
legend LÖnh ®a vµo chó thÝch ®êng vÏ.
grid LÖnh vÏ c¸c ®êng dãng trªn ®å thÞ.
Vi du ve ham 3D
VÝ dô:
» t=linspace(0,2*pi,40); 8
» plot3(sin(t),t.*cos(t),t);
6
» title('Vi du ve ham 3D');
» xlabel('x'),ylabel('axis y'), 4
t
» zlabel('t'), grid on; 2
0
10
1
5
0.5
0 0
-0.5
axis y -5 -1
x
0.5
-0.5
-1
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
x t 3 3t 1;
VÏ ®êng cong tham sè cho bëi ph¬ng tr×nh:
y t 3 3t 1;
» t=linspace(-2.5,2.5);x=t.^3-3*t+1;y=t.^3+3*t-1;
» plot(x,y);grid on;axis tight;
» xlabel('x'); ylabel('y');title('Do thi duong cong tham so');
Page 11 of 73
Do thi duong cong tham so
20
15
10
y
-5
-10
-15
-20
-6 -4 -2 0 2 4 6 8
x
H×nh
2D.
» [x,y]=meshgrid(linspace(-2,2));
» z=(x.^2-3*y.^2).*exp(-(x.^2+y.^2));pcolor(x,y,z);
» shading interp; colorbar;
H×nh
Matlab cho phÐp t¹o ©m thanh th«ng qua c¸c vector bëi hµm
sound().
sound(v) T¹o tÝn hiÖu tõ vector v ra ©m thanh,
vector v ph¶i ®îc chuÈn ho¸ -1y1, c¸c
gi¸ trÞ ngoµi kho¶ng sÏ bÞ c¾t, tèc ®é
mÉu mÆc ®Þnh lµ 8192Hz. Muèn cã ©m
thanh stereo v lµ vector 2 cét.
sound(v,fs) Thùc hiÖn nh hµm sound(v) víi f lµ d¶i
tÇn Hz.
sound(y,fs,bi T¹o ©m thanh víi tèc ®é mÉu bits/mÉu
ts) nÕu cã kh¶ n¨ng. HÇu hÕt c¸c thiÕt bÞ
Page 12 of 73
cho phÐp bits=8 hay 16.
soundsc(v,sli T¬ng tù sound() nhng sÏ t¹o ©m thamh
m) víi gi¸ trÞ sè bÊt k× cña v, v sÏ ®îc chuÈn
ho¸ theo slim=[slow s high], mÆc ®Þnh
slim=[min(v) max(v)]
Page 13 of 73
ch¬ng 2
Ma trËn vµ c¸c phÐp to¸n ma trËn
2.1 V« híng, vector vµ ma trËn.
Ma trËn (matrix) lµ 1 b¶ng sè mµ c¸c phÇn tö cña nã ®îc s¾p
xÕp theo hµng vµ cét. Ma trËn chØ cã mét hµng hoÆc mét cét ®îc
gäi lµ vÐc t¬ (vector). Ma trËn chØ cã mét hµng vµ mét cét ®îc gäi
lµ ®¹i lîng v« híng (scalar).
KÝ hiÖu to¸n häc ma trËn vµ vector:
Page 14 of 73
>>b=[1.2 -2 3.01 4+i*3.234]; %vector hµng
>>e=[-2;3;i]; %vector cét
>>A=[1 0 0; 0 1 0; 0 0 1]; %ma trËn 3x3
Cã thÓ xuèng dßng ®Ó ph©n biÖt tõng hµng cña ma trËn.
>>e=[-2
3
i];
>>A=[1 0 0
010
0 0 1];
Cã thÓ ®Þnh nghÜa ma trËn tõ c¸c phÇn tö kh¸c.
>>a=[1 2.4 -4.7];
>>b=[1.3 -34.67 a];
>>A=[a;a];
Ma trËn b cã gi¸ trÞ lµ [1.3 -34.67 1 2.4 -4.7];
Ma trËn A cã gi¸ trÞ lµ[1 2.4 -4.7;1 2.4 -4.7];
Truy cËp c¸c phÇn tö cña ma trËn b»ng c¸ch sö dông chØ sè cña
nã:
>>s=a(3); %s cã gi¸ trÞ lµ -4.7
>>a(1)=3.14; %phÇn tö thø nhÊt cña a thay ®æi tõ 1 thµnh
3.14
Còng cã thÓ më réng ma trËn b»ng c¸ch thªm cho nã phÈn tö
míi. Cho c©u lÖnh sau:
>>a(4)=-1.98;
ma trËn a lóc nµy sÏ cã 4 phÇn tö a=[1 2.4 -4.7 -1.98];
cßn víi c©u lÖnh:
>>a(7)=2.07;
th× ma trËn a sÏ cã 7 phÇn tö, c¸c phÇn tö a(5), a(6) sÏ tù ®éng
nhËn gi¸ trÞ lµ 0.
Page 15 of 73
format short Sè dÊu phÈy cè ®Þnh, víi 5 ch÷ sè cã nghÜa
sau dÊu ph¶y
format long Sè dÊu phÈy cè ®Þnh, víi 15 ch÷ sè cã
nghÜa sau dÊu ph¶y
format short Sè dÊu phÈy ®éng, víi 5 ch÷ sè cã nghÜa sau
e dÊu ph¶y
format long Sè dÊu phÈy ®éng, víi 15 ch÷ sè cã nghÜa
e sau dÊu ph¶y
format short Lùa chän tèt nhÊt phÈy cè ®Þnh hay ®éng
g víi 5 ch÷ sè cã nghÜa sau dÊu ph¶y
format long Lùa chän tèt nhÊt phÈy cè ®Þnh hay ®éng
g víi 15 ch÷ sè cã nghÜa sau dÊu ph¶y
format rat BiÓu thÞ sè thùc vÒ sè h÷u tØ gÇn nhÊt.
disp HiÓn thÞ néi dung cña biÕn.
fprintf Hµm cho phÐp hiÓn thÞ theo c¸c khu«n d¹ng
chØ ®Þnh.
sprintf Hµm tr¶ vÒ x©u kÝ tù in theo c¸c khu«n d¹ng
chØ ®Þnh.
Page 16 of 73
2.3.1 BiÓu thøc sè häc cho v« híng.
PhÐp to¸n BiÓu thøc sè häc Matlab
Céng a+b a+b
Trõ a-b a-b
Nh©n a.b a*b
Chia a/b a/b
Chia tr¸i b:a a\b
Luü thõa ab a^b
Page 17 of 73
A.^c a+b
ans = ans =
1 4 9 2 2 9 0
49 36 25 b.^c
9 0 1 ans =
A+B 1 0 4 4
ans = c.^a
2.1000 4.4000 8.6000 ans =
6.0000 -9.6000 13.0000 2.0000 4.0000 128.0000
0 2.0000 -2.0000 0.2500
a+c
B+c
ans =
ans =
3 4 9 0
3.1000 4.4000 7.6000
c./a
1.0000 -1.6000 10.0000
ans =
-1.0000 4.0000 1.0000
2.0000 1.0000 0.2857
-1.0000
Page 18 of 73
A+D D.'
ans = ans =
1.0000 + 1.0000i 4.0000 -3.0000 0 + 1.0000i 5.0000
9.0000 -1.0000 8.0000 - 1.0000i 2.0000 4.0000
-6.0000 2.0000 -
1.0000i
A*E B*A D'
ans = ans = ans =
-8.0000 + -3 7 -3 0 - 1.0000i 5.0000
2.0000i 7 -12 9 2.0000 4.0000
-14.0000 - 5.0000i -6.0000 2.0000 - 1.0000i
inv(B) B^3 pinv(A)
ans = ans = ans =
2 1 5 -8 0.0310 0.0471
1 1 -8 13 0.2291 -0.1006
0.1702 0.0514
B*inv(B) A*pinv(A) pinv(E)
ans = ans = ans =
1 0 1.0000 -0.0000 0.0909 0 - 0.0909i -0.2727
0 1 0.0000 1.0000
A\D A/D
ans = ans =
0 0 0 -0.3023 - 0.0284i 0.3874
-0.5556 + 0.2222i 0.0000 + 0.0562i
-1.5556 + 0.1111i -1.1033 - 0.0920i 0.1669 +
0.3704 + 0.1852i 0.6667 -0.9630 - 0.0984i
0.0741i
Matlab cung cÊp nhiÒu hµm cho phÐp thao t¸c trªn ma trËn:
Hµm Thao t¸c
Rot90(A,n) C¸c phÇn tö cña ma trËn A ®îc quay mét gãc 90o ng-
îc chiÒu kim ®ång hå. NÕu cã thªm tham sè n sÏ
quay n lÇn.
fliplr(A) §¶o c¸c phÇn tö cña ma trËn A tõ tr¸i sang ph¶i.
flipud(A) §¶o c¸c phÇn tö cña ma trËn A tõ trªn xuèng díi.
Bpq=Reshape(A §Þnh d¹ng l¹i ma trËn, yªu cÇu pxq=mxn.
mn)
sort(A) Tr¶ vÒ ma trËn víi c¸c cét ®îc s¾p xÕp tõ nhá ®Õn lín. Sè
phøc ®îc xÐt b»ng modul cña nã.
ChÝch c¸c phÇn tö cña ma trËn.
diag(A) LÊy c¸c phÇn tö cña ma trËn trªn ®êng chÐo chÝnh, tr¶ vÒ
vector cét
diag(A,k LÊy c¸c phÇn tö cña ma trËn trªn ®êng chÐo tuú chän k:
) k=0 chän ®êng chÐo chÝnh.
k>0 chän ®êng chÐo thø k ë phÝa trªn ®êng chÐo
chÝnh.
k<0 chän ®êng chÐo thø k ë phÝa díi ®êng chÐo
chÝnh.
triu(A) Lµ ma trËn cïng cì víi A. LÊy c¸c phÇn tö trªn ®êng chÐo
Page 19 of 73
chÝnh thø vµ phÝa trªn ®êng chÐo chÝnh. c¸c vÞ trÝ kh¸c
b»ng kh«ng.
triu(A,k) LÊy c¸c phÇn tö ë phÝa trªn ®êng chÐo thø k vµ phÝa trªn.
tril(A) Lµ ma trËn cïng cì víi A. LÊy c¸c phÇn tö trªn ®êng chÐo
chÝnh vµ n»m díi ®êng chÐo chÝnh. c¸c vÞ trÝ kh¸c b»ng
kh«ng.
tril(A,k) LÊy c¸c phÇn tö ë phÝa díi ®êng chÐo chÝnh thø k vµ phÝa
díi.
Thao t¸c c¸c phÇn tö cña ma trËn.
A(i,j) Thao t¸c phÇn tö aij cña ma trËn A.
i=1,m; [m,n]=size(A).
j=1,n
: To¸n tö
x=a:d:b T¹o vector hµng x=a:d:b, t¹o cÊp sè p phÇn tö (p=[(b-
y=a:b a)/d], p lµ phÇn nguyªn) x(i)=a+i*d víi i=1,2,..,p.
b>a nÕu d>0.
b<a nÕu d<0.
nÕu d=1 viÕt y=a:b;
A(:,k) Thao t¸c cét thø k cña ma trËn.
A(l,:) Thao t¸c hµng thø l cña ma trËn.
A(:) Nèi c¸c cét cña ma trËn A thµnh vector cét.
end To¸n tö
A(end) Thao t¸c phÇn tö cuèi cïng cña ma trËn.
A(end,k) Thao t¸c phÇn tö cuèi cïng cña cét thø k.
A(l,end) Thao t¸c phÇn tö cuèi cïng cña hµng thø l.
A(p:q,k) Thao t¸c phÇn tö tõ vÞ trÝ p ®Õn vÞ trÝ q cña cét thø
k.
A(l,p:q) Thao t¸c phÇn tö tõ vÞ trÝ p ®Õn vÞ trÝ q cña hµng
thø l.
A(p:q,l:k Thao t¸c ma trËn con .
)
x(v) Thao t¸c c¸c phÇn tö ®îc cho trong vector chØ sè v.
A(:,v) Thao t¸c c¸c cét chØ ®Þnh trong vector chØ sè v.
A(v,:) Thao t¸c c¸c hµng chØ ®Þnh trong vector chØ sè v.
Page 20 of 73
C=rot90(A,2);
E=fliplr(A);
D=flipud(A);
F=reshape(A,6,2);
a=A(:);
b=A(:,2);
c=A(3,:);
d=A(1:3,2);
e=A(end);
f=A(1:2,2:3);
v=[1 3 5 7];
g=A(v);
Page 21 of 73
A= F= b=
1 3 5 7 1 5 3
2 4 6 8 2 6 4
9 8 7 6 9 7 8
B= 3 7 c=
7 8 6 4 8 9 8 7 6
5 6 7 8 6 d=
3 4 8 a= 3
1 2 9 1 4
C= 2 8
6 7 8 9 9 e=
8 6 4 2 3 6
7 5 3 1 4 f=
E= 8 3 5
7 5 3 1 5 4 6
8 6 4 2 6 v=
6 7 8 9 7 1 3 5 7
D= 7 g=
9 8 7 6 8 1 9 4 5
2 4 6 8 6
1 3 5 7
VÝ dô 2:
A=[1+i 1-3*i 12; 1 2.3 -4;2 -1-2.1*i -1; 1 2 4];
rA=A(find(imag(A)==0));
pA=A(find(A>0));
nA=A(find(A<0));
aAb=A(find(1<A&A<4));
sA=sort(A);
rA = -1.0000 - 2.1000i
1.0000 -4.0000
2.0000 -1.0000
1.0000
2.3000 aAb =
2.0000 2.0000
12.0000 2.3000
-4.0000 2.0000
-1.0000
4.0000 sA =
pA = 1.0000 2.0000 -1.0000
1.0000 + 1.0000i 1.0000 2.3000 4.0000
1.0000 1.0000 + 1.0000i -1.0000 - 2.1000i -4.0000
2.0000 2.0000 1.0000 - 3.0000i 12.0000
1.0000
1.0000 - 3.0000i
2.3000
2.0000
12.0000
4.0000
nA =
VÝ dô 3:
A=[1+i 1-3*i 12; 1 2.3 -4;2 -1-2.1*i -1; 1 2 4];
tuA=triu(A)
tuA1=triu(A,2)
tuA1=triu(A,-1)
tlA=tril(A)
tlA1=tril(A,2)
tlA1=tril(A,-1)
tuA = 0 -1.0000 - 2.1000i
1.0000 + 1.0000i 1.0000 - 3.0000i -1.0000
12.0000 0 0
0 2.3000 4.0000
-4.0000
0 0
-1.0000 tlA =
0 0 1.0000 + 1.0000i 0
0 0
tuA1 = 1.0000 2.3000
0 0 12 0
0 0 0 2.0000 -1.0000 - 2.1000i
0 0 0 -1.0000
0 0 0 1.0000 2.0000
tuA1 = 4.0000
1.0000 + 1.0000i 1.0000 - 3.0000i tlA1 =
12.0000 1.0000 + 1.0000i 1.0000 - 3.0000i
1.0000 2.3000 12.0000
-4.0000 1.0000 2.3000
-4.0000
2.0000 -1.0000 - 2.1000i 0 0 0
-1.0000 1.0000 0 0
1.0000 2.0000 2.0000 -1.0000 - 2.1000i 0
4.0000 1.0000 2.0000
tlA1 = 4.0000
Ch¬ng3
LËp tr×nh trong matlab
3.1. C¸c phÇn tö c¬ b¶n
Inf
C¸c gi¸ trÞ sè nhá h¬n gi¸ trÞ realmin sÏ g©y lçi trµn díi (exponent
underflow). Gi¸ trÞ cña kÕt qu¶ vît miÒn gi¸ trÞ cho phÐp cña biÕn
nhí m¸y tÝnh. Trong Matlab, kÕt qu¶ nµy ®îc biÓu diÔn lµ 0.
» b=realmin*1e-16
b =
3.1.2 BiÕn.
b. BiÕn string.
BiÕn string trong matlab ®îc lu trong vector vøi mçi phÇn tö lµ
1 kÝ tù. C¸c kÝ tù ®îc lu trong vector ë d¹ng m· ASCII, khi hiÓn thÞ
biÕn string dßng kÝ tù sÏ ®îc hiÓn thÞ chø kh«ng ph¶i m· cña
chóng.
ViÖc x¸c ®Þnh vÞ trÝ cña mçi phÇn tö cña biÕn string th«ng
qua chØ sè cña nã trong vector. Ma trËn cña c¸c kÝ tù hay string
còng cã thÓ ®îc sö dông nhng mçi phÇn tö (hµng cña ma trËn) ph¶i
b»ng nhau.
VÝ dô:
» test='Wellcome to ITIMS''2000'
test =
Wellcome to ITIMS'2000
-§¶o ngîc x©u kÝ tù.
» daotu=test(end:-1:1)
daotu =
0002'SMITI ot emoclleW
-TrÝch 1 phÇn cña x©u kÝ tù.
» test(1:8)
ans =
Wellcome
-KÕt hîp c¸c x©u kÝ tù:
» hodem='Nguyen Hoang';ten='Viet';
» hoten=[hodem ' ' ten]
hoten =
eval Thc hiÖn c©u lÖnh trong biÓu thøc Matlab. eval(s), víi s lµ
x©u kÝ tù, thi hµnh c¸c biÓu thøc vµ c¸c c©u lÖnh ghi trong x©u s.
eval(s1,s2) ®a ra tÝnh n¨ng b¾t lçi. Nã thi hµnh x©u s1, nÕu
kh«ng cã lçi nã trë vÒ hÖ ®iÒu hµnh. NÕu hÖ ®iÒu hµnh ph¸t sinh
lçi, x©u kÝ tù s2 ®îc thi hµnh tríc khi trë vÒ hÖ ®iÒu hµnh. Sö dông
nh eval('try','catch'). X©u kÝ tù lçi ph¸t sinh bëi 'try' cã thÓ nhËn tõ
biÕn LASTERR.
[X,Y,Z,...] = eval(s) tr¶ vÒ c¸c ®èi theo thø tù biÓu thøc cã trong s.
X©u kÝ tù vµo cho eval thêng eval ®îc t¹o bëi kÕt hîp c¸c x©u con
trong ngoÆc vu«ng.
VÝ dô:
Ph¸t sinh lÇn lît c¸c biÕn ma trËn cã tªn M1 ®Õn M12:
for n = 1:12
eval(['M' num2str(n) ' = magic(n)'])
end
Ch¹y script file lùa chän tõ tËp hîp c¸c m-file script. X©u kÝ tù ®îc
t¹o theo c¸c hµng cña ma trËn D ph¶i cã ®é dµi b»ng nhau.
D = ['odedemo '
'quaddemo'
'fitdemo '];
n = input('Select a demo number: ');
eval(D(n,:))
[A,COUNT,ERRMSG,NEXTINDEX] = SSCANF(S,FORMAT,SIZE)
®äc d÷ liªu tõ x©u kÝ tù S, t¹o d÷ liÖu theo x©u ®Þnh d¹ng chØ
®Þnh FORMAT vµ tr¶ vÒ ma trËn A. COUNT lµ ®èi sè ra lùa chän tr¶
vÒ sè phÇn tö ®äc thµnh c«ng. ERRMSG lµ ®èi sè ra lùa chän tr¶
vÒ x©u kÝ tù th«ng b¸o lçi. NEXTINDEX lµ ®èi sè ra lùa chän tr¶ vÒ
sè chØ ®Þnh kÝ tù ®îc quÐt trong S.
SSCANF t¬ng tù FSCANF ngo¹i trõ nã ®äc d÷ liÖu tõ x©u kÝ tù thay
v× ®äc tõ file.
SIZE lµ tham sè lùa chän; nã ®Æt giíi h¹n sè phÇn tö ®îc quÐt tõ
x©u S; nÕu kh«ng chØ ®Þnh SIZE, toµn bé x©u S ®îc quÐt; NÕu
chØ ®Þnh SIZE, c¸c gi¸ trÞ hîp lÖ lµ:
N ®äc nhiÒu nhÊt N phÇn tö vµo vector cét.
inf ®äc c¶ x©u S.
[M,N] ®äc vµo nhiÒu nhÊt M * N phÇn tö theo d¹ng thøc ma
trËn MxN, theo thø tù c¸c cét. N cã thÓ lµ inf, M ph¶i lµ sè x¸c
®Þnh.
NÕu ma trËn kÕt qu¶ A ®îc h×nh thµnh tõ ®Þnh d¹ng kÝ tù vµ SIZE
kh«ng cã d¹ng [M,N] th× A cã d¹ng vector hµng.
FORMAT lµ x©u kÝ tù chØ ®Þnh nh ng«n ng÷ C. Xem FSCANF.
VÝ dô:
»S = '2.7183 3.1416';
»a = sscanf(S,'%f')
a =
2.7183
3.1416
tr¶ vÒ vector 2 phÇn tö chøa sè gÇn dóng e vµ pi.
c. Kh¸i niÖm biÕn ma trËn (scalar, vector, matrix), biÕn khèi
vµ biÕn cÊu tróc.
Matlab cung cÊp kiÓu biÕn (líp ®èi tîng) lµ sè thùc kÐp
(double), kÝ tù (char), ma trËn, kÝ hiÖu (sym), m¶ng ®èi tîng (cell),
cÊu tróc (struct), biÕn hµm inline...
Matlab cung cÊp 2 kiÓu v« híng c¬ b¶n:
+V« híng thùc (double), cã ®é lín 8 byte.
+KiÓu v« híng kÝ tù (char), cã ®é lín 2 byte.
C¸c biÕn vector, ma trËn lµ c¸c m¶ng thuÇn tuý chøa c¸c v« h-
íng thùc hoÆc kÝ tù. C¸c biÕn nµy cßn gäi lµ c¸c biÕn thuÇn nhÊt.
BiÕn cell lµ m¶ng ®èi tîng víi c¸c phÇn tö lµ ®èi tîng bÊt k×, cã
thÓ lµ v« híng, vector, ma trËn, x©u kÝ tù, biÕn hµm inline, biÕn
sym, biÕn cÊu tróc, inline...
BiÕn cÊu tróc lµ d¹ng biÕn c¸c phÇn tö (trêng-field) cña nã ®îc
truy cËp theo tªn cña trêng, c¸c trêng cã thÓ cã kiÓu v« híng,
vector, ma trËn, biÕn hµm inline, symbolic, cell,...
C¸c biÕn ®îc ph©n biÖt theo kiÓu d÷ liÖu th«ng qua hµm
class(var), hµm class tr¶ vÒ biÕn char chøa x©u kÝ tù ph©n lo¹i
kiÓu d÷ liÖu ('double', 'char', 'inline', 'sym', 'cell', 'struct'...).
ViÖc th©m nhËp (acess) ®Õn c¸c phÇn tö d÷ liÖu:
+V« híng th«ng qua tªn: a,x,z....
+Vector, ma trËn th«ng qua c¸c chØ sè: A(i,j,...),A(i,j),v(i)....
+BiÕn cell th«ng qua chØ sè (gièng vector, ma trËn)
C{i,j,...},C{i,j},a{j}
+BiÕn cÊu tróc th«ng qua tªn trêng: S.a,S.field2,...
X¸c ®Þnh chiÒu c¸c biÕn m¶ng: v« híng, vector, ma trËn. Tõ
lÖnh [m,n,..]=size(var) vµ p=length(size(var)):
+m=n=1, p=2: BiÕn var lµ v« híng.
+m=1, n>1 hoÆc n=1, m>1; p=2 BiÕn
vector.
+m>1,n>1,p=2 BiÕn ma trËn.
+p>2 BiÕn m¶ng khèi.
X¸c ®Þnh sè phÇn tö cña biÕn thuÇn nhÊt:
members=prod(size(var)).
ViÖc x¸c ®Þnh sè chiÒu cña biÕn cell t¬ng tù nh biÕn v« híng,
vector, ma trËn.
Chó ý:
+Néi dung cña c¸c hµm inline vµ m-files cã thÓ thay ®æi ®îc.
+§Ó biÕt tªn c¸c hµm ®· ®îc gäi tríc ®©y sö dông lÖnh » inmem
.
» g = inline('sin(2*pi*f + theta)')
g =
Inline function:
g(f,theta) = sin(2*pi*f + theta)
» a=g(50,pi/4)
a =
0.7071
b. X©y dùng c¸c hµm m-file.(xem 3.3.2)
Hµm nµy cã mét sè thµnh phÇn chung cho tÊt c¶ c¸c hµm
MATLAB:
•Dßng ®Þnh nghÜa hµm. §©y lµ hµm ®Þnh nghÜa tªn hµm, sè
lîng vµ trËt tù ®èi sè vµo vµ ra.
•Dßng H1. H1 chuyÓn chuÈn dßng “trî gióp 1”. MATLAB hiÓn
thÞ dßng H1 cho hµm khi b¹n sö dông hµm lookfor hoÆc yªu
cÇu trî gióp lèi vµo th môc.
•V¨n b¶n trî gióp. MATLAB hiÓn thÞ dßng nhËp trî gióp liÒn kÒ
nhau ngay sau dßng H1 khi b¹n yªu cÇu trî gióp ë hµm chØ
®Þnh.
•Th©n hµm. PhÇn nµy cã chøa m· thùc thi c¸c tÝnh to¸n thùc
tÕ vµ g¸n gi¸ trÞ cho ®èi sè ra bÊt k×.
T¹o M-File: Truy cËp ch¬ng tr×nh so¹n th¶o v¨n b¶n.
M-file thêng lµ file v¨n b¶n, b¹n cã thÓ t¹o b»ng c¸c tr×nh so¹n
th¶o v¨n b¶n. MATLAB còng cung cÊp tr×nh so¹n th¶o v¨n b¶n built-
in, mÆc dï b¹n cã thÓ sö dông ch¬ng tr×nh so¹n th¶o bÊt k× b¹n
quen dïng ®Ó so¹n th¶o.
C¸ch ®Ó so¹n mét M-file tõ dßng lÖnh MATLAB lµ dïng c©u lÖnh
edit. VÝ dô,
edit poof
më tr×nh so¹n th¶o so¹n th¶o file poof.m. Bá qua tªn file sÏ më
tr×nh so¹n th¶o so¹n th¶o file cã tªn untitled*. (* lµ c¸c ch÷ sè)
B¹n cã thÓ t¹o hµm fact ë trªn b»ng c¸ch më tr×nh so¹n th¶o cña
b¹n, nhËp c¸c dßng ®· nªu, vµ cÊt v¨n b¶n lªn file cã tªn fact.m
trong th môc hiÖn hµnh cña b¹n.
Mét khi b¹n ®· t¹o file nµy, sau ®©y lµ vµi c«ng viÖc b¹n cã thÓ
lµm:
•LiÖt kª danh s¸ch tªn c¸c file trong th môc hiÖn hµnh
what
•LiÖt kª v¨n b¶n m· cña M-file fact.m
type fact
•Gäi hµm fact
fact(5)
ans =
120
Chó ý§Ó më tr×nh so¹n th¶o trªn m¸y vi tÝnh PC, chän menu File
chän môc New vµ sau ®ã chän M-File.
C¸c hµm hÖ thèng t¬ng t¸c víi M-file t¹i cöa sæ lÖnh, trong script vµ
hµm :
echo on Cho phÐp hiÓn thÞ c¸c c©u lÖnh cña script file ®ang ®îc
thùc hiÖn .
echo of Kh«ng hiÓn thÞ c¸c c©u lÖnh cña script file ®ang ®îc
thùc hiÖn.
echo func BËt/t¾t hiÓn thÞ c¸c c©u lÖnh ®îc thùc hiÖn cña hµm
on/of "func" .
echo func LËt tr¹ng th¸i hiÓn thÞ c©u lÖnh trong hµm "func".
echo on/of BËt/t¾t hiÓn thÞ c©u lÖnh ®îc thi hµnh cña c¸c hµm cã
all trong inmem.
help name HiÖn c¸c dßng chó thÝch ®Çu tiªn, liªn tôc cã trong file
"name.m".
type HiÓn thÞ néi dung cña file cã tªn filename, mÆc ®Þnh më
filename réng lµ "*.m".
NÕu cã 2 file test vµ test.m c©u lÖnh "type test" cho néi
dung file test, ®Ó hiÓn thÞ ®óng tªn file nªn cã phÇn më
réng "type test.m".
dbtype T¬ng tù type, nhng cã chØ sè dßng ë ®Çu dßng cña file
name cã tªn "name".
which name Cho biÕt ®¬ng dÉn cña file "name", mÆc ®Þnh më réng
lµ "*.m".
Hµm lµ M-file cã c¸c ®èi sè vµo vµ ®èi sè ra. Chóng ho¹t ®éng
trªn c¸c biÕn bªn trong workspace cña riªng nã. Nã ph©n c¸ch víi
workspace b¹n truy cËp t¹i dÊu nh¾c lÖnh MATLAB.
%-------------------------
function mean = avg(x,n)
%MEAN subfunction
mean = sum(x)/n;
C¸c hµm riªng cã thÓ gäi lÉn nhau.
a.Hµm con.
Hµm M-file cã thÓ chøa m· cña nhiÒu h¬n mét hµm. Hµm ®Çu
tiªn trong file gäi lµ hµm s¬ cÊp ( primary), hµm cã tªn M-file. C¸c
hµm thªm trong filegäi lµ c¸c hµm con mµ chØ thÊy ®îc bëi fµm s¬
cÊp hoÆc c¸c hµm con trong cïng file nµy.
Mçi hµm con b¾t ®Çu víi dßng ®Þnh nghÜa hµm cña nã. C¸c
hµm theo sau trùc tiÕp lÉn nhau. C¸c hµm con kh¸c nhau cã thÓ
xuÊt hiÖn bÊt k× thø tù nµo, n»m sau hµm s¬ cÊp- xuÊt hiÖn ®Çu
tiªn.
function [avg,med] = newstats(u)
% NEWSTATS Find mean and median with internal functions.
n = length(u);
avg = mean(u,n);
med = median(u,n);
function a = mean(v,n)
% Calculate average.
a = sum(v)/n;
function m = median(v,n)
% Calculate median.
w = sort(v);
if rem(n,2) == 1
m = w((n+1)/2);
else
m = (w(n/2)+w(n/2+1))/2;
end
C¸c hµm con mean vµ median tÝnh to¸n trung b×nh vµ ®iÓm
gi÷a cña danh s¸ch vµo. Hµm s¬ cÊp newstats x¸c ®Þnh chiÒu dµi
cña danh s¸ch vµ tÝnh to¸n c¸c hµm con, truyÒn chóng cho danh
s¸ch ®é dµi n. C¸c hµm trong cïng M-file kh«ng thÓ truy cËp c¸c
biÕn cïng tªn trõ phi b¹n khai b¸o nã lµ toµn côc ( global) bªn trong
c¸c hµm thÝch hîp (pertinent), hoÆc truyÒn chóng lµm tham sè.
Ngoµi ra, the help facility can only access the primary function in an
M-file.
Khi b¹n gäi hµm ë bªn trong M-file, MATLAB kiÓm tra tríc tiªn xem
nã cã lµ hµm con kh«ng. Sau ®ã kiÓm tra nã lµ hµm riªng (m« t¶ ë
phÇn tiÕp sau) cã tªn hµm ®ã kh«ng, vµ sau ®ã t×m M-file chuÈn
trªn ®êng dÉn t×m kiÕm file. Do nã kiÓm tra hµm con ®Çu tiªn,
b¹n cã thÓ thay thÕ c¸c hµm M-files ®· cã b»ng hµm con cã cïng
tªn, vÝ dô, mean m· ho¸ ë trªn. Tªn hµm ph¶i duy nhÊt bªn trong M-
file.
b.Hµm riªng
C¸c hµm riªng lµ c¸c hµm hiÖn cã trong th môc ®Æc biÖt cã tªn
private. Chóng chØ thÊy ®îc víi c¸c hµm trong th môc cha. VÝ dô,
gi¶ sö b¹n cã th môc newmath trong ®êng dÉn t×m kiÕm cña
MATLAB. Th môc con private cña th môc newmath cã thÓ chøa c¸c
hµm mµ chØ cã c¸c hµm trong th môc newmath míi cã thÓ gäi ®îc.
Do c¸c hµm riªng lµ kh«ng thÊy ®îc bªn ngoµi th môc cha, chóng cã
thÓ sö dông c¸c tªn hµm trïng nhau víi hµm ë c¸c th môc kh¸c. §iÒu
nµy h÷u Ých khi b¹n muèn t¹o riªng m×nh phiªn b¶n hµm thùc trong
khi vÉn duy tr× hµm gèc ë th môc kh¸c. Do MATLAB t×m kiÕm c¸c
hµm tríc c¸c hµm M-file chuÈn, nã sÏ t×m hµm riªng cã tªn test.m tr-
íc c¸c hµm kh«ng riªng t tªn test.m. B¹n cã thÓ t¹o cho riªng b¹n th
môc riªng t ®¬n gi¶n b»ng c¸ch t¹o th môc cã tªn private qua c¸c
thñ tôc chuÈn ®Ó t¹o th môc hay folder trªn m¸y tÝnh cña b¹n.
Kh«ng nªn ®Æt c¸c th môc riªng t lªn ®êng dÉn cña b¹n.
any(X) Hµm cho gi¸ trÞ 1 nÕu mét phÇn tö cña X kh¸c 0
all(X) Hµm cho gi¸ trÞ 1 nÕu tÊt c¶ phÇn tö cña X kh¸c 0
find(X) Hµm tr¶ l¹i vector chøa chØ sè c¸c phÇn tö kh¸c 0 cña
X.
Có ph¸p: [i,j]=find(X), hoÆc p=find(X) (t¬ng tù
find(X(:)).
isNaN(X) Tr¶ vÒ ma trËn víi c¸c phÇn tö 0 nÕu c¸c phÇn tö cña X
lµ h÷u h¹n, tr¶ vÒ phÇn tö 1 nÕu phÇn tö lµ NaN.
isinf(X) Tr¶ vÒ ma trËn víi c¸c phÇn tö 0 nÕu c¸c phÇn tö cña X
lµ h÷u h¹n, tr¶ vÒ phÇn tö 1 nÕu phÇn tö lµ Inf.
isfinite(X) Tr¶ vÒ ma trËn víi c¸c phÇn tö 1 nÕu c¸c phÇn tö cña X
lµ h÷u h¹n, tr¶ vÒ phÇn tö 0 nÕu phÇn tö lµ Inf foÆc
NaN.
isempty(X Tr¶ vÒ gi¸ trÞ 1 nÕu X lµ ma trËn rçng, vµ 0 nÕu ngîc
) l¹i.
ischar(X) Tr¶ vÒ 1 nÕu X lµ ma trËn kÝ tù, vµ 0 nÕu X lµ ma trËn
d¹ng kh¸c.
iscell(X) Tr¶ vÒ 1 nÕu X lµ m¶ng khèi, vµ 0 nÕu X cã d¹ng kh¸c.
islogical(XTr¶ vÒ 1 nÕu X lµ ma trËn Logic, vµ 0 nÕu X cã d¹ng
) kh¸c.
isstruct(X)Tr¶ vÒ 1 nÕu X lµ biÕn cÊu tróc, vµ 0 nÕu X cã d¹ng
kh¸c.
isnumeric( Tr¶ vÒ 1 nÕu X lµ biÕn m¶ng sè, vµ 0 nÕu X cã d¹ng
X) kh¸c.
isobject(X Tr¶ vÒ 1 nÕu X lµ biÕn ®èi tîng, vµ 0 nÕu X cã d¹ng
) kh¸c.
issparse(X Tr¶ vÒ 1 nÕu X lµ biÕn m¶ng rêi r¹c, vµ 0 nÕu X cã
) d¹ng kh¸c.
strcmp(s1, So s¸nh 2 x©u s1 vµ s2. Gi¸ trÞ 1 ®îc tr¶ vÒ nÕu 2
s2) x©u gièng hÖt nhau vµ b»ng 0 nÕu 2 x©u cã sù kh¸c
nhau. Cã sù ph©n biÖt ch÷ hoa vµ ch÷ thêng, c¸c kÝ
tù ®Çu dßng vµ c¸c dÊu c¸ch cã trong x©u.
C©u lÖnh pause, kh«ng cã ®èi sè nµo, dõng thi hµnh cho ®Õn
khi ngêi dïng bÊm phÝm. T¹m ngng trong n gi©y, sö dông:
pause(n)
M-file nµy:
1 CÊt ®èi sè vµo a, b, q, vµ r lªn file-MAT trong kh«ng gian lµm
viÖc b»ng c©u lÖnh save.
2 Sö dông to¸n tö giao diÖn bªn ngoµi ®Ó truy cËp ch¬ng
tr×nh C, hay Fortran cã tªn gareqn sö dông c¸c biÕn
workspace ®Ó thùc hiÖn tÝnh to¸n cña nã. Hµm gareqn
viÕt kÕt qu¶ trë l¹i file-MAT gardata.
3 T¶i file-MAT gardata ®Ó lÊy kÕt qu¶.
3 ch¬ng 4
§å ho¹ 2D
4.1 C¸c phÐp biÕn ®æi ®å ho¹.
x ** 1 0 0 x *
y ** P ** 0 cos( ) sin( ) y * BP* BAP
z ** 0 sin( ) cos( ) z *
TiÕp theo quay hÖ trôc quanh trôc y mét gãc . Gi¸ trÞ to¹ ®é
cuèi cïng thu ®îc sÏ lµ:
x1 cos( ) 0 sin( ) x * *
y1 P1 0 1 0 y * * CP * * CBAP
z sin( ) 0 cos( ) z * *
1
KÕt qu¶ 3 phÐp quay cho ta: P1=ABCP=DP.
PhÐp biÕn ®æi Czichos(1989) ®îc biÓu diÔn theo c«ng thøc
sau: KÝ hiÖu Ccos(), Ssin()... ta cã ma trËn quay.
CC SCS CC SCS SS
R SC CCS SS CCC CS
SS SC C
Hµm biÕn ®æi kh«ng gian - c«ng thøc Euler:
function [R,A,B,C]=eulrotate(si,te,fi)
%euler rotation
A=[cos(si) sin(si) 0;-sin(si) cos(si) 0;0 0 1];
B=[cos(fi) 0 sin(fi);0 1 0;-sin(fi) 0 cos(fi)];
C=[1 0 0;0 cos(te) sin(te);0 -sin(te) cos(te)];
R=C*B*A;
4.2 PhÐp biÕn ®æi Affine trong mÆt ph¼ng.
C¸c phÐp biÕn ®æi affine bao gåm: translation, rotation,
scalling...
x1
x x1 w
P y1 ;
w y y1 w
u viÖt cña hÖ to¹ ®é thuÇn nhÊt lµ chóng cho phÐp biÓu diÔn
c¸c ®iÓm ë xa v« cïng, viÖc biÓu diÔn c¸c ®iÓm v« cïng th«ng qua
w=0 vµ x1, y1 lµ c¸c sè h÷u h¹n.
6
square
Ts
5 Rs
Ss
4 Gs
-1
-2
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0.8
0.6
0.4
0.2
0
0.5
0.5
0
0
-0.5 -0.5
H×nh
H×nh
» pcolor(x,y,z);shading
interp;xlabel('x');ylabel('y');title('pcolor(x,y,z)'); colorbar;
+vÏ mÆt cong z=exsiny, víi x2+(y/2)2pi;
» r=linspace(0,3,50);fi=linspace(0,2*pi);
» [r,fi]=meshgrid(r,fi);
» x=r.*sin(fi);y=r.*cos(fi)./2;
» z=exp(x).*sin(y);surf(x,y,z);shading interp;axis tight;view([78,43])
» xlabel('x');ylabel('y');zlabel('z');title('z=exp(x)sin(y) tren mien
x^2+(y2/2)^2<=pi');
H×nh5
H×nh
1.6
1.4
1.2
1
y
0.8
0.6
0.4
0.2
0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x
5.9 MÆt
6. C¸c hµm to¸n häc trong Matlab.
-Matlab cã 2 lo¹i hµm lµ hµm néi (built in) vµ hµm ngo¹i (user
function).
+hµm néi : hµm s½n cã trong matlab.
+hµm ngo¹i : hµm ®îc viÕt bëi ngêi sö dông, viÕt ë d¹ng
m-file.
-C¸c nhãm hµm:
Nhãm hµm s¬ cÊp
xem >>help elfun
sqrt(x) c¨n bËc 2 cña x
exp(x) ex
log(x),log10 loga tù nhiªn, c¬ sè 10 cña x
(x)
abs(x) trÞ tuyÖt ®èi cña x
angle(x) tr¶ vÒ gãc pha cña sè phøc x
conj(x) liªn hîp phøc cña x
real(x) phÇn thùc cña sè phøc x
imag(x) phÇn ¶o cña sè phøc x
... ...
****Ghi chó:
®Þnh d¹ng mµu, ®iÓm, nÐt vÏ 'linspec'
Mµu §iÓm §êng
y yellow . point v triangle - solid
m magenta o circle (down) : dotted
c cyan x x-mark ^ triangle (up) -. dashdot
r red + plus < triangle -- dashed
g green * star (left)
b blue s square > triangle
w white d diamond (right)
k black p pentagram
h hexagram
vÝ dô:
'b+-' VÏ t¹i ®iÓm d÷ liÖu vÏ dÊu céng, ®êng liÒn nÐt víi mµu
blue
'rd' VÏ t¹i ®iÓm d÷ liÖu h×nh thoi, mµu ®á, kh«ng cã ®êng nèi
gi÷a c¸c ®iÓm
§Þnh d¹ng mÆc ®Þnh lµ: chÊm ®iÓm, ®êng nèi ®Æc, c¸c
mµu ®îc chän tù ®éng theo tæ hîp c¸c hµm trong cïng 1
lÖnh vÏ.
1. LÖnh ®å ho¹
2D
AXIS([XMIN XMAX YMIN YMAX ZMIN ZMAX]) X¸c lËp kÝch thíc trôc to¹ ®é
3D
V=AXIS LÊy kÝch thíc to¹ ®é hiÖn
hµnh
AXIS ON/OFF BËt/t¾t hiÓn thÞ trôc to¹ ®é
AXIS
AUTO/MANUAL/TIGHT/FILL/IJ/XY/EQUAL/IMAGE/SQUARE/NORMA
L/VIS3D
xlabel(str),ylabel(str),zlab ViÕt tªn (kÝ hiÖu) trôc to¹ ®é
el(str) x,y z
TITLE(str) tiªu ®Ò cña ®å thÞ
LEGEND(str1,str2,str3, ...,POS) Ghi chó thÝch cho ®å thÞ ®·
LEGEND(H,str1,str2,str3, ...,POS) vÏ.
xem thªm >>help axis
Examples: location POS:
x = 0:.2:12; 0 = Automatic "best"
plot(x,bessel(1,x),x,bessel(2,x),x,bessel(3,x)); placement (least
legend('First','Second','Third'); conflict with data)
legend('First','Second','Third',-1) 1 = Upper right-hand
corner (default)
b = bar(rand(10,5),'stacked'); colormap(summer); 2 = Upper left-hand
hold on corner
x = plot(1:10,5*rand(10,1), 'marker', 'square', 3 = Lower left-hand
'markersize', ... corner
12, 'markeredgecolor','y','markerfacecolor',[.6 4 = Lower right-hand
0 .6],... corner
'linestyle','-','color','r','linewidth',2); hold -1 = To the right of the plot
off
legend([b,x],'Carrots','Peas','Peppers','Green
Beans',...
'Cucumbers','Eggplant')
2 2
g ( x, y) e x y / floor ( xy)!
xy x y 1
F ( x, y) ( xy) 2 1 x y 3
( xy)3 x y 3
+ViÕt hµm m-files cho c¸c hµm trªn.
+Hµm nµo viÕt ®îc b»ng hµm inline?, viÕt hµm ®ã.
7) Cho :
hÖ ph¬ng tr×nh phi cho hÖ ph¬ng tr×nh phi tuyÕn
tuyÕn: phøc:
sin 2 ( x) sin 2 ( y) 1 0 cos( z ) 2 3 0
z2
3
1
y1 ( x 1.25) 2 1;
log2 ( x)
y2 e ;
+ChØ ra c¸c biªn cña x. VÏ biªn cña miÒn nµy, vµ t« mµu.
+T×m to¹ ®é träng t©m vµ tÝnh diÖn tÝch miÒn giíi h¹n bëi 2
®å thÞ trªn.
+VÏ ®êng th¼ng song song Oy, chia miÒn thµnh 2 phÇn cã
diÖn tÝch b»ng nhau.
9) Cho hµm
x 1. cos( x 2 1)
y f ( x) ;
x4 1
+VÏ §THS trªn miÒn 0xpi, vÏ ®¹o hµm cña hµm sè trªn cïng
®å thÞ.
+T×m c¸c nghiÖm gÇn ®óng cña pt f(x)=0 b»ng ph¬ng ph¸p
®å thÞ, vµ cho biÕt sai sè t×m ®îc.
gîi ý: dïng dy=gradient(y,dx) ®Ó tÝnh ®¹o hµm, víi dx=x(k+1)-x(k);