


全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
優(yōu)化MATLAB程序的技巧 已有 76 次閱讀2012-10-19 22:57|個(gè)人分類:MATLAB|系統(tǒng)分類:科研筆記|關(guān)鍵詞:的 學(xué)習(xí) 技巧其實(shí)是轉(zhuǎn)載的,轉(zhuǎn)載地址是:/s/blog_62983bd50100fyvn.html但是直接轉(zhuǎn)載沒法進(jìn)行學(xué)習(xí)筆記的標(biāo)注,因此現(xiàn)在拷貝到這里進(jìn)行學(xué)習(xí)。原文內(nèi)容如下:這是薛定宇老師的建議,原文在大觀園的首頁(yè):因?yàn)?MATLAB 語(yǔ)言是一種解釋性語(yǔ)言,所以有時(shí) MATLAB 程序的執(zhí)行速度不是很理想。這里將依照作者十多年的實(shí)際編程經(jīng)驗(yàn)給出加快 MATLAB程序執(zhí)行速度的一些建議和體會(huì)。要點(diǎn)1:盡量避免使用循環(huán):循環(huán)語(yǔ)句及循環(huán)體經(jīng)常被認(rèn)為是MATLAB 編程的瓶頸問題。改進(jìn)這樣的狀況有兩種方法:(1) 盡量用向量化的運(yùn)算來(lái)代替循環(huán)操作。我們將通過如下的例子來(lái)演示如何將一般的循環(huán)結(jié)構(gòu)轉(zhuǎn)換成向量化的語(yǔ)句。例3.19考慮下面無(wú)窮級(jí)數(shù)求和問題:如果我們只求出其中前有限項(xiàng),比如 100,000 項(xiàng)之和 (要精確地求出級(jí)數(shù)的和,無(wú)需求 100000 項(xiàng),幾十項(xiàng)往往就能得出滿意的精度。這里主要是為了演示循環(huán)運(yùn)算向量化的優(yōu)越性。),則可以采用下面的常規(guī)語(yǔ)句進(jìn)行計(jì)算 tic;s=0;for i=1:100000s=s+(1/2i+1/3i); end tocs =1.5000elapsed_time =1.9700如果采用向量化的方法,則可以得出下面結(jié)果。可以看出,采取向量化的方法比常規(guī)循環(huán)運(yùn)算效率要高得多。 tic;i=1:100000; s=sum(1./2.i+1./3.i);toc;s =1.5000elapsed_time =0.3800(2)在必須使用多重循環(huán)的情況下,如果兩個(gè)循環(huán)執(zhí)行的次數(shù)不同,則建議在循環(huán)的外循環(huán)執(zhí)行循環(huán)次數(shù)少的,內(nèi)環(huán)執(zhí)行循環(huán)次數(shù)多的。這樣也可以顯著提高速度。例3.20考慮生成一個(gè) 5x10000 的 Hilbert 長(zhǎng)方矩陣,該矩陣的定義是其第 i 行第 j 列元素為 h(i,j)=1/(i+j-1)。我們可以由下面語(yǔ)句比較先進(jìn)行 i=1:5 的循環(huán)和后進(jìn)行該循環(huán)的耗時(shí)區(qū)別,其效果和前面分析的是一致的。 ticfor i=1:5 %外側(cè)為循環(huán)次數(shù)少的循環(huán)for j=1:10000H(i,j)=1/(i+j-1);endendTocelapsed_time =8.6800ticfor j=1:10000 %外側(cè)為循環(huán)次數(shù)多的循環(huán)for i=1:5J(i,j)=1/(i+j-1);endendtocelapsed_time =25.7000要點(diǎn)2:大型矩陣的預(yù)先定維給大型矩陣動(dòng)態(tài)地定維是個(gè)很費(fèi)時(shí)間的事。建議在定義大矩陣時(shí),首先用 MATLAB 的內(nèi)在函數(shù),如zeros() 或 ones() 對(duì)之先進(jìn)行定維,然后再進(jìn)行賦值處理,這樣會(huì)顯著減少所需的時(shí)間的。再考慮例3-20中的問題,如果輸入下面的命令 ticH=zeros(5,10000);for i=1:5for j=1:10000H(i,j)=1/(i+j-1);endendTocelapsed_time =1.0400則采用預(yù)先定維的方法,再結(jié)合向量化的方法,我們可以給出下面的 MATLAB 語(yǔ)句。 ticH=zeros(5,10000); %余弦定維的方法for i=1:5 %向量化的方法H(i,=1./i:i+9999;endTocelapsed_time =0.060可見,預(yù)先定維后,所需要的時(shí)間顯著地減少了??梢钥闯觯瑯右粋€(gè)問題,由于采用了有效的措施,所需的時(shí)間就可以從 25.7 秒減少到 0.06 秒,亦即效率提高了 428 倍。對(duì)二重循環(huán)這樣的特殊問題,我們還可以使用 meshgrid() 函數(shù)構(gòu)造兩個(gè) 5x10000 矩陣 i 和 j,從而直接得出 H 矩陣,更進(jìn)一步地加快速度。 tici,j=meshgrid(1:5,1:10000); H=1./(i+j-1); Tocelapsed_time =0要點(diǎn)3:優(yōu)先考慮內(nèi)在函數(shù)矩陣運(yùn)算應(yīng)該盡量采用 MATLAB的內(nèi)在函數(shù),因?yàn)閮?nèi)在函數(shù)是由更底層的編程語(yǔ)言C構(gòu)造的,其執(zhí)行速度顯然快于使用循環(huán)的矩陣運(yùn)算。要點(diǎn)4:采用有效的算法在實(shí)際應(yīng)用中,解決同樣的數(shù)學(xué)問題經(jīng)常有各種各樣的算法。例如求解定積分的數(shù)值解法在 MATLAB:中就提供了兩個(gè)函數(shù)quad()和quad8(),其中后一個(gè)算法在精度、速度上都明顯高于前一種方法。所以說(shuō),在科學(xué)計(jì)算領(lǐng)域是存在“多快好省”的途徑的。如果一個(gè)方法不能滿足要求,可以嘗試其他的方法。要點(diǎn)5應(yīng)用 Mex 技術(shù)雖然采用了很多措施,但執(zhí)行速度仍然很慢,比如說(shuō)耗時(shí)的循環(huán)是不可避免的,這樣就應(yīng)該考慮用其他語(yǔ)言,如 C 或 Fortran 語(yǔ)言。按照 Mex 技術(shù)要求的格式編寫相應(yīng)部分的程序,然后通過編譯聯(lián)接,形成在 MATLAB 可以直接調(diào)用的動(dòng)態(tài)連接庫(kù) (DLL) 文件,這樣可以顯著地加快運(yùn)算速度。要點(diǎn)6函數(shù)比腳本運(yùn)行更快這是因?yàn)? M
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年鍋爐檢驗(yàn)員資格考試試卷:鍋爐檢驗(yàn)員考試備考資料大全
- 2025年特種設(shè)備安全管理人員安全生產(chǎn)法規(guī)與實(shí)操試題匯編
- 2025年高壓電工考試題庫(kù):高壓操作安全規(guī)范綜合應(yīng)用試題
- 詳細(xì)收入及年終獎(jiǎng)金證明單(7篇)
- 雨中的回憶關(guān)于童年的一次回憶讀后感14篇范文
- 探索大自然奧秘的旅程寫景作文(15篇)
- 嬰幼兒配方食品營(yíng)養(yǎng)配方在嬰幼兒抵抗力增強(qiáng)中的營(yíng)養(yǎng)素配比應(yīng)用報(bào)告
- 生物質(zhì)能利用技術(shù)產(chǎn)業(yè)政策環(huán)境與市場(chǎng)競(jìng)爭(zhēng)研究報(bào)告
- 2025年美妝行業(yè)個(gè)性化定制服務(wù)模式創(chuàng)新案例研究報(bào)告
- 藝術(shù)市場(chǎng)數(shù)字化交易平臺(tái)在藝術(shù)品市場(chǎng)風(fēng)險(xiǎn)預(yù)測(cè)與防范中的應(yīng)用報(bào)告
- 市政工程監(jiān)理規(guī)劃范本
- 2022年南京中華中等專業(yè)學(xué)校教師招聘筆試題庫(kù)及答案解析
- 2021年廣東省歷史中考試題及答案
- 《大學(xué)物理》課程教學(xué)大綱
- 房地產(chǎn)項(xiàng)目規(guī)劃設(shè)計(jì)部工作流程圖
- 建筑安全生產(chǎn)自查臺(tái)賬(建筑施工)
- 人教版 小學(xué)音樂下冊(cè) 一至六年級(jí)全套精品教案(1-6年級(jí)全套合集)
- 單招計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)
- 承臺(tái)模板及支架檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
- 地圖世界地圖(全套可編輯地圖)課(40張)課件
- 某機(jī)械廠員工手冊(cè)(詳細(xì))
評(píng)論
0/150
提交評(píng)論