YOMEDIA
ADSENSE
matlab_toan_tap_7
35
lượt xem 7
download
lượt xem 7
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Tham khảo tài liệu 'matlab_toan_tap_7', kỹ thuật - công nghệ, điện - điện tử phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: matlab_toan_tap_7
- 61 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com >> [a, b, c, d] = deal(C{1}, C{2}, C{3}, C{4}) a= How b= about c= this for a d= cell array of strings? Hµm char cã thÓ dïng ®Ó chuyÓn tõ m¶ng tÕ bµo sang m¶ng x©u: >> s = char(C) How about this for a cell array of strings? % KÕt qu¶ lµ c¸c x©u víi c¸c kho¶ng trèng. >> size(s) ans= 4 22 >> ss = char(C(1:2)) ss= How about >> size(ss) ans= 2 5 §Ó chuyÓn ng−îc l¹i m¶ng tÕ bµo, ta dïng hµm cellstr: >> cellstr(s) ans= 'How' 'about' 'this for a' 'cell array of strings?' HÇu hÕt c¸c hµm x©u trong MATLAB lµm viÖc víi c¶ m¶ng x©u hoÆc m¶ng tÕ bµo. VÒ m¶ng tÕ bµo sÏ ®−îc tr×nh bµy râ h¬n ë Ch−¬ng 19. ch−¬ng 10 thêi gian MATLAB ®−a ra mét sè hµm thao t¸c vÒ thêi gian tõ ®ã b¹n cã thÓ tÝnh to¸n víi ngµy, giê, in lÞch vµ t×m kiÕn nh÷ng ngµy cô thÓ. MATLAB chøa ngµy vµ thêi gian nh− mét sè cã ®é chÝnh x¸c hai sè sau dÊu phÈy t−îng tr−ng cho sè ngµy, b¾t ®Çu b»ng n¨m kh«ng. VÝ dô, mång 1 th¸ng 1 n¨m 1997 t¹i lóc nöa ®ªm, nã ®−îc t−îng tr−ng bëi sè 729391, vµ cïng mét ngµy nh−ng lóc buæi ch−a lµ 729391.5. CÊu tróc nµy cã thÓ dÔ dµng cho m¸y tÝnh xö lÝ, nh−ng nã rÊt khã diÔn gi¶i. Do vËy MATLAB cung cÊp c¸c hµm trî gióp chuyÓn ®æi gi÷a sè vµ x©u kÝ tù vµ ®Ó thao t¸c víi ngµy vµ thêi gian.
- 62 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 10.1 Ngµy vµ giê hiÖn t¹i Hµm clock tr¶ vÒ ngµy vµ giê hiÖn t¹i chøa trong mét m¶ng. VÝ dô: >> T = clock T= 1997 1 21 16 33 39.934708 Hµm now tr¶ vÒ ngµy vµ thêi gian hiÖn t¹i nh− sè ngµy quy −íc cña m¸y hoÆc ®¬n gi¶n lµ sè ngµy. >> t = now t= 729411.690045541 C¶ hai kÕt kÕt qu¶ ë trªn cã cïng mét th«ng tin. Hµm date tr¶ l¹i ngµy hiÖn t¹i nh− mét x©u theo mÉu: dd-mmm-yyyy >> date ans = 21-Jan-1997 10.2 Sù chuyÓn ®æi gi÷a c¸c kiÓu B¹n cã thÓ chuyÓn sè ngµy ra x©u, sö dông hµm datestr. CÊu tróc cña hµm nµy cã d¹ng nh− sau: datestr(date_number,format_spec). Sau ®©y lµ trî gióp cña help cho hµm datestr: >> help datestr DATESTR string representation of date. DATESTR(D,DATEFORM) converts a serial data number D (as returned by DATENUM) into a date string. The string is formatted according to the format number or string DATEFORM (see table below). By default, DATEFORM is 1, 16, or 0 depending on whether D contains dates, times or both. DATEFORM number DATEFORM string Example 0 'dd-mmm-yyyy HH:MM:SS' 01-Mar-1995 15:45:17 1 'dd-mmm-yyyy' 01-Mar-1995 2 'mm/dd/yy' 03/01/95 3 'mmm' Mar 4 'm' M 5 'mm' 3 6 'mm/dd' 03/01 7 'dd' 1
- 63 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 8 'ddd' Wed 9 'd' W 10 'yyyy' 1995 11 'yy' 95 12 'mmmyy' Mar95 13 'HH:MM:SS' 15:45:17 14 'HH:MM:SS PM' 3:45:17 PM 'HH:MM' 15:45 16 'HH:MM PM' 3:45 PM 17 'QQ-YY' Q1-96 18 'QQ' Q1 vÝ dô víi hµm datestr: >> datestr(t) ans= 21-Jan-1997 16: 33: 40 >> datestr(t,14) ans= 4: 33: 40 PM Hµm datenum lµ hµm ng−îc cña datestr. Hµm nµy chuyÓn mét x©u kÝ tù d¹ng ngµy dïng mÉu datenum(str), hoÆc mét sè ®éc lËp hoÆc mét vector sang sè d¹ng ngµy, dïng mÉu: datenum(year, month, day) hoÆc datenum(year, month, day, hour, minute, second). >> datenum('21-Jan-1997 16: 33: 40') ans= 729411.690045541 >> datenum(1997, 01, 21) ans= 729411 >> datenum(1997, 01, 21, 16, 33, 40) ans= 729411.690045541 Hµm datevec chuyÓn mét x©u kÝ tù d¹ng ngµy (dïng datestr d¹ng 0, 1, 2, 6, 13, 14, 15, hoÆc 16) hoÆc mét sè d¹ng ngµy sang vector. >> c = datevec('12/ 24/ 1984') c= 1984 12 24 0 0 0 >> [yr, mo, day, hr, nim, sec] = datevec('24-Dec-1984 08: 22') yr= 1984 mo= 12
- 64 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com day= 24 hr= 8 min= 22 sec= 0 10.3 C¸c hµm vÒ ngµy Ngµy cña tuÇn cã thÓ t×m tõ x©u d¹ng ngµy hoÆc sè d¹ng ngµy, dïng hµm weekday, MATLAB sö dông quy −íc Sunday = 1 vµ Saturday = 7. >> [d w] = weekday(728647) d= 2 w= Mon >> [d w] = weekday('21-Dec-1994') d= 4 w= Wed Ngµy cuèi th¸ng cã thÓ t×m b»ng hµm eomday. Trong ®ã b¾t buéc ph¶i ®−a vµo n¨m, th¸ng. 1996 lµ n¨m >> eomday(1996, 2) % ans= 29 MATLAB cã thÓ t¹o lÞch cho bÊt cø th¸ng nµo b¹n yªu cÇu, vµ hiÓn thÞ nã trong cöa sæ lÖnh hoÆc ®Æt chóng trong mét ma trËn 6x7. >> calendar('7/ 17/ 95') Jul 1995 S M Tu W Th F S 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0 0 0 0 >> S = calendar(1994, 12) S= 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0 0 0 0 0 0
- 65 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 10.4 C¸c hµm vÒ thêi gian LÖnh tic vµ toc cã thÓ ®−îc dïng ®èi víi thêi gian trong tÝnh to¸n: >> tic; plot(rand(5)); toc elapsed_time = 0.2200 H×nh 10.1 >> tic; plot(rand(5)); toc elapsed_time = 0.1700
- 66 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com H×nh 10.2 Chó ý sù kh¸c nhau vÒ hµm thêi gian gi÷a elapsed_time ®èi víi lÖnh plot, lÖnh plot thø hai nhanh h¬n v× MATLAB ®· t¹o h×nh d¸ng cöa sæ vµ dÞch c¸c hµm cÇn thiÕt vµo trong « nhí. Hµm cputime tr¶ vÒ tæng sè thêi gian cña CPU (Central Processing Unit), tÝnh theo gi©y, trong thêi gian MATLAB ®· dïng tõ khi nã ®îc khëi ®éng lªn. Hµm etime tÝnh kho¶ng thêi gian gi÷a hai vector thêi gian. C¸c vector ph¶i lµ vector hµng gåm 6 phÇn tö, gièng nh− kÕt qu¶ tr¶ vÒ trong lÖnh clock vµ datevec. T¹i thêi gian hiÖn t¹i etime kh«ng chuyÓn gi÷a th¸ng vµ n¨m. TÊt c¶ c¸c hµm cã thÓ sö dông ®Ó tÝnh to¸n thêi gian. >> t0 = cputime; pause(5); cputime - t0 ans = 5 >> t1 = clock; pause(2); etime(clock,t1) ans = 2.0400 B¹n h·y xem help vµ MATLAB CD ®Ó t×m hiÓu thªm vÒ nh÷ng hµm nµy. 10.5 VÏ ®å thÞ víi hµm ngµy vµ thêi gian §«i khi nã rÊt cã Ých ®Ó vÏ ®å thÞ trong ®ã dïng x©u ngµy vµ thêi gian cho mét hoÆc h¬n mét c¸c nh·n. Hµm datetick tù ®éng víi c«ng viÖc nµy. NÕu ®å thÞ ®−îc vÏ, dïng sè ngµy cho mét hoÆc h¬n mét trôc, th× hµm datetick sÏ viÕt c¸c nh·n cho ®iÓm ®¸nh dÊu. VÝ dô sau vÏ h×nh 10.3: >> t = (1900:10:1990)'; >> p = [75.995; 91.972; 105.771; 123.203; 131.669; 150.697; 179.323; 203.212; 226.505; 249.633];
- 67 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com >> plot(datenum(t,1,1),p) >> datetick('x','yyyy') % use 4-digit year on the x-axis >> title('Population by year') Chóng ta cã thÓ t¹o biÓu ®å cét cña c«ng ty b¸n hµng b¸n tõ th¸ng 11 n¨m 1994 ®Õn th¸ng 12 n¨m 1995 (H×nh 10.4): >> y = [1994 1994 1995*ones(1,12)]'; >> m = [11 12 (1:12)]'; >> s=[1.1 1.3 1.2 1.4 .16 1.5 1.7 1.6 1.8 1.3 1.9 1.7 1.6 1.95]'; >> bar(datenum(y,m,1),s) >> datetick('x','mmmyy') >> ylabel('$ Million') >> title('Monthly Sales') H×nh 10.3
- 68 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com H×nh 10.4 VÝ dô: T×m thø s¸u ngµy 13 B©y giê chóng ta ®· ®−îc giíi thiÖu c¸c lÖnh vÒ thêi gian, h·y dïng chóng ®Ó t¹o mét sè hµm cã Ých. NÕu b¹n lµ ng−êi cÈn thËn, b¹n muèn biÕt bao giê thø s¸u ngµy 13 x¶y ra. Hµm M_file sÏ cho b¹n nh÷ng th«ng tin nµy. function m=friday(start) % FRIDAY Date of the next Friday the 13th % FRIDAY display the next occurrence of Friday the % 13th % FRIDAY(START) start the search at the date % specified by START % M=FRIDAY return the date number of the next Friday % the 13th if nargin==0 start=now; % use the current date if none end % was supplied [yr,mo,da]=datevec(start); da=da+6-weekday(start); % Start with the Friday in % this week start=datenum(yr,mo,da,0,0,0); while 1 [yr,mo,da]=datevec(start); if (weekday(start)==6)&(da==13) break;
- 69 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com end start=datenum(start+7); % skip to the next Friday end if nargout==0 disp(['Friday,'datestr(start,1)]) % Display the % the result else m=start; % or return the resulting date end % number Sau khi ch¹y ch−¬ng tr×nh ta ®−îc kÕt qu¶: >> friday Friday,13-Aug-1999 NÕu b¹n muèn ®−îc c¶nh b¸o cho toµn bé n¨m, xem hµm fridays: function F=fridays(ynum) % FRIDAY List the Friday the 13ths in the year ynum. % M=FRIDAY return the date numbers found. % if nargin==0 [ynum dummy]=datevec(now); % use the current date if end % non was supplied MM=[]; trynum=datenum(ynum,1,13,0,0,0); % check January 13 first trynum=friday(trynum); % find the first one [tyr dummy]=datevec(trynum); while tyr==ynum % May be there are more this year MM=[MM;trynum]; trynum=friday(trynum+7); % skip to the next week [tyr dummy]=datevec(trynum); end if nargout==0 disp('Fridays'); % Display the results disp(datestr(MM,1)) % Display the result else F=MM; % or return the vector of end % date number -------------------oOo------------------- ch−¬ng 11 VßNG LÆP §IÒU KHIÓN C¸c ng«n ng÷ lËp tr×nh vµ m¸y tÝnh cã kh¶ n¨ng lËp tr×nh ®Òu ®Ò cËp ®Õn mét ®Æc ®iÓm lµ cho phÐp b¹n ®iÒu khiÓn vßng lÆp cña c¸c c©u lÖnh dùa trªn nh÷ng cÊu tróc cña nã. NÕu b¹n ®· tõng sö dông
- 70 Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com nh÷ng ®Æc ®iÓm nµy th× phÇn nµy sÏ rÊt ®¬n gi¶n ®èi víi b¹n. MÆt kh¸c nÕu vßng lÆp ®iÒu khiÓn lµ míi ®èi víi b¹n th× nã sÏ rÊt r¾c rèi, nÕu nh vËy, th× b¹n h·y nghiªn cøu nã tõ tõ. Vßng lÆp ®iÒu khiÓn rÊt h÷u Ých vµ cã øng dông rÊt réng r·i, nã lµm cho c¸c phÐp to¸n ®−îc thùc hiÖn mét c¸ch thuËn tiÖn h¬n vµ nhanh h¬n. MATLAB ®a ra c¸c d¹ng vßng lÆp cã ®iÒu khiÓn lµ: vßng lÆp for, vßng lÆp while, cÊu tróc if-else-end vµ cÊu tróc switch-case. V× c¸c cÊu tróc th−êng hoµn thiÖn c¸c lÖnh cña MATLAB, nªn chóng th−êng xuÊt hiÖn trong M_file, h¬n lµ trong c©u lÖnh ®¸nh trùc tiÕp t¹i dÊu nh¾c cña MATLAB. 11.1 Vßng lÆp for Vßng lÆp for cho phÐp mét nhãm lÖnh thùc hiÖn lÆp l¹i mét sè lÇn cè ®Þnh. Có ph¸p cña vßng lÆp for nh sau: for x = array commands % Khèi c¸c lÖnh end C¸c c©u lÖnh gi÷a hai tr¹ng th¸i for vµ end ®−îc thùc hiÖn mét lÇn cho tÊt c¶ c¸c cét cña m¶ng (array). T¹i mçi lÇn lÆp l¹i, x ®îc g¸n cho phÇn tö cét tiÕp theo nh− trong suèt n lÇn cña vßng lÆp, x = array(:, n). VÝ dô: >> for n = 1:10 x(n) = sin(n*pi/10); end >> x x= Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 8 through 10 0.5878 0.3090 0.0000 Nãi mét c¸ch kh¸c, tr¹ng th¸i thø nhÊt yªu cÇu: Cho n b»ng tõ 1 ®Õn 10, tÝnh gi¸ trÞ cña tÊt c¶ c¸c tr¹ng th¸i cho ®Õn tr¹ng th¸i kÕ tiÕp tr¹ng th¸i end. §Çu tiªn trong vßng lÆp for n=1, tiÕp theo n=2, vµ cø nh vËy cho ®Õn tr−êng hîp n=10. Sau tr−êng hîp n=10, vßng lÆp for kÕt thóc, vµ tÊt c¶ c¸c lÖnh sau tr¹ng th¸i end cña vßng lÆp ®−îc thùc hiÖn. Vßng lÆp for kh«ng thÓ bÞ kÕt thóc b»ng c¸ch g¸n l¹i biÕn ®iÒu khiÓn n trong vßng lÆp: >> for n = 1:10 x(n) = sin(n*pi/10); n = 10; end >> x x= Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 8 through 10 0.5878 0.3090 0.0000
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn