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

Tài liệu Matlab - các toán tử cơ bản của Matlab - P1 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 (522.35 KB, 40 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);


×