Tải bản đầy đủ (.pdf) (57 trang)

Tài liệu CHƯƠNG 1: MATLAB CƠ BẢN §1. CÁC TOÁN TỬ CƠ BẢN CỦA MATLAB  doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (618.75 KB, 57 trang )


1
CHƯƠNG 1: MATLAB CƠ BẢN

§1.CÁCTOÁNTỬCƠBẢNCỦAMATLAB
1.Cáctoántửcơbản:Matlablàmộtphầnmềmcaocấpdùngđểgiảicácbài
toán.ĐểkhởiđộngMATLABtabấmđúpvàoiconcủanó.CácfileMATLAB
códạng*.mvàchỉchạytrongmôitrườngMATLAB.MATLABxửlísốliệu
nhưlàmatrận.Khitađánhlệnhvàocửasổlệnh,nósẽđượcthihànhngayvà
kết quả hiện lên mànhình.Nếutakhông
muốnchokếtquảhiệnlên màn
hìnhthìsaulệnhtađặtthêmdấu“;”.Nếulệnhquádài,khôngvừamộtdòng
dòngcóthểđánhlệnhtrênnhiềudòngvàcuốimỗidòngđặt
thêmdấu rồi
xuốngdòng.Khisoạnthảolệnhtacóthểdùngcácphímtắt:
 ↑Ctrl‐Pgọilạilệnhtrướcđó
 ↓Ctrl‐N gọilệnhsau
←Ctrl‐Blùil
ạimộtkítự
→Ctrl‐Ftiếnlênmộtkítự
Ctrl‐→ Ctrl‐R sangphảimộttừ
Ctrl‐← Crtl‐Lsangphảimộttừ
home Ctrl‐A vềđầudòng
end Ctrl‐Evềcuốidòng
escCtrl‐
U xoádòng
delCtrl‐D xoákítựtạichỗconnháyđứng
 backspace Ctrl‐H xoákítựtrướcchỗconnháyđứng

)CácphéptoáncơbảncủaMATLABgồm:
+ cộng


‐trừ
* nhân
/ chiaph
ải
\ chiatrái
^ luỹthừa
‘ chuyểnvịmatrậnhaysốphứcliênhợp
 )Cáctoántửquanhệ:
<nhỏhơn
<=nhỏhơnhaybằng
>lớnhơn
>=
lớnhơnhoặcbằng
==bằng

2
~=khôngbằng
)Cáctoántửlogic:
& và
|  or
~  not
 )Cáchằng:
pi3.14159265
isốảo
jtươngtựi
eps  saisố2
‐52

realmin sốthựcnhỏnhất2
‐1022


realmax sốthựclớnnhất2
1023

infvôcùnglớn
NaN Notanumber

2.Nhậpxuấtdữliệutừdònglệnh:MATLABkhôngđòihỏiphảikhaibáo
biếntrướckhidùng.MATLABphânbiệtchữhoavàchữthường.Cács ố
liệuđưavàomôitrườnglàmviệccủaMATLABđượclưulạisuốtphiênlàm 
việcchođếnkhigặplệnhclearall.MATLABchophéptanhậpsốliệutừdòng
lệnh.Khinhậpma
trậntừbànphímtaphảituântheocácquyđịnhsau:

•ngăncáchcácphầntửcủamatrậnbằngdấu “,”haydấutrống

•dùngdấu“;”đểkếtthúcmộthàng

•baocácphầntửcủamatrậnbằngcặpdấungoặcvuông[]
Đểnhậpcácmatrậnsau:

⎡⎤ ⎡⎤
⎢⎥ ⎢⎥
=− = − =
⎡⎤
⎣⎦
⎢⎥ ⎢⎥
⎢⎥ ⎢⎥
⎣⎦ ⎣⎦
124 1

A325 B1421 C4
153 7


tadùngcáclệnh:


A=[123;3‐24;153]

B=[1421]
C=[1;4;7]

3.Nhậpxuấtdữliệutừfile
:MATLABcóthểxửlíhaikiểufiledữliệu:file

3
nhịphân*.matvàfileASCII*.dat.ĐểlưucácmatrậnA,B,Cdướidạngfile 
nhịphântadùnglệnh:

saveABCABC

vànạplạicácmatrậnA,Bbằnglệnh:


loadABCAB

NếumuốnlưusốliệucủamatrậnBdướidạngfileASCIItaviết:

saveb.datB/ascii


Taviếtchươngtrình
ct1_1.mnhưsau:

clear
A=[123;456]
B=[3;‐2;1];
C(2)=2;C(4)=4
disp(’Nhanphimbatkydexemnhap/xuatdulieutufile’)
saveABCABC%luuA,B&CduoidangMAT‐filecoten’ABC.mat’
clear(’A’,’C’)%xoaA
vaCkhoibonho
loadABCAC%docMAT‐filedenhapAvaCvaobonho
saveb.datB/ascii%luuBduoidangfileASCIIcoten’b.dat’
clearB
loadb.dat%docASCII
b
x=input(’Nhapx:’)
formatshorte
x
formatrat,
x
formatlong,x
formatshort,x


4.Nhậpxuấtdữliệutừbànphím:Lệnhinputchophéptanhậpsốliệutừ
bànphím.Vídụ:


4

x=input(’Nhapx:’)

Lệnh
formatchophépxácđịnhdạngthứccủadữliệu.Vídụ:

formatrat%sohuuti
formatlong%sosẽcó14chusosaudauphay
formatlonge%sodangmu
formathex%sodanghex
formatshorte%sodangmungan
formatshort%trovesodangngan(default)

Mộtcáchkhácđểhiểnthịgiátrịcủabiếnvà chuỗilàđánhtênbiếnvàocửa số
lệnhMATLAB.Tacũngcóthểdùng
dispvàfprintfđểhiểnthịcácbiến.Ví
dụ:

disp(ʹTrisocuax=ʹ),disp(x)

Taviếtchươngtrình
ct1_2.mnhưsau:

clc
f=input(ʹNhapnhietdoFahrenheit[F]:ʹ);
c=5/9*(f‐32);
fprintf(ʹ%5.2f(doFahrenheit)la%5.2f(doC).\nʹ,f,c)
fid=fopen(ʹct1_2.datʹ,ʹwʹ);
fprintf(fid,ʹ%5.2f(doFahrenheit)la%5.2f(doC).\nʹ,f,c);
fclose(fid);



Trongtrườnghợptamuốnnhậpmộtchuỗitừbànphím,tacầnphảithêmkí
tựsvàođốisố.Vídụ:

ans=input(ʹBantraloi<co>hoac<khong>:ʹ,ʹsʹ)

5.Cáchàmtoánhọc:

a.Cáchàmtoánhọccơbản:
 exp(x) hàm
x
e 
 sqrt(x) cănbậchaicủax
 log(x)logarittựnhiên

5
 log10(x) logaritcơsố10
 abs(x)moduncủa sốphứcx
 angle(x) argumentcủasốphứca
 conj(x) sốphứcliênhợpcủax
 imag(x) phầnảocủax
 real(x) phầnthựccủax
 sign(x)
dấucủax
 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áchàmtoánhọctựtạo:MATLABchophéptatạohàmtoánhọcvà
lưunóvàomộtfileđểdùngnhưlàhàmcósẵn củaMATLAB.Vídụtacầntạ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ốnthếtatạorafile
f1.mnhưsau:

functiony=f1(x)
y=1./(1+8*x.^2);

vàfilef2.m:

6
functiony=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;

Khinhậplệnh
f1(2)tacógiátrịcủahàmf1tạix=2.Khinhậplệnhf2([24])ta
cógiátrịcủahàmf2tạix

1=2vàx2=4.Lệnhfeval(‘f1’,2)vàfeval(‘f2’,[24])
cũngchokếtquảtươngtự.
Cáchthứhaiđểbiểudiễnmộthàmtoánhọcmộtbiếntrêndònglệnhlà
tạoramộtđốitượnginlinetừmộtbi ểuthứcchuỗi.
Vídụtacóthểnhậptừ
dònglệnhhàmnhưsau:

f1=inline(’1./(1+8*x.^2)’,’x’);
f1([01]),feval(f1,[01])

Tacũngcóthểviết:

f1=ʹ1./(1+8*x.^2)ʹ;
x=[01];
eval(f1)


Nếuhàmlàđathứctachỉcầnnhậpmatrậncáchệsốtừsốmũcaonhất.
VídụvớiđathứcP
4(x)=x
4
+4x
3
+2x+1taviết:


P=[14021]

Đểnhânhaiđathứctadùnglệnh
conv;đểchia2đathứctadùnglệnh

deconv.Muốntínhtrịsốcủađathứctadùnglệnhpolyvalvàlệnhpolyvalm
dùngkhiđathứclàmatrận.

c.Cáclệnhxửlíhàm:Lệnhfplotvẽđồthịhàmtoánhọcgiữacácgiátrị
đãcho.Vídụ:

fplot(‘f1’,[‐55])
 gridon


Chomộthàmtoánhọcmộtbiến,tacóthểdùnglệnh
fminbndcủaMATLAB
đểtìmcựctiểuđịaphươngcủahàmtrongkhoả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ươngcủahàmnhiềubiến.Tacóhàm3biếnlưutrongfile
three_var.mnhư
sau:

functionb=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âygiờtìmcựctiểuđốivớihàmnàybắtđầutừx=‐0.6,y=‐1.2vàz=0.135
bằngcáclệnh:


v=[‐0.6‐1.20.135];
a=fminsearch(ʹthree_varʹ,v)

Lệnh
fzero dùngđểtìmđiểm zero của hàmmột biến. Ví dụđểtìm giá trị
khôngcủahàmlâncậngiátrị‐0.2taviết:

f=inline(ʹ1./((x‐0.3).^2+0.01)+1./((x‐0.9).^2+0.04)‐6ʹ);
a=fzero(f,‐0.2)

 Zerofoundintheinterval:[‐0.10949,‐0.264].
a=
‐0.1316


6.Cácphéptoántrênmatrậnvàvectơ:
a.Kháiniệmchung:Giảsửtatạoracácmatrậnavàbbằngcáclệnh:


a=[123;456];

b=[3‐21];

Tacóthểsửađổichúng:



8
 A=[a;789]
B=[b;[10‐1]]ʹ

Toántử‘dùngđểchuyểnvịmộtmatrậnthựcvàchuyểnvịliênhợpmộtma
trậnphức.Nếuchỉmuốnchuyểnvịmatrậnphức,tadùngthêmtoántử“.”
nghĩa
làphảiviết“.’”.Vídụ:

C=[1+2*i2‐4*i;3+i2‐2*j];
X=Cʹ
Y=C.’

 b.Chỉsố
:Phầntửởhàngicộtjcủamatrậnm×ncókíhiệulàA(i,j).
Tuynhiêntacũngcóthểthamchiếutớiphầntửcủamảngnhờmộtchỉsố,ví
dụA(k)
vớik=i+(j‐1)m.Cáchnàythườngdùngđểthamchiếuvectơhàng
haycột.Trongtrườnghợpmatrậnđầyđủthìnóđượcxemlàmatrậnmộtcột
dàitạotừcáccột
củamatrậnban đầu.NhưvậyviếtA(5)cónghĩa làtham
chiếuphầntửA(2,2).
Đểxácđịnhkíchthướccủamộtmatrậntadùnglệnh
length(trảvềkích
thướclớnnhất)hay
size(sốhàngvàcột).Vídụ:



c=[1234;5678];

length(c)
 [m,n]=size(c)


c.Toántử“:”:Toántử“:”làmộttoántửquantrọngcủaMATLAB.Nó
xuấthiệnởnhiềudạngkhácnhau.Vídụ:


1:10

tạomộtvectơhàngchứa10sốnguyêntừ1đến10.Lệnh:


100:‐7:50

tạomộtdãysốtừ100đến51,giảm7mỗilần.Lệnh:

 0:pi/4:pi


9
tạomộtdãysốtừ0đếnpi,cáchđềunhaupi/4
Cácbiểuthứcchỉsốthamchiếutớimộtphầncủamatrận.ViếtA(1:k,j)
là thamchiếuđến k phần tử đầu tiên
của cộtj.Ngoàiratoán tử “:” tham
chiếutớitấtcảcácphầntửcủamộthànghaymộtcột.Vídụ: 



B=A(:,[132])

tạoramatrậnBtừmatrậnAbằngcáchđổithứtựcáccộttừ[123]thành
[132]
 d.Tạomatrậnbằnghàmcósẵn:MATLABcungcấpmộtsốhàmđểtạo
cácmatrậncơbản:

zeros tạoramatrậnmàcácphầntửđềulàzeros

z=zeros(2,4)

 ones tạoramatrậnmàcácphầntửđềulà1

x=ones(2,3)
y=5*ones(2,2)

rand tạoramatrậnmàcácphầntửngẫunhiênphânbốđều


d=rand(4,4)

randntạoramatrậnmàcácphầntửngẫunhiênphânbốtrựcgiao

 e=randn(3,3)

magic(n)tạoramatrậncấpngồmcácsốnguyêntừ1đếnn
2
vớitổng
cáchàngbằngtổngcáccộtnphảilớnhơnhaybằng3.
pascal(n)tạoramatrậnxácđịnhdươngmàcá cphầntửlấytừtamgiác

Pascal.

pascal(4)

eye(n)tạomatrậnđơnvị


10
eye(3)
eye(m,n)tạomatrậnđơnvịmởrộng

eye(3,4)

 e.Lắpghép
:Tacóthểlắpghép(concatenation)cácmatrậncósẵnthành
mộtmatrậnmới.Vídụ:


a=ones(3,3)
b=5*ones(3,3)
c=[a+2;b]

 f.Xoáhàngvàcột:Tacóthểxoáhàngvàcộttừmatrậnbằngdùngdấu
[].Đểxoácộtthứ2củamatrậnbtaviết:


b(:,2)=[]

Viết
x(1:2:5)=[]nghĩalàtaxoácácphầntửbắtđầutừđếnphầntửthứ5và

cách2rồisắpxếplạimatrận.
 g.Cáclệnhxửlímatrận:
 Cộng:X=A+B

Trừ:X=A‐B

Nhân   :X=A*B
  :X.*Anhâncácphầntửtươngứngvớinhau

Chia:X=A/BlúcđóX*B=A
  :X=A\BlúcđóA*X=B
  :X=A./Bchiacácphầntửtươngứngvớinhau

Luỹthừa :X=A^2
  :X=A.^2

Nghịchđảo :X=inv(A)

Địnhthứ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à
randntạoracácsốngẫunhiêntheophânbốGauss.

rand(m,n)tạoramatrậncácsốngẫunhiênphânbốđồngnhất.

randn(m,n)tạoramatrậncácsốngẫunhiêntheophânbốchuẩnGauss.

rand(3,3)

11
randn(3,3)


8.Cáclệnhdùnglậptrình:
a.Cácphátbiểuđiềukiệnif,else,elseif:
Cúphápcủaif:
 if<biểuthứcđiềukiện>
<phátbiểu>
 end
Nếu<biểuthứcđiềukiện>chokếtquảđúngthìphầnlệnhtrongthâncủaif
đượcthựchiện.

 Cácphátbiểuelsevàleseifcũngtươngtự.

Vídụ
:Taxétchươngtrình)ct1_4.mđểđoántuổinhưsau:

clc
disp(
‘Xinchao!Hanhanhduoclamquen’);
 x=fix(30*rand);
 disp(
‘Tuoitoitrongkhoang0‐30’ );
 gu=input(
‘Xinnhaptuoicuaban:‘);
ifgu<x
 disp(
‘Bantrehontoi’);
elseifgu>x
 disp(
‘Banlonhontoi’);
else

 disp(
‘Banbangtuoitoi’);
end

b.switch:Cúphápcủaswitchnhưsau:
switch<biểuthức>
casen1:<lệnh1>
casen2:<lệnh2>
...............
casenn:<lệnhn>
otherwise:<lệnhn+1>
end

c.while:vònglặpwhiledùngkhikhôngbiếttrướcsốlầnlặp.Cúpháp
củanónhưsau:

12
 while<biểuthức>
<phátbiểu>
 end
Xétchươngtrìnhinrachuoi“Xinchao”lênmàhìnhvớisốlầnnhậptừ
bànphím
ct1_5.mnhưsau:

clc
disp(ʹxinchaoʹ);
gu=input(ʹNhapsolanin:ʹ);
i=0;
whilei~=gu
disp([ʹXinchaoʹi]);

i=i+1
end

d.for
:vònglặpfordùngkhibiếttrướcsốlầnlặp.Cúphápnhưsau:
for<chỉsố>=<giátrịđầu>:<mứctăng>:<giátrịcuối>
Taxâydựngchươngtrìnhđoánsố
ct1_6.m:

clc
x=fix(100*rand);
n=7;
t=1;
fork=1:7
num=int2str(n);
disp([ʹBancoquyendudoanʹ,num,ʹlanʹ]);
disp(ʹSocandoannamtrongkhoang0‐100ʹ);
gu=input(ʹNhapsomabandoan:ʹ);
ifgu
<x
disp(ʹBandoannhohonʹ);
elseifgu>x
disp(ʹSobandoanlonhonʹ);
else
disp(ʹBandadoandung.Xinchucmungʹ);
t=0;
break;
end

13

n=n‐1;
end
ift>0
disp(ʹBankhongdoanraroiʹ);
numx=int2str(x);
disp([ʹDolaso:ʹ,numx]);
end

e.break:phátbiểubreak đểkếtthúcvònglặpforhaywhilemàkhông
quantâmđếnđiềukiệnkếtthúcvònglặpđãthoảmãnhaychưa.

§2.ĐỒHOẠTRONGMATLAB
1.Cáclệnhvẽ:MATLABcungcấpmộtloạthàmđểvẽbiểu diễncácvectơsố
liệucũngnhưgiảithíchvàincácđườngcongnày.

plotđồhọa2‐Dvớisốliệu2trụcvôhướngvàtuyếntính

plot3 đồhọa3‐Dvớisốliệu2trụcvôhướngvàtuyếntính

polar đồhoạtronghệtoạđộcực

loglogđồhoạvớicáctrụclogarit

semilogxđồhoạvớitrụcxlogaritvàtrụcytuyếntính

semilogyđồhoạvớitrục ylogaritvàtrụcxtuyếntính

plotyyđồhoạvớitrụcycónhãnởbêntráivàbênphải

2.Tạohìnhvẽ:Hàmplotcócácdạngkhácnhauphụthuộcvàocácđốisố

đưavào.Vídụnếuylàmộtvectơth ì
plot(y)tạoramộtđườngthẳngquanhệ
giữacácgiátrịcủayvàchỉsốcủanó.Nếutacó2vectơxvàythì
plot(x,y)
tạorađồthịquanhệgiữaxvày.

t=
[0:pi/100:2*pi]
 y=sin(t);
 plot(t,y)
 gridon
 polar(t,y)

3.Đặctảkiểuđườngvẽ:Tacó thểdùngcáckiểuđườngvẽkhácnhaukhivẽ
hình.Muốnthếtachuyểnkiểuđườngvẽchohàm
plot.Taviếtchươngtrình
ct1_7.mtạorađồthịhàmhìnhsin:


14
 t=[0:pi/100:2*pi];
 y=sin(t);
 plot(t,y,
’.‘)%vẽbằngđườngchấmchấm
 gridon

4.Đặctảmàuvàkíchthướcđườngv ẽ:Đểđặctảmàuvàkíchthướcđường
vẽtadùngcácthamsốsau:

LineWidthđộrộngđườngthẳng,tínhbằngsốđiểm 


MarkerEdgeColor màucủacáccạnhcủakhốiđánhdấu

MarkerFaceColormàucủakhốiđánhdấu

MarkerSizekíchthướccủakhốiđánhdấu
Màuđượcxácđịnhbằngcácthamsố:

Mã Màu Mã Màu
r red m magenta
g green y yellow
b blue k black
c cyan w white

Cácdạngđiểmđánhdấuxácđịnhbằng:

Mã Kiểuđánhdấu Mã Kiểuđánhdấu
+ dấucộng .điểm
o vòngtròn x chữthập
* dấusao s hìnhvuông
d hạtkimcương vđiểmtamgiáchướngxuống
^điểmtamgiáchướnglên < tamgiácsangtrái
> tamgiácsangphải h lụcgiác
p ngũgiác

Cácdạngđườngthẳngxácđịnhbằng:

Mã Kiểuđường Mã Kiểuđường
‐ đườngliền :đườngchấmchấm
‐‐ đườngđứtnét‐.đườngchấmgạch



15
Taxétchươngtrìnhct1_8.mnhư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ươngtrìnhnàysẽvẽđườngcongy=f(x)cócácđặctảsau:
‐đườngvẽlàđườngđứtnét(‐‐)
‐khốiđánhdấuhìnhvuông(s),đườngvẽmàuđỏ(r)
‐đườngvẽrộng2point
‐cáccạnhcủakhố
iđánhmàuđen
‐khốiđánhdấumàugreen
‐kíchthướckhốiđánhdấu10point

5.Thêmđườngvẽvàođồthịđãcó:Đểlàmđiềunàytadùnglệnhhold.Khi
tađánhlệnh
holdonthìMATLABkhôngxoáđồthịđangcó.Nóthêmsốliệu
vàođồthịmớinày.Nếuphạmvigiátrịcủađồthịmớivượtquácácgiátrị
củatrụctoạđộcũthìnósẽđịnhlạitỉlệxích.

6.Chỉvẽcácđiểmsốliệu:Đểvẽcácđiểmđánhdấumàkhôngnốichúnglạ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ĩalàtagọihàm

plotchỉvớiđặctảmàuvàđiểmđánhdấu.Taxétchương
trình
ct1_9.mnhưsau:


x=‐pi:pi/10:pi;
 y=tan(sin(x))‐sin(tan(x));
 plot(x,y,ʹsʹ,ʹMarkerEdgeColorʹ,ʹkʹ)

7.Vẽcácđiểmvàđường:Đểvẽ cảcácđiểmđánhdấu vàđườngn ối giữa
chúngtacầnmôtảkiểuđườngvàkiểuđiểm.Taxétchươngtrình
ct1_10.m:


x=0:pi/15:4*pi;
 
y=exp(2*sin(x));
 plot(x,y,ʹ‐rʹ,x,y,ʹokʹ)

dùngvẽđườngcongy=f(x)cóđườngnốiliền,màuđỏ.Điểmđánhdấulà

16
chữocómàuđen.

8.Vẽvớihaitrụcy
:Lệnhplotyychophéptạomộtđồthịcó haitrụcy.Ta
cũngcóthểdùng
plotyyđểchogiátr ịtrênhaitrụcycókiểukhácnhaunhằm
tiệnsosánh.Taxétchươngtrì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ẽđườngcongvớisốliệu3‐D :Nếux,y,zlà3vectơcócùngđộdàithì
plot3sẽvẽđườngcong3D.Taviếtchươngtrìnhct1_12.m:

t=0:pi/50:10*pi;
 plot3(sin(t),cos(t),t)
 axissquare;
 gridon

10.Đặtcácthôngsốchotrục
:Khitatạomộthìnhvẽ,MATLABtựđộngchọn
cácgiớihạntrêntrụctoạđộvàkhoảngcáchđánhdấudựatrênsốliệudùng
đểv ẽ.Tuynhiêntacóthểmôtảlạiphạ
mvigiátrịtrêntrụcvàkhoảngcách
đánhdấutheoýriêng.Tacóthểdùngcáclệnhsau:
 axis đặtlạicácgiátrịtrêntrụctoạđộ
 axes tạomộttrụctoạđộmớivớicácđặ
ctínhđượcmôtả
 getvàset chophépxácđịnhvàđặtcácthuộctínhcủatrụctoạđộđang
có
 gca  trởvềtrụctoạđộcũ
MATLABchọncá cgiớihạntrêntrụctoạđộvàkhoảngcáchđánh

dấudựa
trênsốliệudùngđểvẽ.Dùnglệnh
axiscóthểđặtlạigiớihạnnày.Cúpháp
củalệnh:
 axis[xmin,xmax,ymin,ymax]
Taxétchươngtrình
ct1_13.mnhưsau:


17
x=0:0.025:pi/2;
plot(x,tan(x),ʹ‐roʹ)
axis([0pi/205])

MATLABchiavạchtrêntrụcdựatrênphạmvidữliệuvàchiađều.Tacóthể
môtảcáchchianhờthôngsố
xtickvàytickbằngmộtvectơtăngdần.Vídụ
xétchươngtrì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.Ghinhãnlêncáctrụctoạđộ:MATLABcungcấpcáclệnhghinhãnlênđồ
hoạgồm:

title thêmnhãnvàođồhoạ


xlabel thêmnhãnvàotrụcx

ylabel thêmnhãnvàotrụcy

zlabel thêmnhãnvàotrụcz

legend thêmchúgiảivàođồthị

text hiểnthịchuỗivănbảnởvịtrínhấtđịnh

gtext đặtvănbảnlênđồhoạnhờchuột

\bf  boldfont

\it  italicsfont

\sl  obliquefont(chữnghiêng)

\rm  normalfont
Cáckítựđặcbiệtxemtrong
StringpropertiescủaHelp.
Tadùngcáclệnhxlabel,ylabel,zlabelđểthêmnhãnvàocáctrụctoạđộ.Ta
có thể thêm văn bản vào bất kì chỗ nào trên hình vẽ nhờ hàmtext. Ta có
chươngtrình
ct1_15.m:

x=‐pi:.1:pi;
 y=sin(x);
 plot(x,y)

 xlabel(ʹt=0to2\piʹ,ʹFontsizeʹ,16)
 ylabel(ʹsin(t)ʹ,ʹFontsizeʹ,16)

18
 title(ʹ\it{Giatricuasintuzerođến2pi}ʹ,ʹFontsizeʹ,16)

text(3*pi/4,sin(3*pi/4),ʹ\leftarrowsin(t)=0.707ʹ,ʹFontSizeʹ,12)

12.Địnhvịvănbảntrênhìnhvẽ:Tacóthểsửdụngđốitượngvănbảnđểghi
chúcáctrụcởvịtríbấtkì.MATLABđịnhvịvănbảntheođơnvịdữliệutrên
trục.Vídụđểvẽhàmy=Ae
α
t
vớiA=0.25,t=0đến900vàα=0.005taviết
chươngtrì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)%ghichutait=300

ThamsốHorizontalAlignmentvàVerticalAlignmentđịnhvịvănbảnsovới
cáctoạđộx,y,zđãcho.

13.Đồhoạđặcbiệt
: 


a.Khốivàvùng:Đồhoạkhốivàvùngbiểudiễnsốliệulàvectơhayma
trận.MATLABcungcấpcáchàmđồhoạkhốivàvùng:
bar hiểnthịcáccộtcủamatrậnm*nnhưlàmnhóm,mỗinhóm
cónbar
barh hiểnthịcáccộtcủamatrậnm*nnhưlàmnhóm,mỗinhóm
cónbarnằmngang
bar3 hiểnthịcáccộtcủamatrậnm*nnhưlàmnhóm,mỗinhóm
cónbardạng3D

bar3hhiểnthịcáccộtcủamatrậnm*nnhưlàmnhóm,mỗinhóm
cónbardạng3Dnằmngang
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ươngtrình
ct1_17.m:

y=[521
  673
  863
  555
 158];

19
 bar(y)


b.Môtảdữliệutrêntrục:Tadùngcáchàmxlabelvàylabelđểmôtả
cácdữliệutrêntrục.Taxétchươngtrình
ct1_18.m:


nhdo=[2923272520232327];
ngay=0:5:35;
bar(ngay,nhdo)
xlabel(ʹNgayʹ)
ylabel(ʹNhietdo(^{o}C)ʹ)
set(gca,ʹYLimʹ,[1530],ʹLayerʹ,ʹtopʹ)
gridon
set(gca,ʹYLimʹ,[1530])

Mặcđịnh,phạm vigiátrịcủatrụcy làtừ 0đến30.Đểxemnhiệtđộtrong
khoảngtừ15đến30tathayđổiphạmvigiátrịcủatrụcy:


set(gca,ʹYLimʹ,[1530],ʹLayerʹ,ʹtopʹ)

vàtrênđồthị,phạmvigiátrịcủatrụcyđãthayđổi.

c.Xếpchồngđồthị:Tacóthểxếpchồngsốliệutrênđồthịthanhbằng
cáchtạoramộttrụckháctrêncùngmộtvịtrívànhưvậytacómộttrụcyđộc
lậpvớibộsốliệu
khác.


TCE=[5154203702501351206020];
 nhdo=[2923272520232327];
 ngay=0:5:35;
 bar(ngay,nhdo)
 xlabel(ʹNgayʹ)
 ylabel(ʹNhietdo(^{o}C)ʹ)


Đểxếpchồngmộtsốliệulênmộtđồthịthanhởtrên,cótrụcthứ2ở
cùngvịtrínhưtrụcthứnhấttaviết:
 h1=gca;
vàtạotrụcthứ2ởvịtrítrụcthứnhấttrướcnhấtvẽbộsốliệuthứ2:


h2=axes(ʹPositionʹ,get(h1,ʹPositionʹ));

20
 plot(days,TCE,ʹLineWidthʹ,3)
Đểtrụcthứ2khônggâytrởngạichotrụcthứnhấttaviết:

set(h2,ʹYAxisLocationʹ,ʹrightʹ,ʹColorʹ,ʹnoneʹ,ʹXTickLabelʹ,[])
set(h2,ʹXLimʹ,get(h1,ʹXLimʹ),ʹLayerʹ,ʹtopʹ)

Đểghichúlênđồthịtaviết:

text(11,380,ʹMatdoʹ,ʹRotationʹ,‐‐55,ʹFontSizeʹ,16)
 ylabel(ʹTCEMatdo(PPM)ʹ)
 title(ʹXepchongdothiʹ,ʹFontSizeʹ,16)
(lưutrongct1_19.m)

 d.Đồhoạvùng
:Hàmareahiểnthịđườngcongtạotừmộtvectơhaytừ
mộtcộtcủa matrận. Nóvẽcácgiátrị củamộtcột của matrận thànhmột
đườngcongriêngvàtôđầyvùngkhông
giangiữacácđườngcongvàtrụcx.
taxétchươngtrình
ct1_20.m:



Y=[512

837
968
555
423];
 area(Y)

hiểnthịđồthịcó3vùng,mỗivùngmộtcột.Độcaocủamỗiđồthịvùnglà
tổngcácphầntửtrongmộthàng.Mỗiđườngcongsausửdụngđườngcong
trướclàmcơsở.Đểhiển
thịđườngchialướitadùnglệnh:


set(gca,ʹLayerʹ,ʹtopʹ)
 set(gca,ʹXTickʹ,1:5)
 gridon

 f.Đồthịpie
:Đồthịpiehiểnthịtheotỉlệphầntrămcủa mộtphầntử
củamộtvectơhaymộtmatrậnsovớitổngcácphầntử.Cáclệnh
pievàpie3
tạorađồthị2Dvà3D.taxétchươngtrì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=[136];
 %pie3(A)

Khitổngcácphầntửtrongđốisốthứnhấtb ằnghaylớnhơn1,pievàpie3
chuẩnhoácácgiátrị.Nh ưvậychovectơx,mỗiphầncódiệntích )x(sum
/
x
ii

vớix
ilàmộtphầntửcủax.Giátrịđượcchuẩnhoámôtảphầnnguyêncủa
mỗivùng.Khitổngcácphầntửtrongđốisốthứnhấtnhỏhơn1,
pievàpie3
khôngchuẩnhoácácphầntửcủavectơx.Chúngvẽmộtphầnpie.

x=[.19.22.41];
 pie(x)

 g.Làmhìnhchuyểnđộng:Tacóthểtạorahìnhchuyểnđộngbằng2cách


•tạovàlưunhiềuhìnhkhácnhauvàlầnlượthiểnthịchúng

•vẽvàxoá liêntụcmộtđốitượngtrênmànhình,mỗilầnv ẽlạicósự
thayđổi.
Vớicáchthứnhấttathựchiệnhìnhchuyểnđộngqua3bước:

•dùnghàmmovieinđểdànhbộnhớchomộtmatrậnđủlớnnhằmlưu
cáckhunghình.

•dùnghàmgetframesđểtạocáckhunghình.

•dùnghàmmovieđểhiểnthịcáckhunghình.
Sauđâylàvídụsửdụng
movieđểquansáthàmfft(eye(n)).Tatạochương
trình
ct1_22.mnhưsau:

axisequal
 M=moviein(16,gcf);
 set(gca,ʹNextPlotʹ,ʹreplacechildrenʹ)
 h=uicontrol(ʹstyleʹ,ʹsliderʹ,ʹpositionʹ,[1001050020],ʹMinʹ,1,ʹMaxʹ,16)
 forj=1:16
  plot(fft(eye(j+16)))

22
  set(h,ʹValueʹ,j)
 M(:,j)=getframe(gcf);
 end
 clf;
 axes(ʹPositionʹ,[0011]);

 movie(M,30)


Bướcđầutiênđểtạohìnhảnhchuyểnđộnglàkhởigánmatrận.Tuynhiên
trướckhigọihàm
moviein,tacầntạoracáctrụctoạđộcócùngkíchthước
vớikíchthướcmà tamuốnhiểnthịhình.Dotrongvídụnàytahiểnthịcácsố
liệucáchđềutrênvòngtrònđơnvịnênta
dùnglệnhaxisequalđểxácđịnhtỉ
lệcáctrục.Hàm
movieintạoramatrậnđủlớnđểchứa16khunghình.Phát
biểu:


set(gca,ʹNextPlotʹ,ʹreplacechildrenʹ)

ngănhàmplotđưatỉlệcáctrụcvềaxisnormalmỗikhinóđượcgọi.Hàm
getframekhôngđốisốtrảlạicácđiểmảnhcủatrụchiệnhànhởhìnhhiệncó.
Mỗikhunghìnhgồmcácsốliệutrongmộtvectơcột.Hàm
getframe(gcf)chụp
toànbộphầntrong củamộtcửasổhiệnhành.Saukhitạorahìnhảnhtacó
thểchạychúngmộtsốlầnnhấtđịnhvídụ30lầnnhờhàm
movie(M,30).
Mộtphươngphápnữađểtạohìnhchuyểnđộnglàvẽvàxoá,nghĩalà
vẽmộtđốitượngđồhoạrồithayđổivịtrícủanóbằngcáchthayđổitoạđộx,
yvàzmộtlượ
ngnhỏnhờmộtvònglặp.Tacóthểtạoracáchiệuứngkhác
nhaunhờcáccáchxoáhìnhkhácnhau.Chúnggồm:

•noneMATLABkhôngxoáđốitượngkhinódichuyển

•background MATLABxoáđốitượngbằngcáchvẽnócómàu
nền

•xorMATLABchỉxoáđốitượng
TatạoraM‐filecótênlà
ct1_23.mnhưsau:


A=[‐8/300;0‐1010;028‐1];
 y=[35‐10‐7]ʹ;
 h=0.01;
 p=plot3(y(1),y(2),y(3),ʹ.ʹ, 
ʹEraseModeʹ,ʹnoneʹ,ʹMarkerSizeʹ,5);
 axis([050‐2525‐2525])

23
 holdon
 fori=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))%thaydoitoado
drawnow
i=i+1;
 end

13.Đồhoạ3D
:
 a.Cáclệnhcơbản:Lệnhmeshvàsurftạoralướivàmặt3Dtừmatrận

sốliệu.Gọimatrậnsốliệulàzmàmỗiphầntửcủanóz(i,j)xácđịnhtungđộ
củamặtthì
mesh(z)tạoramộtlướicómàuthểhiệnmặtzcònsurf(z) tạora
mộtmặtcómàuz.
 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ạomatrậnxvàychứacáctoạđộtrongmiềnxácđịnhcủahàm.
Hàmmeshgridsẽbiếnđổivùngxácđịnhbởi2vectơxvà
ythànhmatrậnx
vày.Sauđótadùngmatrậnnàyđểđánhgiáhàm.
Takhảosáthàm
sin(r)/r.Đểtínhhàmtrongkhoảng‐8và8theoxvày
tachỉcầnchuyểnmộtvectơđốisốcho
meshgrid:


[x,y]=meshgrid(‐8:.5:8);
 r=sqrt(x.^2+y.^2)+0.005
;

matrậnrchứakhoảngcáchtừtâmcủamatrận.Tiếptheotadùnghàm
mesh
đểvẽhàm.


z=sin(r)./r;
 mesh(z)


c.Đồthịđườngđẳngmức:Cáchàmcontourtạo,hiểnthịvàghichúcác
đườngđẳngmứccủamộthaynhiềumatrận.Chúnggồm:


clabel tạocácnhãnsửdụngmatrậncontourvàhiểnthịnhãn
contour hiểnthịcácđườngđẳngmứctạobởimộtgiátrịchotrước
củamatrậnZ.

24
contour3 hiểnthịcácmặtđẳngmứctạobởimộtgiátrịchotrướccủa
matrậnZ.

contourf hiểnthịđồthịcontour2Dvàtômàuvùnggiữa2cácđường

contourc hàmcấpthấpđểtínhmatrậncontour
Hàm
meshchiểnthịcontourvàlướivàsurfchiểnthịmặtcontour.


[X,Y,Z]=peaks;
contour(X,Y,Z,20)

Mỗicontourcómộtgiátrịgắnvớinó.Hàmclabeldùnggiátrịnàyđểhiểnthị
nhãnđườngđồngmức2D.Matrậncontourchứagiátrịclabeldùngchocác
đường contour 2D. Ma  trận nàyđược xácđịnh bởi
contour, contour3 và
contourf.
Đểhiểnthị10đườngđẳngmứccủahàm
peaktaviết:


Z=peaks;
 [C,h]=contour(Z,10);

 clabel(C,h)
 title({ʹCaccontourconhanʹ,ʹclabel(C,h)ʹ})

Hàm
contourfhiểnthịđồthịđườngđẳngmứctrênmộtmặtphẳngvàtômàu
vùngcònlạigiữacácđườngđẳngmức.Đểkiểmsoátmàutôtadùnghàm
caxisvàcolormap.Taviếtchươngtrìnhct1_26.m:

Z=peaks;
 [C,h]=contourf(Z,10);
 caxis([‐2020])
 colormapautumn;
 title({ʹContourcotomauʹ,ʹcontourf(Z,10)ʹ})

Cáchàm
contour(z,n)vàcontour(z,v)chophéptachỉrõsốlượngmức
contourhaymộtmứccontourcầnvẽnàođóvớizlàma trậnsốliệu,nlàsố
đường contour và v là vectơcácmức contour. MATLABkhôngphânbi
ệt
giữavectơmộtphầntửhayđạilượngvôhướng.Nhưvậynếuvlàvectơ
mộtphầntửmôtảmộtcontourđơnởmộtmứchàm
contoursẽcoinólàsố
lượngđườngcontourchứkhôngphảilàmứccontour.Nghĩalà,
contour(z,v)
cũngnhư
contour(z,n).Đểhiểnthịmộtđườngđẳngmứctacầnchovlàmột

25
vectơcó2phầntửvớicảhai phầntửbằngmứcmongmuốn.Vídụđểtạora
mộtđườngđẳngmức3Dcủahàmpeakstaviếtchươngtrình

ct1_27.m:


xrange=‐3:.125:3;
 yrange=xrange;
 [X,Y]=meshgrid(xrange,yrange);
 Z=peaks(X,Y);
 contour3(X,Y,Z)

ĐểhiểnthịmộtmứcởZ=1,tachovlà[11]


v=[11]
 contour3(X,Y,Z,v)

Hàm
ginputchophéptadùngchuộthaycácphímmũitênđểchọncác
điểmvẽ.Nótrảv ềtoạđộcủavịtrícontrỏ.Vídụsausẽminhhoạcácdùng
hàm
ginputvàhàmsplineđểtạorađườngcongnộisuyhaibiến.
TatạomộtM‐filecótên
ct1_28.mnhưsau:


disp(ʹChuotphaitrocacdiemtrenduongveʹ)
 disp(ʹChuottraitrodiemcuoicuaduongveʹ)
 axis([010010])
 holdon
 x=[];
 y=[];

 n=0;
 but=1;
 whilebut==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);


×