1
CHƯƠNG 1: MATLAB CƠ BẢN
§1.CÁCTOÁNTỬCƠBẢNCỦAMATLAB
1.Cáctoántửcơbản:Matlablàmộtphầnmềmcaocấpdùngđểgiảicácbài
toán.ĐểkhởiđộngMATLABtabấmđúpvàoiconcủanó.CácfileMATLAB
códạng*.mvàchỉchạytrongmôitrườngMATLAB.MATLABxửlísốliệu
nhưlàmatrận.Khitađánhlệnhvàocửasổlệnh,nósẽđượcthihànhngayvà
kết quảhiệnlênmànhình.Nếutakhông
muốnchokếtquảhiệnlên màn
hìnhthìsaulệnhtađặtthêmdấu“;”.Nếulệnhquádài,khôngvừamộtdòng
dòngcóthểđánhlệnhtrênnhiềudòngvàcuốimỗidòngđặt
thêmdấu rồi
xuốngdòng.Khisoạnthảolệnhtacóthểdùngcácphímtắt:
↑Ctrl‐Pgọilạilệnhtrướcđó
↓Ctrl‐N gọilệnhsau
←Ctrl‐Blùil
ạimộtkítự
→Ctrl‐Ftiếnlênmộtkítự
Ctrl‐→ Ctrl‐R sangphảimộttừ
Ctrl‐← Crtl‐Lsangphảimộttừ
home Ctrl‐A vềđầudòng
end Ctrl‐Evềcuốidòng
escCtrl‐
U xoádòng
delCtrl‐D xoákítựtạichỗconnháyđứng
backspace Ctrl‐H xoákítựtrướcchỗconnháyđứng
)CácphéptoáncơbảncủaMATLABgồm:
+ cộng
‐trừ
* nhân
/ chiaph
ải
\ chiatrái
^ luỹthừa
‘ chuyểnvịmatrậnhaysốphứcliênhợp
)Cáctoántửquanhệ:
<nhỏhơn
<=nhỏhơnhaybằng
>lớnhơn
>=
lớnhơnhoặcbằng
==bằng
2
~=khôngbằng
)Cáctoántửlogic:
& và
| or
~ not
)Cáchằng:
pi3.14159265
isốảo
jtươngtựi
eps saisố2
‐52
realmin sốthựcnhỏnhất2
‐1022
realmax sốthựclớnnhất2
1023
infvôcùnglớn
NaN Notanumber
2.Nhậpxuấtdữliệutừdònglệnh:MATLABkhôngđòihỏiphảikhaibáo
biếntrướckhidùng.MATLABphânbiệtchữhoavàchữthường.Cács ố
liệuđưavàomôitrườnglàmviệccủaMATLABđượclưulạisuốtphiênlàm
việcchođếnkhigặplệnhclearall.MATLABchophéptanhậpsốliệutừdòng
lệnh.Khinhậpma
trậntừbànphímtaphảituântheocácquyđịnhsau:
•ngăncáchcácphầntửcủamatrậnbằngdấu “,”haydấutrống
•dùngdấu“;”đểkếtthúcmộthàng
•baocácphầntửcủamatrậnbằngcặpdấungoặcvuông[]
Đểnhậpcácmatrậnsau:
⎡⎤ ⎡⎤
⎢⎥ ⎢⎥
=− = − =
⎡⎤
⎣⎦
⎢⎥ ⎢⎥
⎢⎥ ⎢⎥
⎣⎦ ⎣⎦
124 1
A325 B1421 C4
153 7
tadùngcáclệnh:
A=[123;3‐24;153]
B=[1421]
C=[1;4;7]
3.Nhậpxuấtdữliệutừfile
:MATLABcóthểxửlíhaikiểufiledữliệu:file
3
nhịphân*.matvàfileASCII*.dat.ĐểlưucácmatrậnA,B,Cdướidạngfile
nhịphântadùnglệnh:
saveABCABC
vànạplạicácmatrậnA,Bbằnglệnh:
loadABCAB
NếumuốnlưusốliệucủamatrậnBdướidạngfileASCIItaviết:
saveb.datB/ascii
Taviếtchươngtrình
ct1_1.mnhưsau:
clear
A=[123;456]
B=[3;‐2;1];
C(2)=2;C(4)=4
disp(’Nhanphimbatkydexemnhap/xuatdulieutufile’)
saveABCABC%luuA,B&CduoidangMAT‐filecoten’ABC.mat’
clear(’A’,’C’)%xoaA
vaCkhoibonho
loadABCAC%docMAT‐filedenhapAvaCvaobonho
saveb.datB/ascii%luuBduoidangfileASCIIcoten’b.dat’
clearB
loadb.dat%docASCII
b
x=input(’Nhapx:’)
formatshorte
x
formatrat,
x
formatlong,x
formatshort,x
4.Nhậpxuấtdữliệutừbànphím:Lệnhinputchophéptanhậpsốliệutừ
bànphím.Vídụ:
4
x=input(’Nhapx:’)
Lệnh
formatchophépxácđịnhdạngthứccủadữliệu.Vídụ:
formatrat%sohuuti
formatlong%sosẽcó14chusosaudauphay
formatlonge%sodangmu
formathex%sodanghex
formatshorte%sodangmungan
formatshort%trovesodangngan(default)
Mộtcáchkhácđểhiểnthịgiátrịcủabiếnvà chuỗilàđánhtênbiếnvàocửa số
lệnhMATLAB.Tacũngcóthểdùng
dispvàfprintfđểhiểnthịcácbiến.Ví
dụ:
disp(ʹTrisocuax=ʹ),disp(x)
Taviếtchươngtrình
ct1_2.mnhưsau:
clc
f=input(ʹNhapnhietdoFahrenheit[F]:ʹ);
c=5/9*(f‐32);
fprintf(ʹ%5.2f(doFahrenheit)la%5.2f(doC).\nʹ,f,c)
fid=fopen(ʹct1_2.datʹ,ʹwʹ);
fprintf(fid,ʹ%5.2f(doFahrenheit)la%5.2f(doC).\nʹ,f,c);
fclose(fid);
Trongtrườnghợptamuốnnhậpmộtchuỗitừbànphím,tacầnphảithêmkí
tựsvàođốisố.Vídụ:
ans=input(ʹBantraloi<co>hoac<khong>:ʹ,ʹsʹ)
5.Cáchàmtoánhọc:
a.Cáchàmtoánhọccơbản:
exp(x) hàm
x
e
sqrt(x) cănbậchaicủax
log(x)logarittựnhiên
5
log10(x) logaritcơsố10
abs(x)moduncủa sốphứcx
angle(x) argumentcủasốphứca
conj(x) sốphứcliênhợpcủax
imag(x) phầnảocủax
real(x) phầnthựccủax
sign(x)
dấucủax
cos(x)
sin(x)
tan(x)
acos(x)
asin(x)
atan(x)
cosh(x)
coth(x)
sinh(x)
tanh(x)
acosh(x)
acoth(x)
asinh(x)
atanh(x)
b.Cáchàmtoánhọctựtạo:MATLABchophéptatạohàmtoánhọcvà
lưunóvàomộtfileđểdùngnhưlàhàmcósẵn củaMATLAB.Vídụtacầntạo
hàm:
1
2
1
f(x)
18x
=
+
vàhàm:
22
112
12
2
2
212
112
f(x ,x )
x4x5
f(x)
f(x,x)
2x 2x 3x 2.5
⎡⎤
+−
⎡⎤
==
⎢⎥
⎢⎥
−−−
⎣⎦
⎣⎦
Muốnthếtatạorafile
f1.mnhưsau:
functiony=f1(x)
y=1./(1+8*x.^2);
vàfilef2.m:
6
functiony=f2(x)
y(1)=x(1)*x(1)+4*x(2)*x(2)‐5;
y(2) = 2*x(1)*x(1)-2*x(1)-3*x(2) -2.5;
Khinhậplệnh
f1(2)tacógiátrịcủahàmf1tạix=2.Khinhậplệnhf2([24])ta
cógiátrịcủahàmf2tạix
1=2vàx2=4.Lệnhfeval(‘f1’,2)vàfeval(‘f2’,[24])
cũngchokếtquảtươngtự.
Cáchthứhaiđểbiểudiễnmộthàmtoánhọcmộtbiếntrêndònglệnhlà
tạoramộtđốitượnginlinetừmộtbi ểuthứcchuỗi.
Vídụtacóthểnhậptừ
dònglệnhhàmnhưsau:
f1=inline(’1./(1+8*x.^2)’,’x’);
f1([01]),feval(f1,[01])
Tacũngcóthểviết:
f1=ʹ1./(1+8*x.^2)ʹ;
x=[01];
eval(f1)
Nếuhàmlàđathứctachỉcầnnhậpmatrậncáchệsốtừsốmũcaonhất.
VídụvớiđathứcP
4(x)=x
4
+4x
3
+2x+1taviết:
P=[14021]
Đểnhânhaiđathứctadùnglệnh
conv;đểchia2đathứctadùnglệnh
deconv.Muốntínhtrịsốcủađathứctadùnglệnhpolyvalvàlệnhpolyvalm
dùngkhiđathứclàmatrận.
c.Cáclệnhxửlíhàm:Lệnhfplotvẽđồthịhàmtoánhọcgiữacácgiátrị
đãcho.Vídụ:
fplot(‘f1’,[‐55])
gridon
Chomộthàmtoánhọcmộtbiến,tacóthểdùnglệnh
fminbndcủaMATLAB
đểtìmcựctiểuđịaphươngcủahàmtrongkhoảngđãcho.Vídụ:
7
f=inline(ʹ1./((x‐0.3).^2+0.01)+1./((x‐0.9).^2+0.04)‐6ʹ);
x=fminbnd(f,0.3,1)
Lệnh
fminsearch tương tự hàm fminbnd dùngđểtìm cực tiểuđịa
phươngcủahàmnhiềubiến.Tacóhàm3biếnlưutrongfile
three_var.mnhư
sau:
functionb=three_var(v)
x=v(1);
y=v(2);
z=v(3);
b=x.^2+2.5*sin(y)‐z^2*x^2*y^2;
Bâygiờtìmcựctiểuđốivớihàmnàybắtđầutừx=‐0.6,y=‐1.2vàz=0.135
bằngcáclệnh:
v=[‐0.6‐1.20.135];
a=fminsearch(ʹthree_varʹ,v)
Lệnh
fzerodùngđểtìmđiểm zero củahàmmột biến. Ví dụđểtìm giátrị
khôngcủahàmlâncậngiátrị‐0.2taviết:
f=inline(ʹ1./((x‐0.3).^2+0.01)+1./((x‐0.9).^2+0.04)‐6ʹ);
a=fzero(f,‐0.2)
Zerofoundintheinterval:[‐0.10949,‐0.264].
a=
‐0.1316
6.Cácphéptoántrênmatrậnvàvectơ:
a.Kháiniệmchung:Giảsửtatạoracácmatrậnavàbbằngcáclệnh:
a=[123;456];
b=[3‐21];
Tacóthểsửađổichúng:
8
A=[a;789]
B=[b;[10‐1]]ʹ
Toántử‘dùngđểchuyểnvịmộtmatrậnthựcvàchuyểnvịliênhợpmộtma
trậnphức.Nếuchỉmuốnchuyểnvịmatrậnphức,tadùngthêmtoántử“.”
nghĩa
làphảiviết“.’”.Vídụ:
C=[1+2*i2‐4*i;3+i2‐2*j];
X=Cʹ
Y=C.’
b.Chỉsố
:Phầntửởhàngicộtjcủamatrậnm×ncókíhiệulàA(i,j).
Tuynhiêntacũngcóthểthamchiếutớiphầntửcủamảngnhờmộtchỉsố,ví
dụA(k)
vớik=i+(j‐1)m.Cáchnàythườngdùngđểthamchiếuvectơhàng
haycột.Trongtrườnghợpmatrậnđầyđủthìnóđượcxemlàmatrậnmộtcột
dàitạotừcáccột
củamatrậnban đầu.NhưvậyviếtA(5)cónghĩa làtham
chiếuphầntửA(2,2).
Đểxácđịnhkíchthướccủamộtmatrậntadùnglệnh
length(trảvềkích
thướclớnnhất)hay
size(sốhàngvàcột).Vídụ:
c=[1234;5678];
length(c)
[m,n]=size(c)
c.Toántử“:”:Toántử“:”làmộttoántửquantrọngcủaMATLAB.Nó
xuấthiệnởnhiềudạngkhácnhau.Vídụ:
1:10
tạomộtvectơhàngchứa10sốnguyêntừ1đến10.Lệnh:
100:‐7:50
tạomộtdãysốtừ100đến51,giảm7mỗilần.Lệnh:
0:pi/4:pi
9
tạomộtdãysốtừ0đếnpi,cáchđềunhaupi/4
Cácbiểuthứcchỉsốthamchiếutớimộtphầncủamatrận.ViếtA(1:k,j)
là thamchiếuđến k phần tửđầutiên
của cộtj.Ngoàiratoán tử “:” tham
chiếutớitấtcảcácphầntửcủamộthànghaymộtcột.Vídụ:
B=A(:,[132])
tạoramatrậnBtừmatrậnAbằngcáchđổithứtựcáccộttừ[123]thành
[132]
d.Tạomatrậnbằnghàmcósẵn:MATLABcungcấpmộtsốhàmđểtạo
cácmatrậncơbản:
zeros tạoramatrậnmàcácphầntửđềulàzeros
z=zeros(2,4)
ones tạoramatrậnmàcácphầntửđềulà1
x=ones(2,3)
y=5*ones(2,2)
rand tạoramatrậnmàcácphầntửngẫunhiênphânbốđều
d=rand(4,4)
randntạoramatrậnmàcácphầntửngẫunhiênphânbốtrựcgiao
e=randn(3,3)
magic(n)tạoramatrậncấpngồmcácsốnguyêntừ1đếnn
2
vớitổng
cáchàngbằngtổngcáccộtnphảilớnhơnhaybằng3.
pascal(n)tạoramatrậnxácđịnhdươngmàcá cphầntửlấytừtamgiác
Pascal.
pascal(4)
eye(n)tạomatrậnđơnvị
10
eye(3)
eye(m,n)tạomatrậnđơnvịmởrộng
eye(3,4)
e.Lắpghép
:Tacóthểlắpghép(concatenation)cácmatrậncósẵnthành
mộtmatrậnmới.Vídụ:
a=ones(3,3)
b=5*ones(3,3)
c=[a+2;b]
f.Xoáhàngvàcột:Tacóthểxoáhàngvàcộttừmatrậnbằngdùngdấu
[].Đểxoácộtthứ2củamatrậnbtaviết:
b(:,2)=[]
Viết
x(1:2:5)=[]nghĩalàtaxoácácphầntửbắtđầutừđếnphầntửthứ5và
cách2rồisắpxếplạimatrận.
g.Cáclệnhxửlímatrận:
Cộng:X=A+B
Trừ:X=A‐B
Nhân :X=A*B
:X.*Anhâncácphầntửtươngứngvớinhau
Chia:X=A/BlúcđóX*B=A
:X=A\BlúcđóA*X=B
:X=A./Bchiacácphầntửtươngứngvớinhau
Luỹthừa :X=A^2
:X=A.^2
Nghịchđảo :X=inv(A)
Địnhthức :d=det(A)
7. Tạo số ngẫu nhiên: MATLAB cócác lệnh tạo số ngẫu nhiên là rand và
randntạoracácsốngẫunhiêntheophânbốGauss.
rand(m,n)tạoramatrậncácsốngẫunhiênphânbốđồngnhất.
randn(m,n)tạoramatrậncácsốngẫunhiêntheophânbốchuẩnGauss.
rand(3,3)
11
randn(3,3)
8.Cáclệnhdùnglậptrình:
a.Cácphátbiểuđiềukiệnif,else,elseif:
Cúphápcủaif:
if<biểuthứcđiềukiện>
<phátbiểu>
end
Nếu<biểuthứcđiềukiện>chokếtquảđúngthìphầnlệnhtrongthâncủaif
đượcthựchiện.
Cácphátbiểuelsevàleseifcũngtươngtự.
Vídụ
:Taxétchươngtrình)ct1_4.mđểđoántuổinhưsau:
clc
disp(
‘Xinchao!Hanhanhduoclamquen’);
x=fix(30*rand);
disp(
‘Tuoitoitrongkhoang0‐30’ );
gu=input(
‘Xinnhaptuoicuaban:‘);
ifgu<x
disp(
‘Bantrehontoi’);
elseifgu>x
disp(
‘Banlonhontoi’);
else
disp(
‘Banbangtuoitoi’);
end
b.switch:Cúphápcủaswitchnhưsau:
switch<biểuthức>
casen1:<lệnh1>
casen2:<lệnh2>
...............
casenn:<lệnhn>
otherwise:<lệnhn+1>
end
c.while:vònglặpwhiledùngkhikhôngbiếttrướcsốlầnlặp.Cúpháp
củanónhưsau:
12
while<biểuthức>
<phátbiểu>
end
Xétchươngtrìnhinrachuoi“Xinchao”lênmàhìnhvớisốlầnnhậptừ
bànphím
ct1_5.mnhưsau:
clc
disp(ʹxinchaoʹ);
gu=input(ʹNhapsolanin:ʹ);
i=0;
whilei~=gu
disp([ʹXinchaoʹi]);
i=i+1
end
d.for
:vònglặpfordùngkhibiếttrướcsốlầnlặp.Cúphápnhưsau:
for<chỉsố>=<giátrịđầu>:<mứctăng>:<giátrịcuối>
Taxâydựngchươngtrìnhđoánsố
ct1_6.m:
clc
x=fix(100*rand);
n=7;
t=1;
fork=1:7
num=int2str(n);
disp([ʹBancoquyendudoanʹ,num,ʹlanʹ]);
disp(ʹSocandoannamtrongkhoang0‐100ʹ);
gu=input(ʹNhapsomabandoan:ʹ);
ifgu
<x
disp(ʹBandoannhohonʹ);
elseifgu>x
disp(ʹSobandoanlonhonʹ);
else
disp(ʹBandadoandung.Xinchucmungʹ);
t=0;
break;
end
13
n=n‐1;
end
ift>0
disp(ʹBankhongdoanraroiʹ);
numx=int2str(x);
disp([ʹDolaso:ʹ,numx]);
end
e.break:phátbiểubreak đểkếtthúcvònglặpforhaywhilemàkhông
quantâmđếnđiềukiệnkếtthúcvònglặpđãthoảmãnhaychưa.
§2.ĐỒHOẠTRONGMATLAB
1.Cáclệnhvẽ:MATLABcungcấpmộtloạthàmđểvẽbiểu diễncácvectơsố
liệucũngnhưgiảithíchvàincácđườngcongnày.
plotđồhọa2‐Dvớisốliệu2trụcvôhướngvàtuyếntính
plot3 đồhọa3‐Dvớisốliệu2trụcvôhướngvàtuyếntính
polar đồhoạtronghệtoạđộcực
loglogđồhoạvớicáctrụclogarit
semilogxđồhoạvớitrụcxlogaritvàtrụcytuyếntính
semilogyđồhoạvớitrục ylogaritvàtrụcxtuyếntính
plotyyđồhoạvớitrụcycónhãnởbêntráivàbênphải
2.Tạohìnhvẽ:Hàmplotcócácdạngkhácnhauphụthuộcvàocácđốisố
đưavào.Vídụnếuylàmộtvectơth ì
plot(y)tạoramộtđườngthẳngquanhệ
giữacácgiátrịcủayvàchỉsốcủanó.Nếutacó2vectơxvàythì
plot(x,y)
tạorađồthịquanhệgiữaxvày.
t=
[0:pi/100:2*pi]
y=sin(t);
plot(t,y)
gridon
polar(t,y)
3.Đặctảkiểuđườngvẽ:Tacó thểdùngcáckiểuđườngvẽkhácnhaukhivẽ
hình.Muốnthếtachuyểnkiểuđườngvẽchohàm
plot.Taviếtchươngtrình
ct1_7.mtạorađồthịhàmhìnhsin:
14
t=[0:pi/100:2*pi];
y=sin(t);
plot(t,y,
’.‘)%vẽbằngđườngchấmchấm
gridon
4.Đặctảmàuvàkíchthướcđườngv ẽ:Đểđặctảmàuvàkíchthướcđường
vẽtadùngcácthamsốsau:
LineWidthđộrộngđườngthẳng,tínhbằngsốđiểm
MarkerEdgeColor màucủacáccạnhcủakhốiđánhdấu
MarkerFaceColormàucủakhốiđánhdấu
MarkerSizekíchthướccủakhốiđánhdấu
Màuđượcxácđịnhbằngcácthamsố:
Mã Màu Mã Màu
r red m magenta
g green y yellow
b blue k black
c cyan w white
Cácdạngđiểmđánhdấuxácđịnhbằng:
Mã Kiểuđánhdấu Mã Kiểuđánhdấu
+ dấucộng .điểm
o vòngtròn x chữthập
* dấusao s hìnhvuông
d hạtkimcương vđiểmtamgiáchướngxuống
^điểmtamgiáchướnglên < tamgiácsangtrái
> tamgiácsangphải h lụcgiác
p ngũgiác
Cácdạngđườngthẳngxácđịnhbằng:
Mã Kiểuđường Mã Kiểuđường
‐ đườngliền :đườngchấmchấm
‐‐ đườngđứtnét‐.đườngchấmgạch
15
Taxétchươngtrìnhct1_8.mnhưsau:
x=‐pi:pi/10:pi;
y=tan(sin(x))‐sin(tan(x));
plot(x,y,ʹ‐‐rs
’,ʹLineWidthʹ,2,ʹMarkerEdgeColorʹ,ʹkʹ,
ʹMarkerFaceColorʹ,ʹgʹ,ʹMarkerSizeʹ,10)
Chươngtrìnhnàysẽvẽđườngcongy=f(x)cócácđặctảsau:
‐đườngvẽlàđườngđứtnét(‐‐)
‐khốiđánhdấuhìnhvuông(s),đườngvẽmàuđỏ(r)
‐đườngvẽrộng2point
‐cáccạnhcủakhố
iđánhmàuđen
‐khốiđánhdấumàugreen
‐kíchthướckhốiđánhdấu10point
5.Thêmđườngvẽvàođồthịđãcó:Đểlàmđiềunàytadùnglệnhhold.Khi
tađánhlệnh
holdonthìMATLABkhôngxoáđồthịđangcó.Nóthêmsốliệu
vàođồthịmớinày.Nếuphạmvigiátrịcủađồthịmớivượtquácácgiátrị
củatrụctoạđộcũthìnósẽđịnhlạitỉlệxích.
6.Chỉvẽcácđiểmsốliệu:Đểvẽcácđiểmđánhdấumàkhôngnốichúnglại
với nhau ta dùngđặc tả nói rằng không có cácđường nối giữa cácđiểm,
nghĩalàtagọihàm
plotchỉvớiđặctảmàuvàđiểmđánhdấu.Taxétchương
trình
ct1_9.mnhưsau:
x=‐pi:pi/10:pi;
y=tan(sin(x))‐sin(tan(x));
plot(x,y,ʹsʹ,ʹMarkerEdgeColorʹ,ʹkʹ)
7.Vẽcácđiểmvàđường:Đểvẽcảcácđiểmđánhdấu vàđườngn ối giữa
chúngtacầnmôtảkiểuđườngvàkiểuđiểm.Taxétchươngtrình
ct1_10.m:
x=0:pi/15:4*pi;
y=exp(2*sin(x));
plot(x,y,ʹ‐rʹ,x,y,ʹokʹ)
dùngvẽđườngcongy=f(x)cóđườngnốiliền,màuđỏ.Điểmđánhdấulà
16
chữocómàuđen.
8.Vẽvớihaitrụcy
:Lệnhplotyychophéptạomộtđồthịcó haitrụcy.Ta
cũngcóthểdùng
plotyyđểchogiátr ịtrênhaitrụcycókiểukhácnhaunhằm
tiệnsosánh.Taxétchươngtrình
ct1_11.m:
t=0:900;
A=1000;
b=0.005;
a=0.005;
z2=sin(b*t);
z1=A*exp(‐a*t);
[haxes,hline1,hline2]=plotyy(t,z1,t,z2,ʹsemilogyʹ,ʹplotʹ);
9.Vẽđườngcongvớisốliệu3‐D :Nếux,y,zlà3vectơcócùngđộdàithì
plot3sẽvẽđườngcong3D.Taviếtchươngtrìnhct1_12.m:
t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
axissquare;
gridon
10.Đặtcácthôngsốchotrục
:Khitatạomộthìnhvẽ,MATLABtựđộngchọn
cácgiớihạntrêntrụctoạđộvàkhoảngcáchđánhdấudựatrênsốliệudùng
đểv ẽ.Tuynhiêntacóthểmôtảlạiphạ
mvigiátrịtrêntrụcvàkhoảngcách
đánhdấutheoýriêng.Tacóthểdùngcáclệnhsau:
axis đặtlạicácgiátrịtrêntrụctoạđộ
axes tạomộttrụctoạđộmớivớicácđặ
ctínhđượcmôtả
getvàset chophépxácđịnhvàđặtcácthuộctínhcủatrụctoạđộđang
có
gca trởvềtrụctoạđộcũ
MATLABchọncá cgiớihạntrêntrụctoạđộvàkhoảngcáchđánh
dấudựa
trênsốliệudùngđểvẽ.Dùnglệnh
axiscóthểđặtlạigiớihạnnày.Cúpháp
củalệnh:
axis[xmin,xmax,ymin,ymax]
Taxétchươngtrình
ct1_13.mnhưsau:
17
x=0:0.025:pi/2;
plot(x,tan(x),ʹ‐roʹ)
axis([0pi/205])
MATLABchiavạchtrêntrụcdựatrênphạmvidữliệuvàchiađều.Tacóthể
môtảcáchchianhờthôngsố
xtickvàytickbằngmộtvectơtăngdần.Vídụ
xétchươngtrình
ct1_14.m:
x=‐pi:.1:pi;
y=sin(x);
plot(x,y)
set(gca,ʹxtickʹ,‐pi:pi/2:p);
set(gca,ʹxticklabelʹ,{ʹ‐piʹ,ʹ‐pi/2ʹ,ʹ0ʹ,ʹpi/2ʹ,ʹpiʹ})
11.Ghinhãnlêncáctrụctoạđộ:MATLABcungcấpcáclệnhghinhãnlênđồ
hoạgồm:
title thêmnhãnvàođồhoạ
xlabel thêmnhãnvàotrụcx
ylabel thêmnhãnvàotrụcy
zlabel thêmnhãnvàotrụcz
legend thêmchúgiảivàođồthị
text hiểnthịchuỗivănbảnởvịtrínhấtđịnh
gtext đặtvănbảnlênđồhoạnhờchuột
\bf boldfont
\it italicsfont
\sl obliquefont(chữnghiêng)
\rm normalfont
Cáckítựđặcbiệtxemtrong
StringpropertiescủaHelp.
Tadùngcáclệnhxlabel,ylabel,zlabelđểthêmnhãnvàocáctrụctoạđộ.Ta
có thể thêm văn bản vào bất kì chỗ nào trên hình vẽ nhờ hàmtext. Ta có
chươngtrình
ct1_15.m:
x=‐pi:.1:pi;
y=sin(x);
plot(x,y)
xlabel(ʹt=0to2\piʹ,ʹFontsizeʹ,16)
ylabel(ʹsin(t)ʹ,ʹFontsizeʹ,16)
18
title(ʹ\it{Giatricuasintuzerođến2pi}ʹ,ʹFontsizeʹ,16)
text(3*pi/4,sin(3*pi/4),ʹ\leftarrowsin(t)=0.707ʹ,ʹFontSizeʹ,12)
12.Địnhvịvănbảntrênhìnhvẽ:Tacóthểsửdụngđốitượngvănbảnđểghi
chúcáctrụcởvịtríbấtkì.MATLABđịnhvịvănbảntheođơnvịdữliệutrên
trục.Vídụđểvẽhàmy=Ae
α
t
vớiA=0.25,t=0đến900vàα=0.005taviết
chươngtrình
ct1_16.m:
t=0:900;
plot(t,0.25*exp(‐0.005*t))
plot(t,y)
text(300,.25*exp(‐.005*300),
ʹ\bullet\leftarrow\fontname{times}0.25{\ite}^{‐0.005{\itt}}tai,
{\itt}=300ʹ,ʹFontSizeʹ,14)%ghichutait=300
ThamsốHorizontalAlignmentvàVerticalAlignmentđịnhvịvănbảnsovới
cáctoạđộx,y,zđãcho.
13.Đồhoạđặcbiệt
:
a.Khốivàvùng:Đồhoạkhốivàvùngbiểudiễnsốliệulàvectơhayma
trận.MATLABcungcấpcáchàmđồhoạkhốivàvùng:
bar hiểnthịcáccộtcủamatrậnm*nnhưlàmnhóm,mỗinhóm
cónbar
barh hiểnthịcáccộtcủamatrậnm*nnhưlàmnhóm,mỗinhóm
cónbarnằmngang
bar3 hiểnthịcáccộtcủamatrậnm*nnhưlàmnhóm,mỗinhóm
cónbardạng3D
bar3hhiểnthịcáccộtcủamatrậnm*nnhưlàmnhóm,mỗinhóm
cónbardạng3Dnằmngang
Mặcđịnh, mỗi phần tử của ma trậnđược biểu diễn bằng một
bar. Ta xét
chươngtrình
ct1_17.m:
y=[521
673
863
555
158];
19
bar(y)
b.Môtảdữliệutrêntrục:Tadùngcáchàmxlabelvàylabelđểmôtả
cácdữliệutrêntrục.Taxétchươngtrình
ct1_18.m:
nhdo=[2923272520232327];
ngay=0:5:35;
bar(ngay,nhdo)
xlabel(ʹNgayʹ)
ylabel(ʹNhietdo(^{o}C)ʹ)
set(gca,ʹYLimʹ,[1530],ʹLayerʹ,ʹtopʹ)
gridon
set(gca,ʹYLimʹ,[1530])
Mặcđịnh,phạm vigiátrịcủatrụcylàtừ0đến30.Đểxemnhiệtđộtrong
khoảngtừ15đến30tathayđổiphạmvigiátrịcủatrụcy:
set(gca,ʹYLimʹ,[1530],ʹLayerʹ,ʹtopʹ)
vàtrênđồthị,phạmvigiátrịcủatrụcyđãthayđổi.
c.Xếpchồngđồthị:Tacóthểxếpchồngsốliệutrênđồthịthanhbằng
cáchtạoramộttrụckháctrêncùngmộtvịtrívànhưvậytacómộttrụcyđộc
lậpvớibộsốliệu
khác.
TCE=[5154203702501351206020];
nhdo=[2923272520232327];
ngay=0:5:35;
bar(ngay,nhdo)
xlabel(ʹNgayʹ)
ylabel(ʹNhietdo(^{o}C)ʹ)
Đểxếpchồngmộtsốliệulênmộtđồthịthanhởtrên,cótrụcthứ2ở
cùngvịtrínhưtrụcthứnhấttaviết:
h1=gca;
vàtạotrụcthứ2ởvịtrítrụcthứnhấttrướcnhấtvẽbộsốliệuthứ2:
h2=axes(ʹPositionʹ,get(h1,ʹPositionʹ));
20
plot(days,TCE,ʹLineWidthʹ,3)
Đểtrụcthứ2khônggâytrởngạichotrụcthứnhấttaviết:
set(h2,ʹYAxisLocationʹ,ʹrightʹ,ʹColorʹ,ʹnoneʹ,ʹXTickLabelʹ,[])
set(h2,ʹXLimʹ,get(h1,ʹXLimʹ),ʹLayerʹ,ʹtopʹ)
Đểghichúlênđồthịtaviết:
text(11,380,ʹMatdoʹ,ʹRotationʹ,‐‐55,ʹFontSizeʹ,16)
ylabel(ʹTCEMatdo(PPM)ʹ)
title(ʹXepchongdothiʹ,ʹFontSizeʹ,16)
(lưutrongct1_19.m)
d.Đồhoạvùng
:Hàmareahiểnthịđườngcongtạotừmộtvectơhaytừ
mộtcộtcủa matrận. Nóvẽcácgiátrị củamộtcột của matrận thànhmột
đườngcongriêngvàtôđầyvùngkhông
giangiữacácđườngcongvàtrụcx.
taxétchươngtrình
ct1_20.m:
Y=[512
837
968
555
423];
area(Y)
hiểnthịđồthịcó3vùng,mỗivùngmộtcột.Độcaocủamỗiđồthịvùnglà
tổngcácphầntửtrongmộthàng.Mỗiđườngcongsausửdụngđườngcong
trướclàmcơsở.Đểhiển
thịđườngchialướitadùnglệnh:
set(gca,ʹLayerʹ,ʹtopʹ)
set(gca,ʹXTickʹ,1:5)
gridon
f.Đồthịpie
:Đồthịpiehiểnthịtheotỉlệphầntrămcủa mộtphầntử
củamộtvectơhaymộtmatrậnsovớitổngcácphầntử.Cáclệnh
pievàpie3
tạorađồthị2Dvà3D.taxétchươngtrình
ct1_21.m:
X=[19.3 22.1 51.6;
34.2 70.3 82.4;
61.4 82.9 90.8;
21
50.5 54.9 59.1;
29.4 36.3 47.0];
x=sum(X);
explode=zeros(size(x));
[c,offset]=max(x);
explode(offset)=1;
h=pie(x,explode)
%A=[136];
%pie3(A)
Khitổngcácphầntửtrongđốisốthứnhấtb ằnghaylớnhơn1,pievàpie3
chuẩnhoácácgiátrị.Nh ưvậychovectơx,mỗiphầncódiệntích )x(sum
/
x
ii
vớix
ilàmộtphầntửcủax.Giátrịđượcchuẩnhoámôtảphầnnguyêncủa
mỗivùng.Khitổngcácphầntửtrongđốisốthứnhấtnhỏhơn1,
pievàpie3
khôngchuẩnhoácácphầntửcủavectơx.Chúngvẽmộtphầnpie.
x=[.19.22.41];
pie(x)
g.Làmhìnhchuyểnđộng:Tacóthểtạorahìnhchuyểnđộngbằng2cách
•tạovàlưunhiềuhìnhkhácnhauvàlầnlượthiểnthịchúng
•vẽvàxoá liêntụcmộtđốitượngtrênmànhình,mỗilầnv ẽlạicósự
thayđổi.
Vớicáchthứnhấttathựchiệnhìnhchuyểnđộngqua3bước:
•dùnghàmmovieinđểdànhbộnhớchomộtmatrậnđủlớnnhằmlưu
cáckhunghình.
•dùnghàmgetframesđểtạocáckhunghình.
•dùnghàmmovieđểhiểnthịcáckhunghình.
Sauđâylàvídụsửdụng
movieđểquansáthàmfft(eye(n)).Tatạochương
trình
ct1_22.mnhưsau:
axisequal
M=moviein(16,gcf);
set(gca,ʹNextPlotʹ,ʹreplacechildrenʹ)
h=uicontrol(ʹstyleʹ,ʹsliderʹ,ʹpositionʹ,[1001050020],ʹMinʹ,1,ʹMaxʹ,16)
forj=1:16
plot(fft(eye(j+16)))
22
set(h,ʹValueʹ,j)
M(:,j)=getframe(gcf);
end
clf;
axes(ʹPositionʹ,[0011]);
movie(M,30)
Bướcđầutiênđểtạohìnhảnhchuyểnđộnglàkhởigánmatrận.Tuynhiên
trướckhigọihàm
moviein,tacầntạoracáctrụctoạđộcócùngkíchthước
vớikíchthướcmà tamuốnhiểnthịhình.Dotrongvídụnàytahiểnthịcácsố
liệucáchđềutrênvòngtrònđơnvịnênta
dùnglệnhaxisequalđểxácđịnhtỉ
lệcáctrục.Hàm
movieintạoramatrậnđủlớnđểchứa16khunghình.Phát
biểu:
set(gca,ʹNextPlotʹ,ʹreplacechildrenʹ)
ngănhàmplotđưatỉlệcáctrụcvềaxisnormalmỗikhinóđượcgọi.Hàm
getframekhôngđốisốtrảlạicácđiểmảnhcủatrụchiệnhànhởhìnhhiệncó.
Mỗikhunghìnhgồmcácsốliệutrongmộtvectơcột.Hàm
getframe(gcf)chụp
toànbộphầntrong củamộtcửasổhiệnhành.Saukhitạorahìnhảnhtacó
thểchạychúngmộtsốlầnnhấtđịnhvídụ30lầnnhờhàm
movie(M,30).
Mộtphươngphápnữađểtạohìnhchuyểnđộnglàvẽvàxoá,nghĩalà
vẽmộtđốitượngđồhoạrồithayđổivịtrícủanóbằngcáchthayđổitoạđộx,
yvàzmộtlượ
ngnhỏnhờmộtvònglặp.Tacóthểtạoracáchiệuứngkhác
nhaunhờcáccáchxoáhìnhkhácnhau.Chúnggồm:
•noneMATLABkhôngxoáđốitượngkhinódichuyển
•background MATLABxoáđốitượngbằngcáchvẽnócómàu
nền
•xorMATLABchỉxoáđốitượng
TatạoraM‐filecótênlà
ct1_23.mnhưsau:
A=[‐8/300;0‐1010;028‐1];
y=[35‐10‐7]ʹ;
h=0.01;
p=plot3(y(1),y(2),y(3),ʹ.ʹ,
ʹEraseModeʹ,ʹnoneʹ,ʹMarkerSizeʹ,5);
axis([050‐2525‐2525])
23
holdon
fori=1:4000
A(1,3)=y(2);
A(3,1)=‐y(2);
ydot=A*y;
y=y+h*ydot;
set(p,ʹXDataʹ,y(1),ʹYDataʹ,y(2),ʹZDataʹ,y(3))%thaydoitoado
drawnow
i=i+1;
end
13.Đồhoạ3D
:
a.Cáclệnhcơbản:Lệnhmeshvàsurftạoralướivàmặt3Dtừmatrận
sốliệu.Gọimatrậnsốliệulàzmàmỗiphầntửcủanóz(i,j)xácđịnhtungđộ
củamặtthì
mesh(z)tạoramộtlướicómàuthểhiệnmặtzcònsurf(z) tạora
mộtmặtcómàuz.
b.Đồthị các hàm hai biến: Bước thứ nhấtđểthể hiện hàm 2 biến
z=f(x,y)làtạomatrậnxvàychứacáctoạđộtrongmiềnxácđịnhcủahàm.
Hàmmeshgridsẽbiếnđổivùngxácđịnhbởi2vectơxvà
ythànhmatrậnx
vày.Sauđótadùngmatrậnnàyđểđánhgiáhàm.
Takhảosáthàm
sin(r)/r.Đểtínhhàmtrongkhoảng‐8và8theoxvày
tachỉcầnchuyểnmộtvectơđốisốcho
meshgrid:
[x,y]=meshgrid(‐8:.5:8);
r=sqrt(x.^2+y.^2)+0.005
;
matrậnrchứakhoảngcáchtừtâmcủamatrận.Tiếptheotadùnghàm
mesh
đểvẽhàm.
z=sin(r)./r;
mesh(z)
c.Đồthịđườngđẳngmức:Cáchàmcontourtạo,hiểnthịvàghichúcác
đườngđẳngmứccủamộthaynhiềumatrận.Chúnggồm:
clabel tạocácnhãnsửdụngmatrậncontourvàhiểnthịnhãn
contour hiểnthịcácđườngđẳngmứctạobởimộtgiátrịchotrước
củamatrậnZ.
24
contour3 hiểnthịcácmặtđẳngmứctạobởimộtgiátrịchotrướccủa
matrậnZ.
contourf hiểnthịđồthịcontour2Dvàtômàuvùnggiữa2cácđường
contourc hàmcấpthấpđểtínhmatrậncontour
Hàm
meshchiểnthịcontourvàlướivàsurfchiểnthịmặtcontour.
[X,Y,Z]=peaks;
contour(X,Y,Z,20)
Mỗicontourcómộtgiátrịgắnvớinó.Hàmclabeldùnggiátrịnàyđểhiểnthị
nhãnđườngđồngmức2D.Matrậncontourchứagiátrịclabeldùngchocác
đường contour 2D. Ma trận nàyđược xácđịnh bởi
contour, contour3 và
contourf.
Đểhiểnthị10đườngđẳngmứccủahàm
peaktaviết:
Z=peaks;
[C,h]=contour(Z,10);
clabel(C,h)
title({ʹCaccontourconhanʹ,ʹclabel(C,h)ʹ})
Hàm
contourfhiểnthịđồthịđườngđẳngmứctrênmộtmặtphẳngvàtômàu
vùngcònlạigiữacácđườngđẳngmức.Đểkiểmsoátmàutôtadùnghàm
caxisvàcolormap.Taviếtchươngtrìnhct1_26.m:
Z=peaks;
[C,h]=contourf(Z,10);
caxis([‐2020])
colormapautumn;
title({ʹContourcotomauʹ,ʹcontourf(Z,10)ʹ})
Cáchàm
contour(z,n)vàcontour(z,v)chophéptachỉrõsốlượngmức
contourhaymộtmứccontourcầnvẽnàođóvớizlàma trậnsốliệu,nlàsố
đường contour và v làvectơcácmức contour.MATLABkhôngphânbi
ệt
giữavectơmộtphầntửhayđạilượngvôhướng.Nhưvậynếuvlàvectơ
mộtphầntửmôtảmộtcontourđơnởmộtmứchàm
contoursẽcoinólàsố
lượngđườngcontourchứkhôngphảilàmứccontour.Nghĩalà,
contour(z,v)
cũngnhư
contour(z,n).Đểhiểnthịmộtđườngđẳngmứctacầnchovlàmột
25
vectơcó2phầntửvớicảhai phầntửbằngmứcmongmuốn.Vídụđểtạora
mộtđườngđẳngmức3Dcủahàmpeakstaviếtchươngtrình
ct1_27.m:
xrange=‐3:.125:3;
yrange=xrange;
[X,Y]=meshgrid(xrange,yrange);
Z=peaks(X,Y);
contour3(X,Y,Z)
ĐểhiểnthịmộtmứcởZ=1,tachovlà[11]
v=[11]
contour3(X,Y,Z,v)
Hàm
ginputchophéptadùngchuộthaycácphímmũitênđểchọncác
điểmvẽ.Nótrảv ềtoạđộcủavịtrícontrỏ.Vídụsausẽminhhoạcácdùng
hàm
ginputvàhàmsplineđểtạorađườngcongnộisuyhaibiến.
TatạomộtM‐filecótên
ct1_28.mnhưsau:
disp(ʹChuotphaitrocacdiemtrenduongveʹ)
disp(ʹChuottraitrodiemcuoicuaduongveʹ)
axis([010010])
holdon
x=[];
y=[];
n=0;
but=1;
whilebut==1
[xi,yi,but]=ginput(1);
plot(xi,yi,ʹgoʹ)
n=n+1;
x(n,1)=xi;
y(n,1)=yi;
end
t=1:n;
ts=1:0.1:n;
xs=spline(t,x,ts);