![加速matlab運行的三重境界_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/dc1e0297-a28a-4449-82b8-77caa1ac7de1/dc1e0297-a28a-4449-82b8-77caa1ac7de11.gif)
![加速matlab運行的三重境界_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/dc1e0297-a28a-4449-82b8-77caa1ac7de1/dc1e0297-a28a-4449-82b8-77caa1ac7de12.gif)
![加速matlab運行的三重境界_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/dc1e0297-a28a-4449-82b8-77caa1ac7de1/dc1e0297-a28a-4449-82b8-77caa1ac7de13.gif)
![加速matlab運行的三重境界_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/18/dc1e0297-a28a-4449-82b8-77caa1ac7de1/dc1e0297-a28a-4449-82b8-77caa1ac7de14.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、加速matlab運行的三重境界 加速matlab運行的三重境界8 9 h2 p; a1 B3 ! 0 z%2 y1 v0 / 1 r4 t) + Z! u) Z%. ' F7 P4 O$ d, V! % N9 u6 a一、 遵守Performance Acceleration的規(guī)則* f' E. _* g% R/ M二、 遵守三條規(guī)則 q- L! 6 - F# V- ?三、 絕招& I0 ) : o$ x5 e%8 d8 u2 t: W$ X- h6 |%一、 遵守Performance Acceleration的規(guī)則7 P" , L
2、39; X! s3 w5 q; _4 T$ 2 m. M關(guān)于什么是“Performance Acceleration”請參閱matlab的幫助文件。我只簡要的將" H& 3 C$ G8 n3 H! n5 其規(guī)則總結(jié)如下7條:0 q# D% p$ I/ C# w! a1、只有使用以下數(shù)據(jù)類型,matlab才會對其加速: f5 B9 t( V" x% r( K& ?$ flogical,char,int8,uint8,int16,uint16,int32,uint32,double" J' j! s- J8 Z: e# 而
3、語句中如果使用了非以上的數(shù)據(jù)類型則不會加速,如:numeric,cell,structu. Z8 a) ' f' re,single,/ j# v- n1 I6 V0 r, : E* tfunction handle,java classes,user classes,int64,uint64! E1 B' 9 t) I2、matlab不會對超過三維的數(shù)組進行加速。0 B2 c2 r4 Z) x. i0 |9 L1 W' 3、當(dāng)使用for循環(huán)時,只有遵守以下規(guī)則才會被加速:a、for循環(huán)的范圍只用標(biāo)量值# e$ Q+ E" V2
4、 E; L( x來表示;4 I! $ j! _2 h+ b. E; I; H: E9 v: Zb、for循環(huán)內(nèi)部的每一條語句都要滿足上面的兩條規(guī)則,即只使用支持加速的數(shù)- I7 y5 E3 H3 c1 ?! * ?/ B據(jù)類型,只使用7 9 + g2 # K3 h$ r三維以下的數(shù)組;c、循環(huán)內(nèi)只調(diào)用了內(nèi)建函數(shù)(build-in function)。: k# |8 m" u: r! 4、當(dāng)使用if、elseif、while和switch時,其條件測試語句中只使用了標(biāo)量值時,將- P" $ d: V, l8 P f加速運行。3 h
5、. ?5 E' m3 x8 E) r5 e3 E5、不要在一行中寫入多條操作,這樣會減慢運行速度。即不要有這樣的語句:7 A0 I! : J( / G$ fx = ; for k=1:10000, sin(A(k), end;8 z1 & 5 a" a6、當(dāng)某條操作改變了原來變量的數(shù)據(jù)類型或形狀(大小,維數(shù))時將會減慢運行速, N% c$ * 9 W! e X度。7 E* o" x9 k, ( s6 U* _/ |7、應(yīng)該這樣使用復(fù)常量x = 7 + 2i,而不應(yīng)該這樣使用:x = 7 + 2*i,后者會降低) ; s, X
6、2 h) F! j8 ' T運行速度。% ' s, + ; b6 G%# K; V6 N7 Q4 % z%; ; n& V ' v. X二、 遵守三條規(guī)則* _7 O) U. t. T5 s/ p# % 3 U% i1、盡量避免使用循環(huán),MATLAB的文檔中寫到“MATLAB is a matrix language, whic. V! c5 m( L( m* Oh means it is designed) 8 7 A: c# a7 I2 a+ 0 g. ! Gfor vector and matrix operations. You c
7、an often speed up your M-file c5 n" - p3 ? V! _# Q% K; qode by using; S' C O2 z& % ; Pvectorizing algorithms that take advantage of this design. Vectorizati0 J9 i0 B. k" Con means converting* t . a: x; l; k! V. f/ b+ afor and while loops to equivale
8、nt vector or matrix operations.”。改進* x+ I( Y2 0 B& c8 i這樣的狀況有兩種方法:7 $ R) 1 L S' n( G1 Z3 k2 R$ F& _0 a、盡量用向量化的運算來代替循環(huán)操作。如將下面的程序:. Y( - T: I$ r" " % e9 Ei=0;3 B$ F9 Z2 e7 Q; Ofor t = 0:.01:10: ' W; g, l6 j5 bi = i+1; 5 k( E; i/ a7 M, V/ ?y(i) = sin(t);-
9、 c0 L: q# J eend2 |* B5 Z5 / k% & E3 Q5 x W" p替換為:+ J/ 4 d b# Tt = 0:.01:10;* / b+ y e- d5 _y = sin(t);6 T9 U! u# I$ ) i: k. x$ W速度將會大大加快。最常用的使用vectorizing技術(shù)的函數(shù)有:All、diff、i0 & A8 I3 t# W G) rpermute、permute、$ S& z; 2 4 L4 xresha
10、pe、squeeze、any、find、logical、prod、shiftdim、sub2ind、cums: k5 F, ?- u. x) A# M Ium、ind2sub、9 Z1 ?# B) d. ' n) a; W% Q) Yndgrid、repmat、sort、sum 等。 q# Z( l5 _, s, _9 S請注意matlan文檔中還有這樣一句補充:“Before taking the time to& g3 Y5 O& S# f, q; kvectorize your code, read the sectio
11、n on Performance Acceleration.+ x; N$ Z$ k- d' h) O% Y$ Y- fYou may be able to6 h2 V& y6 f g+ + B3 r4 x) ! sspeed up your program by just as much using the MATLAB JIT Accelera7 _0 r! b; T9 p n# T' 0 O( a3 Ltor instead of5 X! I1 X- z! L. j( x. s! cvectorizing.”。何去何從,
12、自己把握。 B% o" H; V6 i' k4 3 V# ?0 rb、在必須使用多重循環(huán)時下,如果兩個循環(huán)執(zhí)行的次數(shù)不同,則在循環(huán)的外環(huán)執(zhí)6 f7 S4 e3 Q/ N8 H! d( f行循環(huán)次數(shù)少的,# y y( N& 9 f+ n+ b內(nèi)環(huán)執(zhí)行循環(huán)次數(shù)多的。這樣可以顯著提高速度。3 G: N2 1 E; ?+ I) K2、a、預(yù)分配矩陣空間,即事先確定變量的大小,維數(shù)。這一類的函數(shù)有zeros、on" s0 n4 r" s# l) 1 nes、cell、struct、* m3
13、K' . S% N4 Rrepmat等。/ q; J% p7 V9 P& R9 ob、當(dāng)要預(yù)分配一個非double型變量時使用repmat函數(shù)以加速,如將以下代碼:8 ) ( F$ v2 W3 J8 U2 JA = int8(zeros(100);7 _) ?" Z2 D9 v+ k5 r換成:' ; z# r3 N! W$ fA = repmat(int8(0), 100, 100);) I. S2 H8 , v- c、當(dāng)需要擴充一個變量的大小、維數(shù)時使用repmat函數(shù)。$ R5 K. ) a8 ) t- y( c3、a、優(yōu)先使用matlab內(nèi)建函數(shù),將耗時的循環(huán)編寫進MEX-File中以獲得加速。7 w$ d0 U$ ! b、使用Functions而不是Scripts 。3 9 H4 L T/ p$ O1 a! S%. h1 z4 h( H2 v# E
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年半包覆型鍍鋁玻璃纖維合作協(xié)議書
- 八年級英語下冊 Unit 6 單元綜合測試卷(人教河南版 2025年春)
- 2025年特種裝備電纜合作協(xié)議書
- 2025年主體結(jié)構(gòu)工程承包合同參考樣本(五篇)
- 2025年云南私營企業(yè)職工勞動合同(2篇)
- 2025年中心幼兒園大班健康教學(xué)活動總結(jié)(二篇)
- 2025年二建勞動合同(三篇)
- 2025年企業(yè)個體銷售勞動合同范文(2篇)
- 2025年臨時工聘用合同協(xié)議(三篇)
- 2025年個人租房簡易協(xié)議范文(2篇)
- 高考百日誓師動員大會
- 賈玲何歡《真假老師》小品臺詞
- 2024年北京東城社區(qū)工作者招聘筆試真題
- 2025年東方電氣集團東方鍋爐股份限公司校園招聘高頻重點提升(共500題)附帶答案詳解
- 《敏捷項目管理》課件
- 統(tǒng)編版(2024新版)七年級上學(xué)期道德與法治期末綜合測試卷(含答案)
- 七上 U2 過關(guān)單 (答案版)
- 五年級上冊小數(shù)遞等式計算200道及答案
- 信用證審核課件
- 植物工廠,設(shè)計方案(精華)
- 原發(fā)性膽汁性肝硬化(PBC)課件
評論
0/150
提交評論