THÔNG TIN TÀI LIỆU
Chơng - Lập trình Matlab Chơng Lp trệnh matlab 3.1 Cc phn tứ cỗ băn cho chừỗng trệnh 3.1.1 Giối hưn ca cc gi tr tẽnh ton MATLAB õi vối phn lốn cc my tẽnh, khoăng gi tr cho phẫp tữ 10-308 ặn 10308 Giă sứ cĩ nhựng lẻnh sau: >> x = 2.5e200; >> y = 1.0e200 >> z = x*y; Tuy gi tr ca x vĂ y nm khoăng cho phẫp Nhừng gi tr ca z lĂ 2.5e400 lưi nm ngoĂi khoăng gi tr cho phẫp Lồi nĂy ừỡc gi lĂ trĂn sõ mủ trn (exponent overflow) Gi tr ca kặt quă qu lốn õi vối vùng nhố ca my tẽnh Trong Matlab, kặt quă nĂy ừỡc bièu din lĂ TrĂn sõ mủ dừối (exponent underflow) Giă sứ cĩ nhựng lẻnh sau: >> x = 2.5e-200; >> y = 1.0e200 >> z = x/y; Gi tr ca z s lĂ 2.5e-400 Trong Matlab, kặt quă nĂy ừỡc bièu din lĂ Chia cho lĂ mổt ton tứ khỏng hỡp lẻ Nặu mổt gi tr cĩ hưn ừỡc chia cho 0, kặt quă nhn ừỡc s lĂ Phần I - Cơ sở 31 Chơng - Lập trình Matlab Matlab s in mổt lội cănh bo vĂ sứ dũng gi tr è tiặp tũc tẽnh ton cc phẫp tẽnh sau ĩ 3.1.2 Cc kỷ tỳ ằc biẻt [ ] Dưng ma trn Dùng è quy ừốc cho viẻc bièu din hay vĂo sõ liẻu cho cc biặn vector hay ma trn Cc phn tứ biặn ĩ ừỡc cch bời du space hay du , nặu trn hĂng hoằc cổt Cc cổt hay hĂng s phn cch bời du ; hay Enter vẽ dũ: >> a = [ ; ; ] ans = ( ) Dưng chì sõ DĂnh cho cc biặn ca hĂm hay cc chì sõ cc phn tứ ma trn cn ừỡc nhp hay bièu din Phn tch giựa cc chì sõ vĂ cc phn tứ ca ma trn ; Phn tch cc ma trn, cc lẻnh, cc hĂng ca ma trn >> Du nhc cho lẻnh sau Thè hiẻn sỳ tiặp tũc ca lẻnh díng sau % Phn chợ giăi díng lẻnh ừỡc ghi sau du nĂy dùng è hièu rò nghỉa díng lẻnh chử khỏng tham gia vĂo chừỗng trệnh : Cch ghi tọng qut ma trn \n Du hiẻu tưo díng mối 3.1.3 Cc gi tr ằc biẻt pi Gi tr ca tỳ ừỡc ừa vĂo biặn nĂy ( 3.14156 ) i, j Cc biặn nĂy cĩ gi tr ăo -1 Inf Biặn nĂy ưi diẻn cho gi tr ca MATLAB, thè hiẻn kặt quă chia cho Mổt lội cănh bo s hiẻn ra, nặu bưn muõn hièn th kặt quă Phần I - Cơ sở 32 Chơng - Lập trình Matlab chia cho 0, gi tr hièn th lĂ NaN Gi tr vỏ nh, bièu thửc khỏng xc nh: chia HĂm cho biặt gi tr ca thội gian hiẻn tưi bao góm nâm, thng, ngĂy, giộ, phợt, giy clock date HĂm cho biặt gi tr hiẻn tưi ca ngĂy ừỡc cho bời xu kỷ tỳ Vẽ dũ: >> date ans = 10-Jun-97 eps HĂm xc nh ổ chẽnh xc ca sõ thỳc qu trệnh tẽnh ton ans Biặn nĂy ừỡc dùng è chửa gi tr tẽnh ton ca bièu thửc nhừng khỏng ghi vĂo tn biặn 3.1.4 Biặn string Biặn string Matlab ừỡc bièu din sứ dũng nhừ cc biặn sõ thỏng thừộng khc ca Matlab iậu ĩ cĩ nghỉa biặn ừỡc nhp, thao tc vĂ lừu trự cc vector vối mồi phn tứ ca vector lĂ kỷ tỳ Cc kỷ tỳ ừỡc lừu trự vector dừối dưng mơ ASCII ca chẽnh nĩ, nhin hièn th trn mĂn hệnh díng kỷ tỳ s ừỡc xut hiẻn chử khỏng phăi mơ ca chợng Viẻc xc nh v trẽ ca mồi phn tứ ca biặn string thỏng qua chì sõ ca nĩ vector Ma trn ca cc kỷ tỳ hay string củng cĩ thè ừỡc sứ dũng nhừng mồi phn tứ ĩ phăi bng Vẽ dũ: >> name = Trừộng ưi hc Bch khoa HĂ ans = Trừộng ưi hc bch khoa HĂ Matlab cho phẫp thao tc trn cc kỷ tỳ theo vẽ dũ dừối y a) ăo ngừỡc chuồi kỷ tỳ Function d = dao_tu ( name ) for i = length (name) :-1 : Phần I - Cơ sở 33 Chơng - Lập trình Matlab newname ( i ) = name( length(name) + - i ); end d = newname; end b) Dùng phn ca chuồi string >> disp ( Trừộng tỏi lĂ : , name ( 1:24 )); ans = Trừộng tỏi lĂ : Trừộng ưi hc bch khoa c) Kặt hỡp cc string khc tưo string mối >> text1 = Tỏi ; text2 = yu ; >> text = [ text1text2name ] >> text ans = Tỏi yu Trừộng ưi hc bch khoa Cc lẻnh vối biặn string abs (str ) Tră lưi gi tr lĂ vector vối cc phn tứ ca vector lĂ cc mơ ASCII ca cc kỷ tỳ chuồi str setstr ( x ) Chuyèn vector x vối cc phn tứ lĂ cc sõ nguyn khoăng -> 255 thĂnh chuồi str theo mơ ASCII num2str ( f ) Chuyèn ọi ưi lừỡng vỏ hừống f thĂnh chuồi string cho viẻc bièu din cc sõ cĩ du phy Lẻnh nĂy thừộng i vối disp, x label hay cc lẻnh truy xut u khc Gi tr mằc nh lĂ chự sõ num2str ( f,k ) Chuyèn ọi ưi lừỡng vỏ hừống f thĂnh chuồi string cho viẻc bièu din cc sõ cĩ du phy vối k chự sõ int2str ( n ) Chuyèn ọi sõ nguyn n thĂnh chuồi string cho viẻc bièu din sõ nguyn ĩ rats (x, strlen) Chuyèn ọi sõ cĩ du phy x thĂnh chuồi string phn thửc xp xì cho viẻc bièu din sỏ strlen lĂ biặn mỏ tă chiậu dĂi ca chuồi vối gi tr mằc nh lĂ 13 chự sõ Phần I - Cơ sở 34 Chơng - Lập trình Matlab hex2num (hstr ) Chuyèn ọi sõ theo hẻ hexa thĂnh chuồi string bièu din cc sõ theo hẻ dec bao góm că du phy hex2dec (hstr) Chuyèn ọi sõ theo hẻ hexa thĂnh chuồi string bièu din cc sõ nguyn theo hẻ dec dec2hex ( n ) Chuyèn ọi sõ theo hẻ dec thĂnh chuồi string bièu din cc sõ hẻ hexadecimal 3.2 Cc hĂm ton hc Matlab củng sứ dũng cc hĂm logarit, cc hĂm lừỡng gic, cc hĂm mủ, cc hĂm ưi sõ è tẽnh ton Cc hĂm nĂy ợng õi vối cc tham sõ lĂ cc ưi lừỡng vỏ hừống vĂ că ma trn Nặu hĂm ừỡc dùng õi vối cc tham sõ lĂ ma trn thệ hĂm s cho kặt quă lĂ mổt ma trn cĩ kẽch thừốc vĂ mồi phn tứ ca ma trn nĂy cĩ gi tr từỗng ửng vối cc phn tứ ca ma trn cho Tham biặn vĂ tham tr ca hĂm ừỡc ằt du ngoằc ỗn i vối tn hĂm HĂm cĩ thè khỏng cĩ hoằc cĩ nhiậu tham sõ phũ thuổc vĂo nh nghỉa ca nĩ Nặu hĂm cĩ nhiậu tham sõ thệ gi tr ca cc tham sõ s ừỡc truyận ặn theo ợng thử tỳ ca nĩ Mổt sõ hĂm íi hịi truyận tham sõ theo nhựng ỗn v quy nh Vẽ dũ nhừ cc hĂm lừỡng gic thệ ỗn v ca cc tham sõ phăi lĂ radian Trong Matlab, mổt sõ hĂm sứ dũng tham sõ è truyận gi tr u Vẽ dũ õi vối hĂm zeros cĩ thè sứ dũng mổt hoằc hai tham sõ, tham sõ thử hai è chửa gi tr u Cc hĂm nĂy khỏng ừỡc ằt bn phăi du bng vĂ bièu thửc vệ nĩ lĂ gi tr chử khỏng phăi lĂ biặn Mổt hĂm cĩ thè lĂ tham sõ ca mổt hĂm khc Khi mổt hĂm ừỡc sứ dũng lĂm tham sõ nĩ, phăi ừỡc ằt ợng v trẽ Theo mằc nh tn hĂm ừỡc viặt bng chự thừộng trữ bưn sứ dũng lẻnh case off 3.2.1 HĂm ton hc cỗ băn: abs(x) HĂm tẽnh gi tr tuyẻt õi ca x sqrt(x) HĂm tẽnh cân bc hai ca x round(x) LĂm trín x vậ sõ nguyn gn nht fix(x) LĂm trín sõ x vậ Phần I - Cơ sở 35 Chơng - Lập trình Matlab floor(x) LĂm trín vậ phẽa - ceil(x) LĂm trín vậ phẽa sign(x) HĂm cho gi tr lĂ -1 nặu x nhị hỗn 0, gi tr bng nặu x bng 0, cĩ gi tr lĂ nặu x lốn hỗn rem(x,y) HĂm tră lưi sõ dừ ca phẫp chia x cho y exp(x) HĂm tẽnh gi tr ca ex log(x) HĂm tẽnh gi tr ln(x) log10(x) HĂm tẽnh gi tr log10(x) 3.2.2 HĂm lừỡng gic cỗ băn: Quy ọi radian ổ vĂ ngừỡc lưi ừỡc tẽnh ton theo cc lẻnh sau: >> angle_degrees = angle_radians*(180/pi); >> angle_radians = angle_degrees*( pi/180); sin(x) Tẽnh sine ca gĩc x, x cĩ ỗn v o lĂ radian cos(x) Tẽnh cos ca gĩc x, x cĩ ỗn v o lĂ radian tan(x) Tẽnh cos ca gĩc x, x cĩ ỗn v o lĂ radian asin(x) Tẽnh arcsine ca x, x nm khoăng [-1,1], hĂm tră lưi gĩc cĩ gi tr radian khoăng -/2 ặn /2 acos(x) Tẽnh arccosine ca x, x nm khoăng [-1,1], hĂm tră lưi gĩc cĩ gi tr radian khoăng ặn atan(x) Tẽnh arctangent ca x khoăng -/2 ặn /2 atan2(x,y) Tẽnh arctangent ca y/x khoăng - ặn , tuỹ thuổc vĂo du ca x vĂ y Vẽ dũ: >> x = -2*pi: 2: 2*pi % Tưo lp vector x vối cc gi tr tữ -2pi - 2pi x= -6.2832 -4.2832 -2.2832 -0.2832 >> sin(x) Phần I - Cơ sở 36 1.7168 3.7168 5.7168 Chơng - Lập trình Matlab ans = 0.0000 0.9093 -0.7568 -0.2794 0.9894 -0.5440 -0.5366 >> atan(x) ans = -1.4130 -1.3414 -1.1580 -0.2760 1.0434 1.3080 1.3976 3.2.3 Cc hĂm hyperbolic: sinh(x) HĂm tẽnh hyperbolic sine ca x cosh(x) HĂm tẽnh hyperbolic cosine ca x asinh(x) HĂm tẽnh nghch ăo ca hyperbolic sine ca x acosh(x) HĂm tẽnh nghch ăo ca hyperbolic cosine ca x atanh(x) HĂm tẽnh nghch ăo ca hyperbolic tangent Vẽ dũ: >> sinh(x) ans = -267.7449 -36.2286 -4.8530 -0.2870 2.6936 20.5544 151.9660 >> atanh(x) ans = Columns through -0.1605 + 1.5708i -0.2379 + 1.5708i -0.4697 + 1.5708i -0.2911 Columns through 0.6662 + 1.5708i 0.2758 + 1.5708i 0.1767 + 1.5708i 3.3 Cc dưng file ừỡc sứ dũng MATLAB 3.3.1 Script file (M-files ) Cc chừỗng trệnh, th tũc bao góm cc díng lẻnh theo mổt thử tỳ nĂo ĩ ngừội sứ dũng viặt ừỡc lừu trự cc files cĩ phn mờ rổng lĂ *.m File dưng nĂy cín ừỡc gi lĂ script file File ừỡc lừu dừối dưng kỷ tỳ ASCII vĂ cĩ thè sứ dũng cc chừỗng trệnh soưn thăo nĩi chung è tưo nĩ Phần I - Cơ sở 37 Chơng - Lập trình Matlab Bưn cĩ thè chưy file nĂy giõng nhừ cc lẻnh, th tũc ca MATLAB Tửc lĂ cĩ thè gò tn file khỏng cn cĩ phn mờ rổng, sau ĩ enter Khi sứ dũng, dung ca Mfile khỏng ừỡc hièn th ln mĂn hệnh Vậ cu trợc ngỏn ngự, ton tứ hay cc bổ lẻnh ca *.m file, chợng tỏi xin giối thiẻu kỵ hỗn phn sau VĂ dừối y lĂ mổt sõ lẻnh hẻ thõng từỗng tc vối *.m files thừộng gằp Lẻnh cho phẫp xem cc lẻnh cĩ *.m files chợng ừỡc thỳc hiẻn echo type Lẻnh cho xem dung file, ngm nh file dưng M-file what Lẻnh nĂy cho biặt tt că cc files M-file vĂ MAT-file cĩ trongvùng lĂm viẻc hiẻn hĂnh hay khỏng Vẽ dũ sau y lĂ vẽ dũ ỗn giăn nht ừa díng lẻnh HELLO mĂn hệnh vối sõ yu cu File tưo thĂnh ừỡc lừu trự dừối tn HELLO.m % chừỗng trệnh hello.m , Vẽ dũ vậ phn lp trệnh Matlab % Xin chĂo bưn ! Hơy lĂm quen vối tỏi disp ( Xin chĂo ! Bưn lĂ ? ); name = input ( Tn bưn lĂ gệ ); d = date ; answer = [ Hello name ! Hỏm lĂ ngĂy d ] disp ( answer ); disp ( Chợc bưn ngĂy tõt lĂnh ) ; Sau cc kỷ tỳ % lĂ chì dạn cho hoưt ca file.m Nĩ khỏng tham gia vĂo hoưt ca chừỗng trệnh vĂ củng khỏng hièn th ln mĂn hệnh trữ ta dùng lẻnh help + tn file >> help hello Chừỗng trệnh hello.m , Vẽ dũ vậ phn lp trệnh Matlab Xin chĂo bưn ! Hơy lĂm quen vối tỏi 3.3.2 HĂm vĂ tưo hĂm Matlab Phần I - Cơ sở 38 Chơng - Lập trình Matlab Cc hĂm ngừội sứ dũng viặt củng ừỡc lừu M-file Chợng ừỡc sứ dũng giõng nhừ cc hĂm ca Matlab Cc file hĂm phăi ừỡc viặt theo mổt quy nh chằt ch * Cc quy tc viặt hĂm M-files Function: HĂm phăi ừỡc bt u bng tữ function, sau ĩ ln lừỡt lĂ tham sõ u ra, du bng, tn hĂm Tham sõ u vĂo ừỡc viặt theo tham sõ u vĂo vĂ ừỡc bao ngoằc ỗn Díng nĂy nh nghỉa tham sõ u vĂo vĂ tham sõ u ra; phn biẻt sỳ khc giựa file hĂm vĂ cc file script Mổt sõ díng u tin nn viặt chợ thẽch cho hĂm Khi sứ dũng lẻnh help vối tn hĂm, chợ thẽch ca hĂm s ừỡc hièn th Cc thỏng tin tră lưi ca hĂm ừỡc lừu vĂo tham sõ (ma trn) u Vệ vy luỏn kièm tra chc chn rng hĂm cĩ chửa cu lẻnh n nh gi tr ca tham sõ u Cc biặn (ma trn) tn cĩ thè ừỡc sứ dũng bời că hĂm vĂ chừỗng trệnh chì ặn nĩ Khỏng cĩ sỳ lổn xổn nĂo xăy vệ cc hĂm vĂ cc chừỗng trệnh ậu ừỡc thỳc hiẻn mổt cch tch biẻt Cc gi tr tẽnh ton hĂm, tham sõ u khỏng chu tc ca chừỗng trệnh Nặu mổt hĂm cho nhiậu hỗn mổt gi tr u phăi viặt tt că cc gi tr tră lưi ca hĂm thĂnh mổt vec tỗ díng khai bo hĂm Vẽ dũ: function [ dist, vel, accel ] = motion(x) % Că ba gi tr phăi ừỡc tẽnh ton hĂm Mổt hĂm cĩ nhiậu tham sõ u vĂo cn phăi liẻt k chợng khai bo hĂm Vẽ dũ: function error = mse(w, d) Cc biặn ằc biẻt nargin vĂ nargout xc nh sõ tham sõ u vĂo, sõ tham sõ u ừỡc sứ dũng hĂm Cc tham sõ nĂy chì lĂ biặn cũc bổ Vẽ dũ mổt hĂm M-file s ừỡc viặt nhừ sau: function c = chuvi(r) % Tẽnh chu vi ca ừộng trín cĩ bn kẽnh r % Nặu hĂm ừỡc p dũng cho ma trn thệ gi tr tră lưi s lĂ Phần I - Cơ sở 39 Chơng - Lập trình Matlab % mổt ma trn từỗng ửng vối mồi phn tứ cĩ gi tr lĂ % chu vi ca ừộng trín cĩ bn kẽnh từỗng ửng vối mồi % phn tứ ca vẫc tỗ nguón c = pi*2*r; 3.3.3 Files dự liẻu Cc ma trn bièu din thỏng tin ừỡc lừu trự cc files dự liẻu Matlab phn biẻt hai loưi file dự liẻu khc Mat-files vĂ ASCII files Mat-files lừu cc dự liẻu dưng sõ nh phn, cín cc ASCII file lừu cc dự liẻu dừối dưng cc kẽ tỳ ASCII Mat-file thẽch hỡp cho dự liẻu ừỡc tưo hoằc ừỡc sứ dũng bời chừỗng trệnh Matlab ASCII file ừỡc sứ dũng cc dự liẻu ừỡc chia s (export - import) vối cc chừỗng trệnh khc cc chừỗng trệnh ca Matlab Khi muõn lừu cc dự liẻu ta dùng lẻnh save nhừ sau: >> save x,y; Lẻnh nĂy s lừu cc ma trn x,y vĂo file cĩ tn lĂ , ngm nh cc files nĂy cĩ phn mờ rổng lĂ *.mat è gi cc ma trn nĂy, ta dùng lẻnh: >> load ; ASCII files cĩ thè ừỡc tưo bời cc chừỗng trệnh soưn thăo nĩi chung hay cc chừỗng trệnh soưn thăo bng ngỏn ngự my Nĩ củng cĩ thè ừỡc tưo bời chừỗng trệnh Matlab bng cch sứ dũng cu lẻnh sau y: >> save .dat /ascii; Lợc nĂy mồi mổt hĂng ca ma trn ừỡc lừu mổt díng ca file dự liẻu Phn mờ rổng *.mat khỏng ừỡc tỳ thm vĂo file ASCII Tuy nhin, phn mờ rổng *.dat mĂ ta thm vĂo s d dĂng phn biẻt loưi Mat-files vĂ ASCII files è gi ma trn loưi nĂy ta dùng lẻnh sau: >> load .dat; Lẻnh nĂy s tỳ ằt tn cho ma trn trùng vối tn file Vẽ dũ: >> x = 0; pi /60 ; 2*pi; >> y = sin ( x ); >> t = [ x y ] Ghi dự liẻu ca t vĂo file cĩ tn nhừ sau : dl1.mat >> save dl1.mat Phần I - Cơ sở t 40 Chơng - Lập trình Matlab Viẻc ly dự liẻu ưt ừỡc qua biặn t thỏng qua lẻnh load Cc tham sõ cn ặn dự liẻu s ly qua biến t >> load dl1 >> x = t ( : , ); >> y = t ( : , ); >> plot ( x, y ); grid on; 3.4 Cc bièu thửc quan hẻ vĂ logic 3.4.1 Cc phẫp ton quan hẻ Ton tứ quan hẻ ỷ nghỉa < Nhị hỗn Lốn hỗn >= Lốn hỗn hoằc bng == Bng ~= Khỏng bng Phẫp so snh hai ma trn lĂ phẫp so snh tững phn tứ ca hai ma trn cĩ kẽch thừốc, kặt quă sinh mổt ma trn cở cĩ cc phn tứ nhn gi tr nặu phẫp so snh lĂ ợng, ngừỡc lưi phn tứ nhn gi tr Kặt quă ca phẫp ton quan hẻ ừỡc gi lĂ băng sỳ tht (ma trn 0-1) 3.4.2 Cc phẫp ton logic: Ton tứ Kỷ hiẻu logic and & or | not ~ Bièu thửc logic cho phẫp so snh cc băng sỳ tht giõng nhừ cc ton tứ quan hẻ Bièu thửc logic luỏn lĂ hỡp lẻ nặu băng sỳ tht cĩ kẽch thừốc bng Trong Phần I - Cơ sở 41 Chơng - Lập trình Matlab bièu thửc logic ton tứ not cĩ thè ừỡc ằt phẽa trừốc Mổt bièu thửc logic cĩ thè chửa nhiậu ton tứ Vẽ dũ: ~ ( b == c | b == 5.5 ); Thử tỳ cc ton tứ bièu thửc logic tữ cao ặn thp lĂ not, and, or Tuy nhin, củng cĩ thè dùng ngoằc ỗn è thay ọi thử tỳ nĂy Băng cc phẫp logic A B ~A A|B A&B false false true false false false true true true false true false false true false true true false true true Trong Matlab tt că cc gi tr khc ậu ừỡc coi lĂ ợng (true), cín gi tr bng ừỡc coi lĂ sai (false) Chẽnh vệ vy, phăi hặt sửc thn trng iậu khièn chừỗng trệnh bng cc bièu thửc quan hẻ vĂ logic 3.4.3 Cc hĂm quan hẻ vĂ logic any(x) all(x) find(x) exist('A') isnan(x) finite(x) isempty(x) Phần I - Cơ sở HĂm cho gi tr lĂ nặu mổt phn tứ ca x khc 0, ngừỡc lưi cho gi tr HĂm cho gi tr lĂ nặu tt că cc phn tứ ca ma trn x khc 0, ngừỡc lưi cho gi tr lĂ HĂm tră lưi vector chửa chì sõ ca cc phn tứ khc ca x Nặu x lĂ mổt ma trn thệ chì sõ ừỡc chn tữ x(:) vĂ lĂ mổt vertor cổt tưo nn bời cc cổt ca x HĂm tră lưi gi tr nặu A lĂ biặn, lĂ nặu A hoằc A.m lĂ file, lĂ nặu A khỏng tón tưi vùng lĂm viẻc Tn biặn phăi ừỡc ằt du nhy ỗn Gi tr tră vậ lĂ ma trn ones nặu cc phn tứ ca ma trn x lĂ NaN, ngừỡc lưi tră vậ ma trn zeros Gi tr tră vậ lĂ ma trn ones nặu cc phn tứ ca ma trn x lĂ gi tr hựu hưn, tră vậ ma trn zeros chợng lĂ vỏ hưn hoằc NaN Gi tr tră vậ nặu ma trn x lĂ rồng, vĂ nặu ngừỡc 42 Chơng - Lập trình Matlab lưi isstr(x) Gi tr tră vậ lĂ nặu x lĂ mổt xu, nặu ngừỡc lưi strcmp(y1,y2) So snh hai xu y1,y2 Gi tr tră vậ lĂ nặu xu giõng hẻt vĂ bng nặu ngừỡc lưi So snh y bao góm: phn biẻt chự hoa vĂ chự thừộng, cc kỷ tỳ u díng vĂ cc du cch cĩ xu 3.5 Cu trợc cu lẻnh iậu kiẻn 3.5.1 Lẻnh if ỗn Cợ php: if nhĩm lẻnh; end Nặu bièu thửc logic lĂ ợng, nhĩm lẻnh s ừỡc thỳc hiẻn Nặu bièu thửc logic lĂ sai thệ chừỗng trệnh s nhăy tối lẻnh end Vẽ dũ: if a < 50 count = count +1; sum = sum + a; end Trong trừộng hỡp a lĂ ưi lừỡng vỏ hừống, nặu a < 50, thệ count tâng thm vĂ a ừỡc cổng vĂo sum; tri lưi cu lẻnh thử khỏng ừỡc thỳc hiẻn Trong trừộng hỡp a lĂ mổt ma trn thệ count tâng thm vĂ nĩ chì ừỡc cổng vĂo sum mi phn tứ ca nĩ nhị hỗn 50 3.5.2 Lẻnh if lóng nhau: Cợ if php: nhĩm lẻnh A; if nhĩm lẻnh B; end nhĩm lẻnh C; Phần I - Cơ sở 43 Chơng - Lập trình Matlab end nhĩm lẻnh D; Nặu bièu thửc iậu kiẻn ợng chừỗng trệnh s thỳc hiẻn cc nhĩm lẻnh A vĂ C; nặu bièu thửc iậu kiẻn ợng nhĩm lẻnh B s ừỡc thỳc hiẻn trừốc nhĩm lẻnh C Nặu bièu thửc iậu kiẻn sai chừỗng trệnh thỳc hiẻn nhĩm lẻnh D 3.5.3 Mẻnh ậ else: Cợ php: if nhĩm lẻnh A; else nhĩm lẻnh B; end Cho phẫp thỳc hiẻn nhĩm lẻnh A nặu bièu thửc logic lĂ ợng, ngừỡc lưi thỳc hiẻn nhĩm lẻnh B 3.5.4 Mẻnh ậ elseif: Khi ta cĩ mổt cu trợc lóng nhiậu cu lẻnh if-else, rt khĩ xc nh nhĩm lẻnh nĂo s ừỡc thỳc hiẻn bièu thửc logic ợng (hoằc sai) Trong trừộng hỡp nĂy, ngừội ta sứ dũng mẻnh ậ elseif lĂm chừỗng trệnh trờ nn sng vĂ d hièu hỗn Cợ php: if nhĩm lẻnh A; elseif nhĩm lẻnh B; elseif nhĩm lẻnh C; end Cc mẻnh ậ elseif cĩ thè dùng nhiậu hỗn nựa Nặu bièu thửc ợng thệ thỳc hiẻn cu lẻnh A, nặu bièu thửc sai vĂ bièu thửc ợng thệ chì cĩ nhĩm lẻnh B ừỡc thỳc hiẻn Nặu bièu thửc 1, sai vĂ ợng thệ chì cĩ nhĩm C ừỡc thỳc hiẻn Nặu cĩ tữ hai bièu thửc logic trờ ln ợng thệ bièu thửc logic ợng u tin xc nh nhĩm lẻnh s ừỡc thỳc hiẻn Nặu khỏng cĩ bièu thửc iậu kiẻn nĂo ợng thệ khỏng cĩ lẻnh nĂo cu trợc if - elseif ừỡc thi hĂnh Cĩ thè kặt hỡp mẻnh ậ else vĂ elseif: Phần I - Cơ sở 44 Chơng - Lập trình Matlab Cợ php: if nhĩm lẻnh A; elseif nhĩm lẻnh B; elseif nhĩm lẻnh C; else nhĩm lẻnh D; end Nặu că ba bièu thửc logic ậu sai thệ nhĩm lẻnh D ừỡc thi hĂnh ỏi lợc, cu trợc if-elseif cín ừỡc gi lĂ cu trợc case bời vệ cĩ mổt sõ trừộng hỡp ừỡc kièm tra Mồi trừộng hỡp ừỡc kièm tra bời mổt bièu thửc logic từỗng ửng Vẽ dũ sau y minh hoư cc cu trợc mẻnh ậ cu iậu kiẻn Chừỗng trệnh ừỡc ghi file hello2.m % Chừỗng trệnh hello2 mỏ tă cu trợc cu iậu kiẻn Matlab % BĂi ton so snh tuọi ca bưn vối sõ ngạu nhin sinh bời hĂm rand disp ( Xin chĂo ! Rt hn hưnh ừỡc lĂm quen ); x = fix ( 30* rand ); disp ( Tuọi ca tỏi khoăng tữ 0-30 ); gu = input ( ừa vĂo tuọi ca bưn : ); if gu < x disp ( Bưn tr hỗn tỏi ); elseif gu > x disp ( Bưn lốn hỗn tỏi ); else disp ( Tuọi bưn bng tuọi tỏi ); end 3.5.5 Cợ php cu iậu kiẻn vĂ break Phần I - Cơ sở 45 Chơng - Lập trình Matlab Cợ php: if , break , end Tữ kho break vối cu lẻnh if cho phẫp thot khịi víng lằp nặu cu iậu kiẻn lĂ ợng, ngừỡc lưi s thỳc hiẻn nhĩm lẻnh tiặp theo víng lằp ĩ Vẽ dũ: Vậ nhp mổt sõ dừỗng, nặu sõ ĩ < thot khịi chừỗng trệnh Nặu sõ ĩ chia hặt cho hiẻn kặt quă Nặu sõ ĩ khỏng chia hặt cho nhp sõ mối while n = input ( Cho vĂo sõ dừỗng , thot n < 0); if n if rem( n , ) == disp( Sõ dừỗng cho vĂo chia hặt cho , n ); break; else disp( Sõ dừỗng cho vĂo khỏng chia hặt cho ! Xin nhp sõ khc ); end end 3.6 Cu trợc víng lằp 3.6.1 Víng lằp FOR: Cợ php: for chì sõ = bièu thửc nhĩm lẻnh A; end Bièu thửc lĂ mổt ma trn (củng cĩ thè lĂ mổt vectỗ hay mổt ưi lừỡng vỏ hừống), nhĩm lẻnh A ừỡc thi hĂnh lằp i lằp lưi sõ ln bng sõ cổt ca ma trn bièu thửc Mồi ln lằp, chì sõ s nhn gi tr ca mổt phn tứ ca ma trn Phần I - Cơ sở 46 Chơng - Lập trình Matlab Chợ ỷ: Nặu trừộng hỡp ta khỏng biặt kẽch thừốc ca vectỗ, ta sứ dũng hĂm length è xc nh sõ ln ta muõn lằp * Qui tc sứ dũng víng lằp FOR: + Chì sõ ca víng lằp phăi lĂ biặn + Nặu ma trn bièu thửc lĂ ma trn rồng thệ víng lằp for s khỏng thỳc hiẻn Chừỗng trệnh bị qua víng lằp + Nặu ma trn bièu thửc lĂ mổt ưi lừỡng vỏ hừống Víng lằp ừỡc thỳc hiẻn mổt ln vĂ chì sõ nhn gi tr ca ưi lừỡng vỏ hừống + Nặu bièu thửc ma trn lĂ mổt vectỗ hĂng, sau mồi ln lằp chì sõ lưi ly gi tr tiặp theo ca vectỗ + Nặu bièu thửc ma trn lĂ ma trn, sau mồi ln lằp chì sõ s ly gi tr ca cổt tiặp theo ca ma trn + Khi kặt thợc víng lằp, biặn chì sõ nhn gi tr cuõi + Nặu sứ dũng ton tứ (:) vĂo bièu thửc ma trn: For k = chì sõ u : gia sõ : chì sõ kặt thợc; Sõ ln thỳc hiẻn víng lằp s ừỡc tẽnh theo cỏng thửc sau: floor((kặt thợc-bt u) / gia sõ)) + 1; Nặu gi tr lĂ mổt sõ m thệ khỏng thỳc hiẻn víng lằp Nặu mõn thot khịi víng lằp trừốc víng lằp thỳc hiẻn xong è dí lồi cĩ víng lằp, sứ dũng lẻnh break Vẽ dũ mỏ tă cho víng lằp for ừỡc ghi file hello3.m % Chừỗng trệnh hello2 mỏ tă cu trợc cu iậu kiẻn Matlab % BĂi ton dỳ on sõ ngạu nhin sinh tữ hĂm rand % cho bời cc ln thứ tưo bời víng lằp for x = fix ( 100* rand ); n = 7; test = 1; for k = 1:7 number = int2str( n); disp ( Bưn cĩ quyận dỳ on number ln ); Phần I - Cơ sở 47 Chơng - Lập trình Matlab disp ( Sõ cn on nm khoăng tữ 100 ); gu = input ( ừa vĂo sõ bưn dỳ on ); if gu < x disp ( Nhị hỗn ); elseif gu > x disp ( Lốn hỗn ); else disp ( Xin chợc mững bưn on chẽnh xc ); test = 0; break end n = n-1; end if test > disp ( Bưn khỏng on rói ); numx = int2str( x ); disp ( Sõ ĩ lĂ : numx); end 3.6.2 Víng lằp While: LĂ cu trợc rt quan trng Cợ php: while < bièu thửc> nhĩm lẻnh A; end Nặu bièu thửc ợng thệ thỳc hiẻn nhĩm lẻnh A Khi thỳc hiẻn xong thệ lưi kièm tra iậu kiẻn Nặu iậu kiẻn vạn cín ợng thệ nhĩm lẻnh A lưi ừỡc thỳc hiẻn Khi iậu kiẻn sai, víng lằp kặt thợc Trong nhĩm lẻnh A nn cĩ cc biặn bièu thửc, hoằc cc gi tr ca bièu thửc khỏng thay ọi Nặu bièu thửc luỏn luỏn ợng (hoằc cĩ gi tr luỏn khc khỏng), víng lằp s b qun è thot khịi víng lằp qun, ta sứ dũng Ctrl+C Vẽ dũ: Phần I - Cơ sở 48 Chơng - Lập trình Matlab % Chừỗng trệnh hello3 mỏ tă cu trợc cu iậu kiẻn while Matlab % BĂi ton cho tữ hello trn mĂn hệnh vối sõ ln nhp vĂo tữ bĂn phẽm disp ( Xin chĂo ! Hello ); gu = input ( Nhp vĂo sõ ln in : ); i=0; while i~= gu disp ([ Hello i ]); i = i + 1; end Phần I - Cơ sở 49 [...]... khịi víng lằp qun, ta sứ dũng Ctrl+C Vẽ dũ: Phần I - Cơ sở 48 Chơng 3 - Lập trình trong Matlab % Chừỗng trệnh hello3 mỏ tă cu trợc cu iậu kiẻn while trong Matlab % BĂi ton cho ra tữ hello trn mĂn hệnh vối sõ ln nhp vĂo tữ bĂn phẽm disp ( Xin chĂo ! Hello 3 ); gu = input ( Nhp vĂo sõ ln in : ); i=0; while i~= gu disp ([ Hello i ]); i = i + 1; end Phần I - Cơ sở 49 ... nhĩm lẻnh B; end nhĩm lẻnh C; Phần I - Cơ sở 43 Chơng 3 - Lập trình trong Matlab end nhĩm lẻnh D; Nặu bièu thửc iậu kiẻn 1 ợng chừỗng trệnh s thỳc hiẻn cc nhĩm lẻnh A vĂ C; nặu bièu thửc iậu kiẻn 2 ợng nhĩm lẻnh B s ừỡc thỳc hiẻn trừốc nhĩm lẻnh C Nặu bièu thửc iậu kiẻn 1 sai chừỗng trệnh thỳc hiẻn ngay nhĩm lẻnh D 3. 5 .3 Mẻnh ậ else: Cợ php: if nhĩm lẻnh A; else nhĩm lẻnh B; end... tứ nhn gi tr 1 nặu phẫp so snh lĂ ợng, ngừỡc lưi phn tứ nhn gi tr 0 Kặt quă ca phẫp ton quan hẻ ừỡc gi lĂ băng sỳ tht (ma trn 0 -1) 3. 4.2 Cc phẫp ton logic: Ton tứ Kỷ hiẻu logic and & or | not ~ Bièu thửc logic cho phẫp so snh cc băng sỳ tht giõng nhừ cc ton tứ quan hẻ Bièu thửc logic luỏn lĂ hỡp lẻ nặu 2 băng sỳ tht cĩ kẽch thừốc bng nhau Trong Phần I - Cơ sở 41 Chơng 3 - Lập trình trong Matlab bièu... 10 0* rand ); n = 7; test = 1; for k = 1: 7 number = int2str( n); disp ( Bưn cĩ quyận dỳ on number ln ); Phần I - Cơ sở 47 Chơng 3 - Lập trình trong Matlab disp ( Sõ cn on nm trong khoăng tữ 0 10 0 ); gu = input ( ừa vĂo sõ bưn dỳ on ); if gu < x disp ( Nhị hỗn ); elseif gu > x disp ( Lốn hỗn ); else disp ( Xin chợc mững bưn ơ on chẽnh xc ); test = 0; break end n = n -1; end if test > 0 disp (... ma trn x lĂ rồng, vĂ 0 nặu ngừỡc 42 Chơng 3 - Lập trình trong Matlab lưi isstr(x) Gi tr tră vậ lĂ 1 nặu x lĂ mổt xu, 0 nặu ngừỡc lưi strcmp(y1,y2) So snh hai xu y1,y2 Gi tr tră vậ lĂ 1 nặu 2 xu giõng hẻt nhau vĂ bng 0 nặu ngừỡc lưi So snh ờ y bao góm: phn biẻt chự hoa vĂ chự thừộng, cc kỷ tỳ u díng vĂ cc du cch cĩ trong xu 3. 5 Cu trợc cu lẻnh iậu kiẻn 3. 5 .1 Lẻnh if ỗn Cợ php: if nhĩm... thửc iậu kiẻn nĂo ợng thệ khỏng cĩ lẻnh nĂo trong cu trợc if - elseif ừỡc thi hĂnh Cĩ thè kặt hỡp 2 mẻnh ậ else vĂ elseif: Phần I - Cơ sở 44 Chơng 3 - Lập trình trong Matlab Cợ php: if nhĩm lẻnh A; elseif nhĩm lẻnh B; elseif nhĩm lẻnh C; else nhĩm lẻnh D; end Nặu că ba bièu thửc logic ậu sai thệ nhĩm lẻnh D ừỡc thi hĂnh ỏi lợc, cu trợc if-elseif...Chơng 3 - Lập trình trong Matlab Viẻc ly dự liẻu ra ưt ừỡc qua biặn t thỏng qua lẻnh load Cc tham sõ cn ặn dự liẻu s ly qua biến t >> load dl1 >> x = t ( : , 1 ); >> y = t ( : , 2 ); >> plot ( x, y ); grid on; 3. 4 Cc bièu thửc quan hẻ vĂ logic 3. 4 .1 Cc phẫp ton quan hẻ Ton tứ quan hẻ ỷ nghỉa < Nhị hỗn Lốn... true Trong Matlab tt că cc gi tr khc 0 ậu ừỡc coi lĂ ợng (true), cín gi tr bng 0 ừỡc coi lĂ sai (false) Chẽnh vệ vy, phăi hặt sửc thn trng khi iậu khièn chừỗng trệnh bng cc bièu thửc quan hẻ vĂ logic 3. 4 .3 Cc hĂm quan hẻ vĂ logic any(x) all(x) find(x) exist('A') isnan(x) finite(x) isempty(x) Phần I - Cơ sở HĂm cho gi tr lĂ 1 nặu mổt phn tứ ca x khc 0, ngừỡc lưi cho gi tr 0 HĂm cho gi tr lĂ 1 nặu tt că... trong Matlab % BĂi ton so snh tuọi ca bưn vối sõ ngạu nhin sinh ra bời hĂm rand disp ( Xin chĂo ! Rt hn hưnh ừỡc lĂm quen ); x = fix ( 30 * rand ); disp ( Tuọi ca tỏi trong khoăng tữ 0 -30 ); gu = input ( ừa vĂo tuọi ca bưn : ); if gu < x disp ( Bưn tr hỗn tỏi ); elseif gu > x disp ( Bưn lốn hỗn tỏi ); else disp ( Tuọi bưn bng tuọi tỏi ); end 3. 5.5 Cợ php cu iậu kiẻn vĂ break Phần I - Cơ sở 45... count +1; sum = sum + a; end Trong trừộng hỡp a lĂ ưi lừỡng vỏ hừống, nặu a < 50, thệ count tâng thm 1 vĂ a ừỡc cổng vĂo sum; tri lưi cu lẻnh thử 2 khỏng ừỡc thỳc hiẻn Trong trừộng hỡp a lĂ mổt ma trn thệ count tâng thm 1 vĂ nĩ chì ừỡc cổng vĂo sum khi mi phn tứ ca nĩ nhị hỗn 50 3. 5.2 Lẻnh if lóng nhau: Cợ if php: nhĩm lẻnh A; if nhĩm lẻnh B; end nhĩm lẻnh C; Phần ... -6.2 832 -4.2 832 -2.2 832 -0.2 832 >> sin(x) Phần I - Cơ sở 36 1. 716 8 3. 716 8 5. 716 8 Chơng - Lập trình Matlab ans = 0.0000 0.90 93 -0.7568 -0.2794 0.9894 -0.5440 -0. 536 6 >> atan(x) ans = -1. 4 13 0 -1 .34 14 ... -267.7449 -36 .2286 -4.8 530 -0.2870 2.6 936 20.5544 15 1.9660 >> atanh(x) ans = Columns through -0 .16 05 + 1. 5708i -0. 237 9 + 1. 5708i -0.4697 + 1. 5708i -0.2 911 Columns through 0.6662 + 1. 5708i 0.2758 + 1. 5708i... 0.90 93 -0.7568 -0.2794 0.9894 -0.5440 -0. 536 6 >> atan(x) ans = -1. 4 13 0 -1 .34 14 -1. 1580 -0.2760 1. 0 434 1 .30 80 1 .39 76 3. 2 .3 Cc hĂm hyperbolic: sinh(x) HĂm tẽnh hyperbolic sine ca x cosh(x) HĂm tẽnh
Ngày đăng: 03/12/2015, 13:47
Xem thêm: Giáo trình cơ sở matlab v5 3 1 phần 1 cơ sở matlab chương 3