programming matlab
TRANSCRIPT
-
Chng 3: Lp trnh Matlab
Trn Minh Ton (1)
Vin Ton ng dng v Tin hc, HBK H Ni
H Ni, thng 1 nm 2012
(1)Email: [email protected]. Ton (SAMI-HUST) Lp trnh Matlab 1/87H Ni, thng 1 nm 2012 1 / 87
-
M u
Ni dung
1 M u
2 Cc th tc
3 Cc hm m-file
4 Nhp, xut d liu
5 iu khin lung
6 Vector ha (Vectorization)
7 Qun l cc bin Input, Output
8 Tnh gi tr hm mt cch gin tip
9 Ch thch
10 G li
11 Mt s kinh nghim trong lp trnh Matlab
T.M. Ton (SAMI-HUST) Lp trnh Matlab 2/87H Ni, thng 1 nm 2012 2 / 87
-
M u
M uTip cn lp trnh Matlab
Mt th tc chun ca vic s dng lp trnh MatLab cho vic gii quyt mt bi tonk thut bao gm cc bc:
1 Phn tch bi ton v xc nh thut gii (trn giy)
2 Phc tho cc cng thc tnh ton (trn giy)
3 Vit chng trnh MatLab (M-file) s dng MATLAB Editor/Debugger
4 Kim nghim v sa li
5 Gii bi ton
T.M. Ton (SAMI-HUST) Lp trnh Matlab 3/87H Ni, thng 1 nm 2012 3 / 87
-
M u
M uTip cn lp trnh Matlab
Mt th tc chun ca vic s dng lp trnh MatLab cho vic gii quyt mt bi tonk thut bao gm cc bc:
1 Phn tch bi ton v xc nh thut gii (trn giy)
2 Phc tho cc cng thc tnh ton (trn giy)
3 Vit chng trnh MatLab (M-file) s dng MATLAB Editor/Debugger
4 Kim nghim v sa li
5 Gii bi ton
T.M. Ton (SAMI-HUST) Lp trnh Matlab 3/87H Ni, thng 1 nm 2012 3 / 87
-
M u
M uTip cn lp trnh Matlab
Mt th tc chun ca vic s dng lp trnh MatLab cho vic gii quyt mt bi tonk thut bao gm cc bc:
1 Phn tch bi ton v xc nh thut gii (trn giy)
2 Phc tho cc cng thc tnh ton (trn giy)
3 Vit chng trnh MatLab (M-file) s dng MATLAB Editor/Debugger
4 Kim nghim v sa li
5 Gii bi ton
T.M. Ton (SAMI-HUST) Lp trnh Matlab 3/87H Ni, thng 1 nm 2012 3 / 87
-
M u
M uTip cn lp trnh Matlab
Mt th tc chun ca vic s dng lp trnh MatLab cho vic gii quyt mt bi tonk thut bao gm cc bc:
1 Phn tch bi ton v xc nh thut gii (trn giy)
2 Phc tho cc cng thc tnh ton (trn giy)
3 Vit chng trnh MatLab (M-file) s dng MATLAB Editor/Debugger
4 Kim nghim v sa li
5 Gii bi ton
T.M. Ton (SAMI-HUST) Lp trnh Matlab 3/87H Ni, thng 1 nm 2012 3 / 87
-
M u
M uTip cn lp trnh Matlab
Mt th tc chun ca vic s dng lp trnh MatLab cho vic gii quyt mt bi tonk thut bao gm cc bc:
1 Phn tch bi ton v xc nh thut gii (trn giy)
2 Phc tho cc cng thc tnh ton (trn giy)
3 Vit chng trnh MatLab (M-file) s dng MATLAB Editor/Debugger
4 Kim nghim v sa li
5 Gii bi ton
T.M. Ton (SAMI-HUST) Lp trnh Matlab 3/87H Ni, thng 1 nm 2012 3 / 87
-
M u
M u
Cc chng trnh MatLab c cha trong cc m-files
L cc file vn bn thng thng, khng phi file nh phn Cc file phi c ui .m
Cc m-file phi c t trong ng dn hin thi trong ca s Command
Window
MatLab qun l ng dn trong ca n ng dn l mt danh sch cc th mc m MatLab s tm kim
mt m-file thc thi Mt chng trnh c th tn ti v khng c li nhng c th vn
khng chy nu MatLab khng tm thy n C th thay i ng dn bng cch dng cc lnh path, addpath
v rmpath.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 4/87H Ni, thng 1 nm 2012 4 / 87
-
Cc th tc
Ni dung
1 M u
2 Cc th tc
3 Cc hm m-file
4 Nhp, xut d liu
5 iu khin lung
6 Vector ha (Vectorization)
7 Qun l cc bin Input, Output
8 Tnh gi tr hm mt cch gin tip
9 Ch thch
10 G li
11 Mt s kinh nghim trong lp trnh Matlab
T.M. Ton (SAMI-HUST) Lp trnh Matlab 5/87H Ni, thng 1 nm 2012 5 / 87
-
Cc th tc
Cc th tc (Script Files)
Khng thc s l cc chng trnh
Khng c cc d liu input/output Cc bin th tc l mt phn ca khng gian lm vic
Hu ch cho cc cng vic c nh
Hu ch nh l mt cng c khi to cc ti liu cho cc bi tp nh
Li khuyn
Cc hm (functions) c rt nhiu tin ch so vi cc th tc (scripts)= Lun lun s dng hm thay cho th tc.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 6/87H Ni, thng 1 nm 2012 6 / 87
-
Cc th tc
Cc th tc (Script Files)Tc dng ph ca cc th tc
Tt c cc bin c to ra trong th tc s c thm vo khng gian lm vic. iuny s c nh hng ng k bi v
Cc bin tn ti trong khng gian lm vic c th b vit chng ln
S thc thi ca cc th tc c th b nh hng bi trng thi ca cc bin trongkhng gian lm vic.
V d 1
Th tc easyplot
% Load
D=load(xy.dat); % D is a matrix with two columns
x=D(:,1); y=D(:,2); % x is the first column, y is second one
plot(x,y) % Generate the plot and label it
xlabel(x axis)
ylabel(y axis)
title(Plot of generic x-y data set)
T.M. Ton (SAMI-HUST) Lp trnh Matlab 7/87H Ni, thng 1 nm 2012 7 / 87
-
Cc th tc
Cc th tc (Script Files)Tc dng ph ca cc th tc
Th tc easyplot tc ng ln khng gian lm vic bng cch to ra ba bin:
>> clear
>> who
(khng c bin no)
>> easyplot
>> who
Your variables are:
D x y
T.M. Ton (SAMI-HUST) Lp trnh Matlab 8/87H Ni, thng 1 nm 2012 8 / 87
-
Cc th tc
Cc th tc (Script Files)Tc dng ph ca cc th tc
Ni chung, cc tc dng ph:
Din ra khi mt chng trnh thay i cc bin ngoi tr input/output
C th gy cc li m rt kh pht hin ra
Khng phi lc no cng trnh c
Cc tc dng ph ca th tc
To ra v thay i cc bin trong khng gian lm vic
Khng a ra khuyn co rng cc bin trong khng gian lm vic b thay i.
Bi v cc th tc c cc tc dng ph, tt hn l gi gn tt c trong hm m-file.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 9/87H Ni, thng 1 nm 2012 9 / 87
-
Cc th tc
Cc th tc (Script Files)Tc dng ph ca cc th tc
Ni chung, cc tc dng ph:
Din ra khi mt chng trnh thay i cc bin ngoi tr input/output
C th gy cc li m rt kh pht hin ra
Khng phi lc no cng trnh c
Cc tc dng ph ca th tc
To ra v thay i cc bin trong khng gian lm vic
Khng a ra khuyn co rng cc bin trong khng gian lm vic b thay i.
Bi v cc th tc c cc tc dng ph, tt hn l gi gn tt c trong hm m-file.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 9/87H Ni, thng 1 nm 2012 9 / 87
-
Cc th tc
Cc th tc (Script Files)Tc dng ph ca cc th tc
Ni chung, cc tc dng ph:
Din ra khi mt chng trnh thay i cc bin ngoi tr input/output
C th gy cc li m rt kh pht hin ra
Khng phi lc no cng trnh c
Cc tc dng ph ca th tc
To ra v thay i cc bin trong khng gian lm vic
Khng a ra khuyn co rng cc bin trong khng gian lm vic b thay i.
Bi v cc th tc c cc tc dng ph, tt hn l gi gn tt c trong hm m-file.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 9/87H Ni, thng 1 nm 2012 9 / 87
-
Cc th tc
Cc th tc (Script Files)Tc dng ph ca cc th tc
Ni chung, cc tc dng ph:
Din ra khi mt chng trnh thay i cc bin ngoi tr input/output
C th gy cc li m rt kh pht hin ra
Khng phi lc no cng trnh c
Cc tc dng ph ca th tc
To ra v thay i cc bin trong khng gian lm vic
Khng a ra khuyn co rng cc bin trong khng gian lm vic b thay i.
Bi v cc th tc c cc tc dng ph, tt hn l gi gn tt c trong hm m-file.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 9/87H Ni, thng 1 nm 2012 9 / 87
-
Cc th tc
Cc th tc (Script Files)Tc dng ph ca cc th tc
Ni chung, cc tc dng ph:
Din ra khi mt chng trnh thay i cc bin ngoi tr input/output
C th gy cc li m rt kh pht hin ra
Khng phi lc no cng trnh c
Cc tc dng ph ca th tc
To ra v thay i cc bin trong khng gian lm vic
Khng a ra khuyn co rng cc bin trong khng gian lm vic b thay i.
Bi v cc th tc c cc tc dng ph, tt hn l gi gn tt c trong hm m-file.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 9/87H Ni, thng 1 nm 2012 9 / 87
-
Cc th tc
Cc th tc (Script Files)Tc dng ph ca cc th tc
Ni chung, cc tc dng ph:
Din ra khi mt chng trnh thay i cc bin ngoi tr input/output
C th gy cc li m rt kh pht hin ra
Khng phi lc no cng trnh c
Cc tc dng ph ca th tc
To ra v thay i cc bin trong khng gian lm vic
Khng a ra khuyn co rng cc bin trong khng gian lm vic b thay i.
Bi v cc th tc c cc tc dng ph, tt hn l gi gn tt c trong hm m-file.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 9/87H Ni, thng 1 nm 2012 9 / 87
-
Cc th tc
Cc th tc (Script Files)Tc dng ph ca cc th tc
Ni chung, cc tc dng ph:
Din ra khi mt chng trnh thay i cc bin ngoi tr input/output
C th gy cc li m rt kh pht hin ra
Khng phi lc no cng trnh c
Cc tc dng ph ca th tc
To ra v thay i cc bin trong khng gian lm vic
Khng a ra khuyn co rng cc bin trong khng gian lm vic b thay i.
Bi v cc th tc c cc tc dng ph, tt hn l gi gn tt c trong hm m-file.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 9/87H Ni, thng 1 nm 2012 9 / 87
-
Cc th tc
Cc th tc (Script Files)Tc dng ph ca cc th tc
Ni chung, cc tc dng ph:
Din ra khi mt chng trnh thay i cc bin ngoi tr input/output
C th gy cc li m rt kh pht hin ra
Khng phi lc no cng trnh c
Cc tc dng ph ca th tc
To ra v thay i cc bin trong khng gian lm vic
Khng a ra khuyn co rng cc bin trong khng gian lm vic b thay i.
Bi v cc th tc c cc tc dng ph, tt hn l gi gn tt c trong hm m-file.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 9/87H Ni, thng 1 nm 2012 9 / 87
-
Cc hm m-file
Ni dung
1 M u
2 Cc th tc
3 Cc hm m-file
4 Nhp, xut d liu
5 iu khin lung
6 Vector ha (Vectorization)
7 Qun l cc bin Input, Output
8 Tnh gi tr hm mt cch gin tip
9 Ch thch
10 G li
11 Mt s kinh nghim trong lp trnh Matlab
T.M. Ton (SAMI-HUST) Lp trnh Matlab 10/87H Ni, thng 1 nm 2012 10 / 87
-
Cc hm m-file
Cc hm m-file
Trong MatLab th tn hm phi trng vi tn ca file c ui .m
Hm l cc chng trnh con:
Cc hm s dng cc tham s u vo/ra kt hp chng vi cchm khc v cc lnh window
Cc hm s dng cc bin a phng (local variables) m ch tn tikhi hm ang thc thi. Cc bin a phng c phn bit vi ccbin trng tn trong khng gian lm vic hoc ca cc hm khc.
Cc d liu u vo cho php cng mt th tc tnh ton (cng thut ton) pdng vi cc d liu khc nhau. Do , cc hm m-file c th dng li nhiu ln.
Cc hm c th gi cc hm khc
Cc th tc ring c th gi vo trong mt hm. Cc tip cn ny cho php phttrin li gii cu trc ca cc bi ton phc tp.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 11/87H Ni, thng 1 nm 2012 11 / 87
-
Cc hm m-file
Cc hm m-file
Trong MatLab th tn hm phi trng vi tn ca file c ui .m
Hm l cc chng trnh con:
Cc hm s dng cc tham s u vo/ra kt hp chng vi cchm khc v cc lnh window
Cc hm s dng cc bin a phng (local variables) m ch tn tikhi hm ang thc thi. Cc bin a phng c phn bit vi ccbin trng tn trong khng gian lm vic hoc ca cc hm khc.
Cc d liu u vo cho php cng mt th tc tnh ton (cng thut ton) pdng vi cc d liu khc nhau. Do , cc hm m-file c th dng li nhiu ln.
Cc hm c th gi cc hm khc
Cc th tc ring c th gi vo trong mt hm. Cc tip cn ny cho php phttrin li gii cu trc ca cc bi ton phc tp.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 11/87H Ni, thng 1 nm 2012 11 / 87
-
Cc hm m-file
Cc hm m-file
Trong MatLab th tn hm phi trng vi tn ca file c ui .m
Hm l cc chng trnh con:
Cc hm s dng cc tham s u vo/ra kt hp chng vi cchm khc v cc lnh window
Cc hm s dng cc bin a phng (local variables) m ch tn tikhi hm ang thc thi. Cc bin a phng c phn bit vi ccbin trng tn trong khng gian lm vic hoc ca cc hm khc.
Cc d liu u vo cho php cng mt th tc tnh ton (cng thut ton) pdng vi cc d liu khc nhau. Do , cc hm m-file c th dng li nhiu ln.
Cc hm c th gi cc hm khc
Cc th tc ring c th gi vo trong mt hm. Cc tip cn ny cho php phttrin li gii cu trc ca cc bi ton phc tp.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 11/87H Ni, thng 1 nm 2012 11 / 87
-
Cc hm m-file
Cc hm m-file
Trong MatLab th tn hm phi trng vi tn ca file c ui .m
Hm l cc chng trnh con:
Cc hm s dng cc tham s u vo/ra kt hp chng vi cchm khc v cc lnh window
Cc hm s dng cc bin a phng (local variables) m ch tn tikhi hm ang thc thi. Cc bin a phng c phn bit vi ccbin trng tn trong khng gian lm vic hoc ca cc hm khc.
Cc d liu u vo cho php cng mt th tc tnh ton (cng thut ton) pdng vi cc d liu khc nhau. Do , cc hm m-file c th dng li nhiu ln.
Cc hm c th gi cc hm khc
Cc th tc ring c th gi vo trong mt hm. Cc tip cn ny cho php phttrin li gii cu trc ca cc bi ton phc tp.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 11/87H Ni, thng 1 nm 2012 11 / 87
-
Cc hm m-file
Cc hm m-file
Trong MatLab th tn hm phi trng vi tn ca file c ui .m
Hm l cc chng trnh con:
Cc hm s dng cc tham s u vo/ra kt hp chng vi cchm khc v cc lnh window
Cc hm s dng cc bin a phng (local variables) m ch tn tikhi hm ang thc thi. Cc bin a phng c phn bit vi ccbin trng tn trong khng gian lm vic hoc ca cc hm khc.
Cc d liu u vo cho php cng mt th tc tnh ton (cng thut ton) pdng vi cc d liu khc nhau. Do , cc hm m-file c th dng li nhiu ln.
Cc hm c th gi cc hm khc
Cc th tc ring c th gi vo trong mt hm. Cc tip cn ny cho php phttrin li gii cu trc ca cc bi ton phc tp.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 11/87H Ni, thng 1 nm 2012 11 / 87
-
Cc hm m-file
Cc hm m-file
Trong MatLab th tn hm phi trng vi tn ca file c ui .m
Hm l cc chng trnh con:
Cc hm s dng cc tham s u vo/ra kt hp chng vi cchm khc v cc lnh window
Cc hm s dng cc bin a phng (local variables) m ch tn tikhi hm ang thc thi. Cc bin a phng c phn bit vi ccbin trng tn trong khng gian lm vic hoc ca cc hm khc.
Cc d liu u vo cho php cng mt th tc tnh ton (cng thut ton) pdng vi cc d liu khc nhau. Do , cc hm m-file c th dng li nhiu ln.
Cc hm c th gi cc hm khc
Cc th tc ring c th gi vo trong mt hm. Cc tip cn ny cho php phttrin li gii cu trc ca cc bi ton phc tp.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 11/87H Ni, thng 1 nm 2012 11 / 87
-
Cc hm m-file
Cc hm m-file
Trong MatLab th tn hm phi trng vi tn ca file c ui .m
Hm l cc chng trnh con:
Cc hm s dng cc tham s u vo/ra kt hp chng vi cchm khc v cc lnh window
Cc hm s dng cc bin a phng (local variables) m ch tn tikhi hm ang thc thi. Cc bin a phng c phn bit vi ccbin trng tn trong khng gian lm vic hoc ca cc hm khc.
Cc d liu u vo cho php cng mt th tc tnh ton (cng thut ton) pdng vi cc d liu khc nhau. Do , cc hm m-file c th dng li nhiu ln.
Cc hm c th gi cc hm khc
Cc th tc ring c th gi vo trong mt hm. Cc tip cn ny cho php phttrin li gii cu trc ca cc bi ton phc tp.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 11/87H Ni, thng 1 nm 2012 11 / 87
-
Cc hm m-file
Cc hm m-file
C php
Dng u tin ca hm m-file c dng
function [outArgs]=funName(inArgs)
trong outArgs l danh sch cc bin u ra, c t trong [ ]
Cc bin trong outArgs c cch nhau bi du ,
[ ] l ty chn nu ch c 1 tham s u ra
Hm m khng c outArgs vn l hp l
v danh sch cc bin u vo inArgs c t trong ( )
Cc bin trong inArgs c cch nhau bi du ,
Hm m khng c inArgs vn l hp l
C th kim tra tnh hp l ca tn hm bng cch dng lnh
>> isvarname funName
T.M. Ton (SAMI-HUST) Lp trnh Matlab 12/87H Ni, thng 1 nm 2012 12 / 87
-
Cc hm m-file
Cc hm m-fileInput v Output
twosum.m: two inputs, no output
function twosum(x,y)
% twosum Add two matrices and print the result
% two inputs, no output
x+y
threesum.m: three inputs, one output
function s=threesum(x,y,z)
% threesum Add three matrices and return the result
% three inputs, one output
s=x+y+z;
addmult.m: two inputs, two outputs
function [s,p]=addmult(x,y)
% addmult Compute sum and product of two matrices
% two inputs, two outputs
s=x+y;
p=x*y;T.M. Ton (SAMI-HUST) Lp trnh Matlab 13/87H Ni, thng 1 nm 2012 13 / 87
-
Cc hm m-file
Cc hm m-fileInput v Output
V d 2
Xt hm twosum
>> twosum(2,2)
ans =
4
>> x=[1 2]; y=[3 4];
>> twosum(x,y)
ans =
4 6
>> A = [1 2; 3 4]; B = [5 6; 7 8];
>> twosum(A,B);
ans =
6 8
10 12
T.M. Ton (SAMI-HUST) Lp trnh Matlab 14/87H Ni, thng 1 nm 2012 14 / 87
-
Cc hm m-file
Cc hm m-fileInput v Output
V d 3
>> clear
>> x = 4; y = -2;
>> twosum(1,2)
ans =
3
>> x+y
ans =
2
>> disp([x y])
4 -2
>> who
Your variables are:
ans x y
Trong v d cc bin x v y c nh ngha trong khng gian lm vic l khc vi ccbin x, y c xc nh trong hm twosum. Cc bin x, y trong twosum l cc bin aphng trong hm ny.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 15/87H Ni, thng 1 nm 2012 15 / 87
-
Cc hm m-file
Cc hm m-fileTm tt v cc tham s Input v Output
Cc gi tr c kt hp thng qua cc d liu input v output
Cc bin c nh ngha trong mt hm l bin a phng. Cc hm khc vmi trng ca s lnh s khng nhn c chng.
S lng cc bin tr v nn trng vi s lng cc bin output trong hm.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 16/87H Ni, thng 1 nm 2012 16 / 87
-
Cc hm m-file
Cc hm m-fileTm tt v cc tham s Input v Output
Cc gi tr c kt hp thng qua cc d liu input v output
Cc bin c nh ngha trong mt hm l bin a phng. Cc hm khc vmi trng ca s lnh s khng nhn c chng.
S lng cc bin tr v nn trng vi s lng cc bin output trong hm.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 16/87H Ni, thng 1 nm 2012 16 / 87
-
Cc hm m-file
Cc hm m-fileTm tt v cc tham s Input v Output
Cc gi tr c kt hp thng qua cc d liu input v output
Cc bin c nh ngha trong mt hm l bin a phng. Cc hm khc vmi trng ca s lnh s khng nhn c chng.
S lng cc bin tr v nn trng vi s lng cc bin output trong hm.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 16/87H Ni, thng 1 nm 2012 16 / 87
-
Nhp, xut d liu
Ni dung
1 M u
2 Cc th tc
3 Cc hm m-file
4 Nhp, xut d liu
5 iu khin lung
6 Vector ha (Vectorization)
7 Qun l cc bin Input, Output
8 Tnh gi tr hm mt cch gin tip
9 Ch thch
10 G li
11 Mt s kinh nghim trong lp trnh Matlab
T.M. Ton (SAMI-HUST) Lp trnh Matlab 17/87H Ni, thng 1 nm 2012 17 / 87
-
Nhp, xut d liu
Nhp, xut d liu
Cc hm nhp d liu
Hm input c th c s dng nhp d liu t bn phm.
Cc tham s u vo ca cc hm c a dng hn.
Cc hm xut d liu
Hm disp c th c s dng cho cc kt qu n gin
Dng hm fprintf cho cc d liu nh dng trc.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 18/87H Ni, thng 1 nm 2012 18 / 87
-
Nhp, xut d liu
Nhp, xut d liuXut d liu vi disp v fprintf
Xut d liu trong ca s lnh c thc hin vi hm disp hoc fprintf. Nu munghi d liu vo file bt buc phi dng hm fprintf.
disp
S dng rt n gin. Tuy nhin vic iu khin nh dng ca cc output l rt hn ch.
fprintf
Tng i phc tp hn disp. Cung cp ton b cc cch iu khin nh dng ca ccoutput.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 19/87H Ni, thng 1 nm 2012 19 / 87
-
Nhp, xut d liu
Nhp, xut d liuHm disp
C php
disp(outMatrix)
trong outMatrix c th l ma trn s hoc xu.
V d 4
>> disp(5)
5
>> x = 1:3; disp(x)
1 2 3
>> y = 3-x; disp([x; y])
1 2 3
2 1 0
>> disp([x y])
1 2 3 2 1 0
>> disp([x y])
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 20/87H Ni, thng 1 nm 2012 20 / 87
-
Nhp, xut d liu
Nhp, xut d liuHm disp
V d 5
>> disp(Hello World!)
Hello World!
>> s=Have a nice day; disp(s)
Have a nice day
>> t=You are using Matlab 7.10.0;
>> disp([s;t])
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
>> disp(char(s,t))
Have a nice day
You are using Matlab 7.10.0
T.M. Ton (SAMI-HUST) Lp trnh Matlab 21/87H Ni, thng 1 nm 2012 21 / 87
-
Nhp, xut d liu
Nhp, xut d liuHm disp
Ch 4.1
Lnh disp([s;t]) xut hin li bi v s c t k t hn t. Hm char to mt ma trnxu bng cch t mi input trn mt dng ring v chn thm cc khong trng nucn.
>> S=char(s,t);
>> length(s), length(t), length(S(1,:))
ans =
15
ans =
27
ans =
27
T.M. Ton (SAMI-HUST) Lp trnh Matlab 22/87H Ni, thng 1 nm 2012 22 / 87
-
Nhp, xut d liu
Nhp, xut d liuHm num2str
Hm num2str thng c dng vi hm disp to ra d liu u ra c gn nhnca mt gi tr s
C php
stringValue=num2str(numericValue)
chuyn numericValue thnh mt xu biu din gi tr s .
V d 6
>> num2str(pi)
ans =
3.1416
T.M. Ton (SAMI-HUST) Lp trnh Matlab 23/87H Ni, thng 1 nm 2012 23 / 87
-
Nhp, xut d liu
Nhp, xut d liuHm num2str
>> A=eye(3)
A =
1 0 0
0 1 0
0 0 1
>> S=num2str(A)
S =
1 0 0
0 1 0
0 0 1
Mc d A v S c v cha cng cc gi tr, chng khng tng ng. A l mt ma trns cn S l ma trn xu.
>> A-S
??? Error using ==> minus
Matrix dimensions must agree.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 24/87H Ni, thng 1 nm 2012 24 / 87
-
Nhp, xut d liu
Nhp, xut d liuS dng num2str vi disp
>> x=sqrt(2);
>> outString=[x=,num2str(x)];
>> disp(outString)
x=1.4142
hoc
>> disp([x=,num2str(x)])
x=1.4142
T.M. Ton (SAMI-HUST) Lp trnh Matlab 25/87H Ni, thng 1 nm 2012 25 / 87
-
Nhp, xut d liu
Nhp, xut d liuS dng num2str vi disp
Ch
Cu trc
disp([x=,num2str(x)])
ch lm vic khi x l mt ma trn hng cn vi ma trn ct th khng
>> y=1:4;
>> z=y;
>> disp([z=,num2str(z)])
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 26/87H Ni, thng 1 nm 2012 26 / 87
-
Nhp, xut d liu
Nhp, xut d liuS dng num2str vi disp
Thay vo , s dng hai lnh disp hin th ct ca cc vector hay ma trn
>> disp(z=); disp(z)
z=
1
2
3
4
hoc n gin l nhp vo tn ca bin m khng c du ; cui dng
>> z
z =
1
2
3
4
T.M. Ton (SAMI-HUST) Lp trnh Matlab 27/87H Ni, thng 1 nm 2012 27 / 87
-
Nhp, xut d liu
Nhp, xut d liuHm format
Hm format iu chnh chnh xc ca d liu in ra.
>> format short
>> disp(pi)
3.1416
>> format long
>> disp(pi)
3.141592653589793
Ngoi ra, thng s th hai ca hm num2str cng c th dng vi mc ch trn
>> disp([pi=,num2str(pi,2)])
pi=3.1
>> disp([pi=,num2str(pi,4)])
pi=3.142
>> disp([pi=,num2str(pi,8)])
pi=3.1415927
T.M. Ton (SAMI-HUST) Lp trnh Matlab 28/87H Ni, thng 1 nm 2012 28 / 87
-
Nhp, xut d liu
Nhp, xut d liuHm fprintf
C php
fprintf(outFormat, outVariables)
fprintf(filehandle, outFormat, outVariables)
s dng outFormat chuyn outVariables thnh cc xu c in ra. Trong dng utin, kt qu s hin th trong ca s lnh. Trong dng th hai, kt qu s c lu vofile c tham chiu bi fileHandle.
V d 7
>> x=3;
>> fprintf(Square root of %g is %8.6f\n,x,sqrt(x))
Square root of 3 is 1.732051
T.M. Ton (SAMI-HUST) Lp trnh Matlab 29/87H Ni, thng 1 nm 2012 29 / 87
-
Nhp, xut d liu
Nhp, xut d liuHm fprintf
Thnh phn outFormat nh r cch cc outVariables c chuyn thnh v hin th.Xu outFormat c th cha bt k mt k t no. N cng phi cha mt m chuyni cho mi outVariables. Cc m chuyn i c bn c cho di bng sau:
M Dng%s dng xu
%d dng s nguyn
%f dng du chm ng
%e dng du chm ng trong k hiu khoa hc
%g dng gn nht ca %f hoc %e
\n chn mt dng mi sau xu kt qu
\t chn mt tab sau xu kt qu
T.M. Ton (SAMI-HUST) Lp trnh Matlab 30/87H Ni, thng 1 nm 2012 30 / 87
-
Nhp, xut d liu
Nhp, xut d liuHm fprintf
Ta c th ch nh thm rng v chnh xc ca kt qu bng cc c php:
% wd
% w.pf
% w.pe
trong w l s k t trong rng ca kt qu cui cng v p l s ch s sau duphy s c hin th. Mt s v d
Gi tr %8.4f %12.3e %10g %8d
2 2.0000 2.000e+00 2 2sqrt(2) 1.4142 1.414e+00 1.41421 1.414214e+00sqrt(2e-11) 0.0000 4.472e-06 4.47214e-06 4.472136e-06sqrt(2e11) 447213.5955 4.472e+05 447214 4.472136e+05
T.M. Ton (SAMI-HUST) Lp trnh Matlab 31/87H Ni, thng 1 nm 2012 31 / 87
-
Nhp, xut d liu
Nhp, xut d liuHm fprintf
C th dng fprintf in vector hoc ma trn di dng ngn gn. iu ny c thdn ti cc kt qu khng nh mong mun. V d
>> x=1:4; y=sqrt(x);
>> fprintf(%9.4f\n,y)
1.0000
1.4142
1.7321
2.0000
y, nh dng %9.4f c s dng li cho mi thnh phn ca y. iu ny c th skhng cho kt qu nh mong mun:
>> fprintf(y=%9.4f\n,y)
y= 1.0000
y= 1.4142
y= 1.7321
y= 2.0000
T.M. Ton (SAMI-HUST) Lp trnh Matlab 32/87H Ni, thng 1 nm 2012 32 / 87
-
Nhp, xut d liu
Nhp, xut d liuHm fprintf
Hm fprintf duyt cc outVariables theo cc ct. iu ny cng c th dn n cckt qu khng nh mong mun
>> A=[1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> fprintf(%8.2f %8.2f % 8.2f \n, A )
1.00 4.00 7.00
2.00 5.00 8.00
3.00 6.00 9.00
T.M. Ton (SAMI-HUST) Lp trnh Matlab 33/87H Ni, thng 1 nm 2012 33 / 87
-
Nhp, xut d liu
Nhp, xut d liuHm fprintf
Xut d liu ra file
ghi d liu ra file cn phi to ra mt fileHandle vi lnh fopen. Tt c tc dngca cc nh dng cng nh vector ha u c th p dng.
V d 8
Lu cc thnh phn ca mt vector vo mt file
x=1:10;
fout=fopen(out.dat,wt);
fprintf(fout, k x(k)\n);
for k=1:length(x)
fprintf(fout,%4d % 5.2f\n,k,x(k));
end
fclose(fout)
T.M. Ton (SAMI-HUST) Lp trnh Matlab 34/87H Ni, thng 1 nm 2012 34 / 87
-
iu khin lung
Ni dung
1 M u
2 Cc th tc
3 Cc hm m-file
4 Nhp, xut d liu
5 iu khin lung
6 Vector ha (Vectorization)
7 Qun l cc bin Input, Output
8 Tnh gi tr hm mt cch gin tip
9 Ch thch
10 G li
11 Mt s kinh nghim trong lp trnh Matlab
T.M. Ton (SAMI-HUST) Lp trnh Matlab 35/87H Ni, thng 1 nm 2012 35 / 87
-
iu khin lung
iu khin lung
c th thc thi mt thut ton, mt ngn ng lp trnh cn c cc cu trc iukhin
Cc cu trc lp (Looping or Iteration)
Cc cu trc iu kin: r nhnh (Branching)
So snh (Comparison)
So snh
S so snh c th hin qua cc ton t quan h (Relational Operators). Cc ton tny c dng kim tra hai gi tr bng nhau, nh hn, ln hn.
Ton t ngha< < >>= == =~= 6=
T.M. Ton (SAMI-HUST) Lp trnh Matlab 36/87H Ni, thng 1 nm 2012 36 / 87
-
iu khin lung
iu khin lung
So snh (tip)
Khi p dng cc ton t quan h th kt qu s l mt gi tr logic, tc l Truehoc False.
Trong MatLab , cc gi tr khc 0, bao gm c mt xu khc rng l tngng vi True. Ch c gi tr 0 l tng ng vi False.
Ch 5.1
Trong cc ton t quan h = v ~= th k hiu "=" phi ng sau. iu ny cngha = v =~ l khng hp l.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 37/87H Ni, thng 1 nm 2012 37 / 87
-
iu khin lung
iu khin lungCc ton t quan h
V d 9
Kt qu ca mt php ton quan h l True (1) hoc False (0)
>> a=3; b=5;
>> aIsSmaller=a> bisSmaller=b> x=1:5; y=5:-1:1;
>> z=x>y
z =
0 0 0 1 1
T.M. Ton (SAMI-HUST) Lp trnh Matlab 38/87H Ni, thng 1 nm 2012 38 / 87
-
iu khin lung
iu khin lungCc ton t logic (Logical Operators)
Cc ton t logic c s dng kt hp cc biu thc logic (vi and v or) hocthay i gi tr logic vi not.
Ton t ngha&& and|| or~ not
T.M. Ton (SAMI-HUST) Lp trnh Matlab 39/87H Ni, thng 1 nm 2012 39 / 87
-
iu khin lung
iu khin lungCc ton t logic (Logical Operators)
V d 10
>> a=3; b=5;
>> aIsSmaller=a bothTrue=aIsSmaller && bIsSmaller
bothTrue =
0
>> eitherTrue=aIsSmaller || bIsSmaller
eitherTrue =
1
>> ~eitherTrue
ans =
0
T.M. Ton (SAMI-HUST) Lp trnh Matlab 40/87H Ni, thng 1 nm 2012 40 / 87
-
iu khin lung
iu khin lungCc ton t logic v quan h
Tm tt
Cc ton t quan h lin quan n cc php so snh ca hai gi tr.
Kt qu ca mt php ton quan h l mt gi tr logic (True (1)/ False (0)).
Cc ton t logic kt hp (hoc ph nh) cc gi tr logic to ra cc gi tr logicmi.
Lun c nhiu hn mt cch th hin cng mt php so snh.
Li khuyn
bt u, tp trung vo cc so snh n gin. ng s biu thc logic qu di (nhiuphp so snh).
T.M. Ton (SAMI-HUST) Lp trnh Matlab 41/87H Ni, thng 1 nm 2012 41 / 87
-
iu khin lung
iu khin lungCu trc iu kin hoc r nhnh
Da vo kt qu ca mt php so snh, hoc ca php kim tra logic, cc khi mchng trnh chn s c thc thi hoc b qua.
Cc cu trc iu kin bao gm: if, if...else v if...elseif, hoc cu trcswitch.
C 3 dng ca cu trc if
1 if
2 if...else
3 if...elseif
T.M. Ton (SAMI-HUST) Lp trnh Matlab 42/87H Ni, thng 1 nm 2012 42 / 87
-
iu khin lung
iu khin lungCu trc if
C php
if expression
block of statements
end
Khi block of statements ch c thc thi nu expression nhn gi tr True.
V d 11
if a
-
iu khin lung
iu khin lungCu trc if...else v if...elseif
if x0
disp(x is positive);
elseif x
-
iu khin lung
iu khin lungCu trc switch
Cu lnh switch rt hu dng khi tp gi tr ca cc bin kim tra l ri rc (c th ls nguyn hay xu k t)
C php
switch expression
case value1
block of statements
case value2
block of statements
...
otherwise
block of statements
end
T.M. Ton (SAMI-HUST) Lp trnh Matlab 45/87H Ni, thng 1 nm 2012 45 / 87
-
iu khin lung
iu khin lungCu trc switch
V d 12
color=input(Enter your favorite color: ,s); % color is a string
switch color
case red
disp(Your color is red);
case blue
disp(Your color is blue);
case green
disp(Your color is green);
otherwise
disp(Your color is not red, blue or green);
end
T.M. Ton (SAMI-HUST) Lp trnh Matlab 46/87H Ni, thng 1 nm 2012 46 / 87
-
iu khin lung
iu khin lungCu trc lp for
C php
for index=expression
block of statements
end
V d 13
Tnh tng cc thnh phn ca mt vector
x=1:5; % create a row vector
sumx=0; % initialize the sum
for k=1:length(x)
sumx=sumx+x(k);
end
T.M. Ton (SAMI-HUST) Lp trnh Matlab 47/87H Ni, thng 1 nm 2012 47 / 87
-
iu khin lung
iu khin lungCu trc lp for
V d 14
Vng lp for vi ch s tng theo mc 2 n v
for k=1:2:n
block of statements
end
V d 15
Vng lp for vi ch s gim dn
for k=n:-1:1
block of statements
end
T.M. Ton (SAMI-HUST) Lp trnh Matlab 48/87H Ni, thng 1 nm 2012 48 / 87
-
iu khin lung
iu khin lungCu trc lp for
V d 16
Vng lp for vi ch s khng phi l s nguyn
for x=0:pi/15:pi
fprintf(%8.2f %8.5f\n,x,sin(x));
end
Ch 5.2
Trong v d trn, x l mt i lng v hng trong vng lp. Mi ln lp, x c gnvi 1 trong cc ct ca 0:pi/15:pi.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 49/87H Ni, thng 1 nm 2012 49 / 87
-
iu khin lung
iu khin lungCu trc lp while
C php
while expression
block of statements
end
Khi lnh block of statements c thc thi nu iu kin expression vn l True.
trnh tnh trng lp v hn, nn t gii hn trn cho s ln lp.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 50/87H Ni, thng 1 nm 2012 50 / 87
-
iu khin lung
iu khin lungCu trc lp while
V d 17
Gii phng trnh f(x) = 0 trn khong phn ly nghim [a, b] bng phng php chia i
n=0;
while abs(b-a)>=err && n
-
iu khin lung
iu khin lungCu trc lp while
Cc cu lnh break v return l cc cch khc nhau thot khi mt cu trclp. C hai lnh ny u c th dng cho cu trc for v while.
break c s dng thot khi phm vi ca vng lp hin thi for hocwhile, chng trnh s tip tc sau .
return c dng thot khi mt hm hin thi. iu ny s nh hng nvic thot khi mt vng lp. Bt k mt cu lnh no tip theo vng lp tronghm u b b qua.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 52/87H Ni, thng 1 nm 2012 52 / 87
-
Vector ha (Vectorization)
Ni dung
1 M u
2 Cc th tc
3 Cc hm m-file
4 Nhp, xut d liu
5 iu khin lung
6 Vector ha (Vectorization)
7 Qun l cc bin Input, Output
8 Tnh gi tr hm mt cch gin tip
9 Ch thch
10 G li
11 Mt s kinh nghim trong lp trnh Matlab
T.M. Ton (SAMI-HUST) Lp trnh Matlab 53/87H Ni, thng 1 nm 2012 53 / 87
-
Vector ha (Vectorization)
Vector ha
Vector ha l vic s dng cc php ton vector x l ton b cc phn t ca mtvector hay ma trn. Tht ra cc biu thc vector ha l tng ng vi php lp trncc phn t ca ma trn hay vector. Biu thc vector ha s ngn gn v thc thinhanh hn cc biu thc lp thng thng.
S dng cc php ton vector thay cho vng lp khi c th
Tin cp pht b nh cho cc vector hay ma trn
S dng vic nh ch mc vector ha v cc hm logic
M khng s dng vector ha gi l m v hng (scalar code) bi v cc phpton c thc hin trn cc phn t v hng ca vector hay ma trn thay vton b.
Li khuyn
Chng trnh tuy chm m chnh xc cn hn chng trnh nhanh m khng chnh xc.= Bt u vi cc m v hng, sau vector ha nu cn
T.M. Ton (SAMI-HUST) Lp trnh Matlab 54/87H Ni, thng 1 nm 2012 54 / 87
-
Vector ha (Vectorization)
Vector ha
Vector ha l vic s dng cc php ton vector x l ton b cc phn t ca mtvector hay ma trn. Tht ra cc biu thc vector ha l tng ng vi php lp trncc phn t ca ma trn hay vector. Biu thc vector ha s ngn gn v thc thinhanh hn cc biu thc lp thng thng.
S dng cc php ton vector thay cho vng lp khi c th
Tin cp pht b nh cho cc vector hay ma trn
S dng vic nh ch mc vector ha v cc hm logic
M khng s dng vector ha gi l m v hng (scalar code) bi v cc phpton c thc hin trn cc phn t v hng ca vector hay ma trn thay vton b.
Li khuyn
Chng trnh tuy chm m chnh xc cn hn chng trnh nhanh m khng chnh xc.= Bt u vi cc m v hng, sau vector ha nu cn
T.M. Ton (SAMI-HUST) Lp trnh Matlab 54/87H Ni, thng 1 nm 2012 54 / 87
-
Vector ha (Vectorization)
Vector ha
Vector ha l vic s dng cc php ton vector x l ton b cc phn t ca mtvector hay ma trn. Tht ra cc biu thc vector ha l tng ng vi php lp trncc phn t ca ma trn hay vector. Biu thc vector ha s ngn gn v thc thinhanh hn cc biu thc lp thng thng.
S dng cc php ton vector thay cho vng lp khi c th
Tin cp pht b nh cho cc vector hay ma trn
S dng vic nh ch mc vector ha v cc hm logic
M khng s dng vector ha gi l m v hng (scalar code) bi v cc phpton c thc hin trn cc phn t v hng ca vector hay ma trn thay vton b.
Li khuyn
Chng trnh tuy chm m chnh xc cn hn chng trnh nhanh m khng chnh xc.= Bt u vi cc m v hng, sau vector ha nu cn
T.M. Ton (SAMI-HUST) Lp trnh Matlab 54/87H Ni, thng 1 nm 2012 54 / 87
-
Vector ha (Vectorization)
Vector ha
Vector ha l vic s dng cc php ton vector x l ton b cc phn t ca mtvector hay ma trn. Tht ra cc biu thc vector ha l tng ng vi php lp trncc phn t ca ma trn hay vector. Biu thc vector ha s ngn gn v thc thinhanh hn cc biu thc lp thng thng.
S dng cc php ton vector thay cho vng lp khi c th
Tin cp pht b nh cho cc vector hay ma trn
S dng vic nh ch mc vector ha v cc hm logic
M khng s dng vector ha gi l m v hng (scalar code) bi v cc phpton c thc hin trn cc phn t v hng ca vector hay ma trn thay vton b.
Li khuyn
Chng trnh tuy chm m chnh xc cn hn chng trnh nhanh m khng chnh xc.= Bt u vi cc m v hng, sau vector ha nu cn
T.M. Ton (SAMI-HUST) Lp trnh Matlab 54/87H Ni, thng 1 nm 2012 54 / 87
-
Vector ha (Vectorization)
Vector ha
Vector ha l vic s dng cc php ton vector x l ton b cc phn t ca mtvector hay ma trn. Tht ra cc biu thc vector ha l tng ng vi php lp trncc phn t ca ma trn hay vector. Biu thc vector ha s ngn gn v thc thinhanh hn cc biu thc lp thng thng.
S dng cc php ton vector thay cho vng lp khi c th
Tin cp pht b nh cho cc vector hay ma trn
S dng vic nh ch mc vector ha v cc hm logic
M khng s dng vector ha gi l m v hng (scalar code) bi v cc phpton c thc hin trn cc phn t v hng ca vector hay ma trn thay vton b.
Li khuyn
Chng trnh tuy chm m chnh xc cn hn chng trnh nhanh m khng chnh xc.= Bt u vi cc m v hng, sau vector ha nu cn
T.M. Ton (SAMI-HUST) Lp trnh Matlab 54/87H Ni, thng 1 nm 2012 54 / 87
-
Vector ha (Vectorization)
Vector ha
Vector ha l vic s dng cc php ton vector x l ton b cc phn t ca mtvector hay ma trn. Tht ra cc biu thc vector ha l tng ng vi php lp trncc phn t ca ma trn hay vector. Biu thc vector ha s ngn gn v thc thinhanh hn cc biu thc lp thng thng.
S dng cc php ton vector thay cho vng lp khi c th
Tin cp pht b nh cho cc vector hay ma trn
S dng vic nh ch mc vector ha v cc hm logic
M khng s dng vector ha gi l m v hng (scalar code) bi v cc phpton c thc hin trn cc phn t v hng ca vector hay ma trn thay vton b.
Li khuyn
Chng trnh tuy chm m chnh xc cn hn chng trnh nhanh m khng chnh xc.= Bt u vi cc m v hng, sau vector ha nu cn
T.M. Ton (SAMI-HUST) Lp trnh Matlab 54/87H Ni, thng 1 nm 2012 54 / 87
-
Vector ha (Vectorization)
Vector ha
Vector ha l vic s dng cc php ton vector x l ton b cc phn t ca mtvector hay ma trn. Tht ra cc biu thc vector ha l tng ng vi php lp trncc phn t ca ma trn hay vector. Biu thc vector ha s ngn gn v thc thinhanh hn cc biu thc lp thng thng.
S dng cc php ton vector thay cho vng lp khi c th
Tin cp pht b nh cho cc vector hay ma trn
S dng vic nh ch mc vector ha v cc hm logic
M khng s dng vector ha gi l m v hng (scalar code) bi v cc phpton c thc hin trn cc phn t v hng ca vector hay ma trn thay vton b.
Li khuyn
Chng trnh tuy chm m chnh xc cn hn chng trnh nhanh m khng chnh xc.= Bt u vi cc m v hng, sau vector ha nu cn
T.M. Ton (SAMI-HUST) Lp trnh Matlab 54/87H Ni, thng 1 nm 2012 54 / 87
-
Vector ha (Vectorization)
Vector haThay th vng lp bi cc php ton vector
M v hng
x=...
for k=1:length(x)
y(k)=sin(x(k));
end
M vector ha tng ng
x=...
y=sin(x);
T.M. Ton (SAMI-HUST) Lp trnh Matlab 55/87H Ni, thng 1 nm 2012 55 / 87
-
Vector ha (Vectorization)
Vector haTin cp pht b nh
Vng lp sau s tng chiu ca s sau miln lp
y=[4 -1 9 0];
for j=1:length(y)
if y(j)>0
s(j)=sqrt(y(j));
else
s(j)=0;
end
end
Tin cp pht cho s trc khi gn ccgi tr cho cc thnh phn
y=[4 -1 9 0];
s=zeros(size(y));
for j=1:length(y)
if y(j)>0
s(j)=sqrt(y(j));
end
end
T.M. Ton (SAMI-HUST) Lp trnh Matlab 56/87H Ni, thng 1 nm 2012 56 / 87
-
Vector ha (Vectorization)
Vector hanh ch mc vector ha v cc hm logic
Vic vector ha m hon ton i hi vic s dng vic nh ch s mng (arrayindexing) v nh ch s logic (logical indexing).
nh ch s mng
>> x=sqrt(0:4:20)
x =
0 2.0000 2.8284 3.4641 4.0000 4.4721
>> i=[1 2 5];
>> y=x(i)
y =
0 2 4
Biu thc y=x(i) tng ng vi on m
k=0;
for i=[1 2 5], k=k+1; y(k)=x(i); end
T.M. Ton (SAMI-HUST) Lp trnh Matlab 57/87H Ni, thng 1 nm 2012 57 / 87
-
Vector ha (Vectorization)
Vector hanh ch mc vector ha v cc hm logic
nh ch s logic
>> x=sqrt(0:4:20)
x =
0 2.0000 2.8284 3.4641 4.0000 4.4721
>> j=find(rem(x,2)==0)
j =
1 2 5
>> z=x(j)
z =
0 2 4
T.M. Ton (SAMI-HUST) Lp trnh Matlab 58/87H Ni, thng 1 nm 2012 58 / 87
-
Vector ha (Vectorization)
Vector hanh ch mc vector ha v cc hm logic
V d 18
Vector ha m v hngXt on m
y=. . .
s=zeros(size(y));
for j=1:length(y)
if y(j)>0
s(j)=sqrt(y(j));
end
end
Thc ra, c th thay th ton b vng lp bng cch s dng nh ch s logic hocnh ch s mng.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 59/87H Ni, thng 1 nm 2012 59 / 87
-
Vector ha (Vectorization)
Vector hanh ch mc vector ha v cc hm logic
V d (tip)
y=. . .
s=zeros(size(y));
i=find(y>0);
s(y>0)=sqrt(y(y>0));
hoc gn hn
y=. . .
s=zeros(size(y));
s(y>0)=sqrt(y(y>0));
T.M. Ton (SAMI-HUST) Lp trnh Matlab 60/87H Ni, thng 1 nm 2012 60 / 87
-
Vector ha (Vectorization)
Vector haVector ha cc php sao chp
Sao chp ton b cc ct (hng)
M v hng
[m,n]=size(A); % Gi s rng A v B c cng s hng (ct)
for i=1:m
B(i,1)=A(i,1);
end
M vector ha
B(:,1)=A(:,1);
T.M. Ton (SAMI-HUST) Lp trnh Matlab 61/87H Ni, thng 1 nm 2012 61 / 87
-
Vector ha (Vectorization)
Vector haVector ha cc php sao chp
Sao chp v chuyn v cc ma trn con
M v hng
for j=2:3
B(1,j)=A(j,3);
end
M vector ha
B(1,2:3)=A(2:3,3);
T.M. Ton (SAMI-HUST) Lp trnh Matlab 62/87H Ni, thng 1 nm 2012 62 / 87
-
Vector ha (Vectorization)
Vector haMt s v d khc
Xa cc thnh phn ca mt mng
xa cc thnh phn khng phi l s (NaN) hoc gi tr v cng (inf) ca mt mngx ta c th dng on m s dng nh ch s mng
i=find(isnan(x) | isinf(x)); % Find bad elements
x(i)=[]; % and delete them
hay mt cch khc
i=find(~isnan(x) & ~isinf(x)); % Find elements that are are not NaN and not infinite
x=x(i); % Keep those elements
Ta c th thay i cc on m trn bng cch s dng ch s logic
x(isnan(x) | isinf(x))=[]; % Delete bad elements
hoc
x=x(~isnan(x) & ~isinf(x)); % Keep good elements
T.M. Ton (SAMI-HUST) Lp trnh Matlab 63/87H Ni, thng 1 nm 2012 63 / 87
-
Vector ha (Vectorization)
Vector haMt s v d khc
Hm tng khc (Piecewise functions)
Hm sinc c nh ngha bi sinc(x) =
{sin(x)/x, x 6= 01, x = 0.
So snh on m s dng lnh find
function y=sinc(x)
y=ones(size(x)); % Set y to all ones, sinc(0)=1;
i=find(x~=0); % Find nonzero x values
y(i)=sin(x(i))./x(i); % Compute sinc when x ~=0
end
v mt cch vit th v khc:
y=(sin(x)+(x==0))./(x+(x==0));
T.M. Ton (SAMI-HUST) Lp trnh Matlab 64/87H Ni, thng 1 nm 2012 64 / 87
-
Vector ha (Vectorization)
Vector haMt s v d khc
Ni suy a thc
Cho n mc ni suy x1, x2, . . . , xn v cc gi tr hm tng ng y1, y2, . . . , yn. Khi ,cc h s c0, c1, . . . , cn1 ca a thc ni suy bc n 1 c th c tnh bng cch giih
xn11 xn21 x21 x1 1
xn12 xn22 x22 x2 1
......
xn1n xn2n x2n xn 1
cn1cn2...c0
=y1y2...yn
hay Ac = y.
H trn c nh thc Vandermond |A| =n
1i
-
Vector ha (Vectorization)
Vector haMt s v d khc
Ni suy a thc
function c=polyinterp(x,y)
x = x(:); y=y(:); % Make sure that x and y are both column vectors
n = length(x); % n= Number of points
%%% Compute the left-hand side matrix %%%
xMatrix = repmat(x,1,n); % Make an nxn matrix with x on every column
powMatrix = repmat(n-1:-1:0,n,1); % Make another nxn matrix of exponents
A = xMatrix .^ powMatrix; % Compute the powers
c=A\y; % Solve the matrix equation for coefficients
end
T.M. Ton (SAMI-HUST) Lp trnh Matlab 66/87H Ni, thng 1 nm 2012 66 / 87
-
Vector ha (Vectorization)
Vector haMt s v d khc
Ni suy a thc
Trong chng trnh trn, xy dng ma trn v tri A, trc ht to ra 2 ma trnn n ca c s v ly tha, sau s dng ton t ly tha tng t .^. Hm repmat("replicate matrix") c s dng to ma trn c s xMatrix v ma trn ly thapowMatrix:
xMatrix =
x(1) x(1) x(1)x(2) x(2) x(2)...
...x(n) x(n) x(n)
; powMatrix =n 1 n 2 0n 1 n 2 0
......
n 1 n 2 0
Ma trn xMatrix c to bng cch lp li vector ct x n ln.
Ma trn powMatrix c to bi mt vector hng vi cc thnh phnn 1, n 2, . . . , 0 lp li n ln.y ch l mt v d, c th s dng hm chun ca MatLab polyfit cho mtlot cc a thc ni suy (c thm help tm hiu thm).
T.M. Ton (SAMI-HUST) Lp trnh Matlab 67/87H Ni, thng 1 nm 2012 67 / 87
-
Qun l cc bin Input, Output
Ni dung
1 M u
2 Cc th tc
3 Cc hm m-file
4 Nhp, xut d liu
5 iu khin lung
6 Vector ha (Vectorization)
7 Qun l cc bin Input, Output
8 Tnh gi tr hm mt cch gin tip
9 Ch thch
10 G li
11 Mt s kinh nghim trong lp trnh Matlab
T.M. Ton (SAMI-HUST) Lp trnh Matlab 68/87H Ni, thng 1 nm 2012 68 / 87
-
Qun l cc bin Input, Output
Qun l cc bin Input, Output
Mi hm c cc bin ni ti bao gm nargin (number of input arguments) vnargout (number of output arguments).
S dng gi tr nargin trong phn u ca hm xc nh c bao nhiu binu vo s c s dng.
S dng gi tr nargout trong phn cui ca hm xc nh s bin u ramong mun.
Li ch
Cho php mt chng trnh n c th thc hin nhiu cng vic lin quan.
Cho php cc hm gi thit cc gi tr mc nh ca mt s bin u vo, do lm n gin vic s dng hm trong mt s trng hp.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 69/87H Ni, thng 1 nm 2012 69 / 87
-
Qun l cc bin Input, Output
Qun l cc bin Input, Output
V d 19
Xt hm plot
nargin nargout
plot(x,y) 2 0plot(x,y,s) 3 0plot(x,y,s--) 3 0plot(x1,y1,s,x2,y2,o) 6 0h=plot(x,y) 2 1
Cc gi tr ca nargin v nargout c xc nh khi hm plot c gi ra.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 70/87H Ni, thng 1 nm 2012 70 / 87
-
Tnh gi tr hm mt cch gin tip
Ni dung
1 M u
2 Cc th tc
3 Cc hm m-file
4 Nhp, xut d liu
5 iu khin lung
6 Vector ha (Vectorization)
7 Qun l cc bin Input, Output
8 Tnh gi tr hm mt cch gin tip
9 Ch thch
10 G li
11 Mt s kinh nghim trong lp trnh Matlab
T.M. Ton (SAMI-HUST) Lp trnh Matlab 71/87H Ni, thng 1 nm 2012 71 / 87
-
Tnh gi tr hm mt cch gin tip
Tnh gi tr hm mt cch gin tipS dng hm feval
Li ch
Cho php cc th tc c vit x l mt hm f(x) bt k.
Chia nh mt thut ton phc tp bng cch s dng cc on m ring.
V d 20
function s=fsum(fun,a,b,n)
x=linspace(a,b,n);
y=feval(fun,x);
s=sum(y);
end
>> fsum(sin,0,pi,5)
ans =
2.4142
>> fsum(cos,0,pi,5)
ans =
0T.M. Ton (SAMI-HUST) Lp trnh Matlab 72/87H Ni, thng 1 nm 2012 72 / 87
-
Tnh gi tr hm mt cch gin tip
Cc hm inline
MatLab gii thiu cc m rng ca lp trnh hng i tng (object-orientedprogramming - OOP). Hm inline rt n gin v gip chng trnh linh hot hn. Cth, ta khng cn vit cc hm m-files tnh gi tr mt s hm c cng thc n ginv vn dng c hm feval.Thay v
function y=myFun(x)
y=x.^2-log(x);
ta dng
myFun=inline(x.^2-log(x));
C hai dng khai bo trn ca myFun cho php cc biu thc dng
z=myFun(3);
s=linspace(1,5);
t=myFun(s);
T.M. Ton (SAMI-HUST) Lp trnh Matlab 73/87H Ni, thng 1 nm 2012 73 / 87
-
Ch thch
Ni dung
1 M u
2 Cc th tc
3 Cc hm m-file
4 Nhp, xut d liu
5 iu khin lung
6 Vector ha (Vectorization)
7 Qun l cc bin Input, Output
8 Tnh gi tr hm mt cch gin tip
9 Ch thch
10 G li
11 Mt s kinh nghim trong lp trnh Matlab
T.M. Ton (SAMI-HUST) Lp trnh Matlab 74/87H Ni, thng 1 nm 2012 74 / 87
-
Ch thch
Ch thch
C php : % Matlab comment line
Cc ch thch c bit
Cc khi comment lin nhau trong m-file chnh l phn help cam-file :
>> help filename
= Khi vit mt hm m-file, c gng thm cc ch thch: m tmc ch ca hm, yu cu v cc bin input v nh dng ca ccbin output.
M "cells" c phn nh bi %% Cell title
Trnh son tho Matlab Editor c nhng kh nng c bit lm
vic vi cc "cells"S dng publish(file.m) thc thi file.m v to ra cc ouput dnhn.
% publish all m-files in current directory
files=dir(*.m);
cellfun(@(x) publish(x,struct(evalCode,false)),...
{files.name},UniformOutput,false);
T.M. Ton (SAMI-HUST) Lp trnh Matlab 75/87H Ni, thng 1 nm 2012 75 / 87
-
G li
Ni dung
1 M u
2 Cc th tc
3 Cc hm m-file
4 Nhp, xut d liu
5 iu khin lung
6 Vector ha (Vectorization)
7 Qun l cc bin Input, Output
8 Tnh gi tr hm mt cch gin tip
9 Ch thch
10 G li
11 Mt s kinh nghim trong lp trnh Matlab
T.M. Ton (SAMI-HUST) Lp trnh Matlab 76/87H Ni, thng 1 nm 2012 76 / 87
-
G li
G li
MatLab h tr mt trnh g li tng tc
Cc lnh type v dbtype hin th ton b ni dung ca mt m-file
Lnh error hin th mt li nhn trn mn hnh v dng hn chng trnh.
Hm warning hin th mt li nhn ln mn hnh tuy nhin khng dng chngtrnh
Cc lnh pause hoc keyboard c th dng tm dng chng trnh. thotkhi ch g li (debug-mode) v tip tc chng trnh dng mt trong cc lnhreturn, dbcont, dbquit.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 77/87H Ni, thng 1 nm 2012 77 / 87
-
G li
G liS dng lnh keyboard
function r = quadroot(a,b,c)
% quadroot Roots of quadratic equation and demo of keyboard command
%
% Synopsis: r = quadroot(a,b,c)
%
% Input: a,b,c = coefficients of a*x^2 + b*x + c = 0
%
% Output: r = column vector containing the real or complex roots
d = b^2 - 4*a*c;
if d
-
Mt s kinh nghim trong lp trnh Matlab
Ni dung
1 M u
2 Cc th tc
3 Cc hm m-file
4 Nhp, xut d liu
5 iu khin lung
6 Vector ha (Vectorization)
7 Qun l cc bin Input, Output
8 Tnh gi tr hm mt cch gin tip
9 Ch thch
10 G li
11 Mt s kinh nghim trong lp trnh Matlab
T.M. Ton (SAMI-HUST) Lp trnh Matlab 79/87H Ni, thng 1 nm 2012 79 / 87
-
Mt s kinh nghim trong lp trnh Matlab
(The Profiler)
MatLab phin bn 5.0 hoc mi hn cung cp mt cng c gi l "profiler" h tr vicxc nh cc on tc nghn (bottlenecks) trong chng trnh. Xt chng trnh
function result=example1(Count)
for k=1:Count
result(k)=sin(k/50);
if result(k) < -0.9
result(k)=gammaln(k);
end
end
end
phn tch chng trnh, trc ht dng cc lnh sau khi ng "profiler" v xatt c cc d liu c
>> profile on
>> profile clear
T.M. Ton (SAMI-HUST) Lp trnh Matlab 80/87H Ni, thng 1 nm 2012 80 / 87
-
Mt s kinh nghim trong lp trnh Matlab
(The Profiler)
By gi, chy th chng trnh
>> example1(50000);
Sau , nhp vo lnh
>> profile report
Profiler to mt thng bo dng HTML v chng trnh v khi to mt ca s trnhduyt. Ty theo tng h thng my tnh m cc kt qu c th hin th cc dng khcnhau.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 81/87H Ni, thng 1 nm 2012 81 / 87
-
Mt s kinh nghim trong lp trnh Matlab
Tin cp pht b nh cho mng
Cc bin ma trn trong MatLab c kh nng iu chnh s hng v s ct mt cchlinh ng. V d
>> a=2
a =
2
>> a(4,4)=1
a =
2 0 0 0
0 0 0 0
0 0 0 0
0 0 0 1
MatLab t ng iu chnh kch c ca ma trn. Do , b nh dnh cho d liu matrn cn phi c tin cp pht vi c ln.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 82/87H Ni, thng 1 nm 2012 82 / 87
-
Mt s kinh nghim trong lp trnh Matlab
Tin cp pht b nh cho mng
V d 21
Xt on m
a(1)=1;
b(1)=0;
for k=2:8000
a(k)=0.99803 * a(k-1) - 0.06279 * b(k-1);
b(k)=0.06729 * a(k-1) + 0.99803 * b(k-1);
end
Thi gian thc thi on m trn l 0.147 giy.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 83/87H Ni, thng 1 nm 2012 83 / 87
-
Mt s kinh nghim trong lp trnh Matlab
Tin cp pht b nh cho mng
Sau khi vng lp for kt thc kch thc ca hai mng a,b u l 10000. Do , tin cp pht b nh, to ra hai vector hng a,b vi 10000 phn t 0:
a = zeros(1,10000);
b = zeros(1,10000);
a(1) = 1;
b(1) = 0;
for k = 2:10000
a(k) = 0.99803 * a(k-1) - 0.06279 * b(k-1);
b(k) = 0.06729 * a(k-1) + 0.99803 * b(k-1);
end
Vi s thay i ny, thi gian thc thi ch cn l 0.005 giy (nhanh hn gn 3 ln).
T.M. Ton (SAMI-HUST) Lp trnh Matlab 84/87H Ni, thng 1 nm 2012 84 / 87
-
Mt s kinh nghim trong lp trnh Matlab
Gii hn mt gi tr m khng dng cu trc if
gii hn mt gi tr trong mt khong cho trc, mt cch trc tip lp trnh l
if x < lowerBound
x = lowerBound;
elseif x > upperBound
x = upperBound;
end
Tuy nhin, cch ny thc thi rt chm. Mt phng php nhanh hn l dng cchm min v max
x = max(x,lowerBound); % Clip elements from below, x >= lowerBound
x = min(x,upperBound); % Clip elements from above, x
-
Mt s kinh nghim trong lp trnh Matlab
Chuyn mt mng bt k thnh vector ct
Trong nhiu trng hp ta s phi chuyn mt mng bt k thnh mt ma trn ct, vd khi yu cu i vi d liu u vo ca mt hm phi l mt vector ct. Cu lnhsau s chuyn mt mng bt k bao gm mt vector hng, mt ma trn hay mt vectorct thnh mt vector ct
x = x(:); % convert x to a column vector
Bng cch dng lnh trn cng vi php chuyn v ., ta c th chuyn mt mng btk v mt vector hng.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 86/87H Ni, thng 1 nm 2012 86 / 87
-
Mt s kinh nghim trong lp trnh Matlab
Chun ha vector
chun ha mt vector v, ta c th s dng lnh
v = v/norm(v)
Tuy nhin, chun ha mt tp cc vector v(:,1), v(:,2),... i hi phi tnhv(:,k)/norm(v(:,k)) trong mt vng lp for hoc on m vector ha
vMag = sqrt(sum(v.^2));
v = v./vMag(ones(1,size(v,1)),:);
Tc thc hin ca on m vector ha nhanh hn ng k so vi vic dng vng lpfor. V d, vi vi ngn vector c di 3, cch tip cn vector ha nhanh hn khong10 ln.
T.M. Ton (SAMI-HUST) Lp trnh Matlab 87/87H Ni, thng 1 nm 2012 87 / 87
M uCc thu tucCc hm m-fileNhp, xut d liuiu khin lungVector ha (Vectorization)Quan l cc bin Input, OutputTnh gi tri hm mt cch gin tipCh thchG liMt s kinh nghim trong lp trnh Matlab