112
Chương 3: L“p trình Matlab Trƒn Minh Toàn (1) Vi»n Toán øng dng và Tin hc, ĐHBK Hà Nºi Hà Nºi, tháng 1 năm 2012 (1) Email: [email protected] T.M. Toàn (SAMI-HUST) L“p trình Matlab Hà Nºi, tháng 1 năm 2012 1 / 87

Programming Matlab

Embed Size (px)

Citation preview

  • 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