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ện lên mà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
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
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
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)
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
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;
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ụ:
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
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)
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]);
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ố
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
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:
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(ʹ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
:
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ụcy là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)ʹ)
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;
•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]);
•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
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);
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=[];