亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

有關(guān)matlab數(shù)據(jù)分析 matlab內(nèi)存不足的解決方法

【有關(guān)matlab數(shù)據(jù)分析 matlab內(nèi)存不足的解決方法】如果有人問你何為一個好的Matlab程序?你是不是會說耗時少、消耗內(nèi)存小、可讀性高、可靠性強(qiáng),可移植/維護(hù)/拓展等等 。那么,你最在意是哪條呢?

有關(guān)matlab數(shù)據(jù)分析 matlab內(nèi)存不足的解決方法

文章插圖
通常Matlab程序并不是最終產(chǎn)品 , 僅是產(chǎn)品開發(fā)流程中的一個中間驗證環(huán)節(jié),不需要直接面向廣大消費(fèi)者 。此時,你通常會不注重Matlab對內(nèi)存的消耗,直接使用其默認(rèn)的占八個字節(jié)的雙精度數(shù)據(jù)類型 。如果編程時遇到內(nèi)存消耗和耗時出現(xiàn)沖突時,你還會以付出內(nèi)存為代價來減少仿真時間 。
開發(fā)效率屬于高效編程的范疇,如果你是為了驗證一個問題而臨時編程,以后不會再用的話,就沒必要耗費(fèi)過多的精力在高效編程上 。但是,如果Matlab仿真耗時的多少會嚴(yán)重影響到整個產(chǎn)品的開發(fā)進(jìn)度,那么減少仿真時間就十分必要了 。
今天,我們將和大家聊一聊在兼顧其他優(yōu)良編程習(xí)慣的同時可以在減少M(fèi)atlab仿真耗時上的“小常識” 。在探討之前,我們首先要知道如何評估一段程序仿真需要的時間 。
評估運(yùn)行時間的方法最簡單的方法就是在你需要計算的代碼前加tic,在代碼后加toc,測算tic和toc之間代碼的耗時 。但是,如果你需要詳細(xì)統(tǒng)計程序中每個函數(shù)的耗時,那么你還可以采用profile工具來評估 。
數(shù)據(jù)類型的選擇在大多數(shù)情況下,Matlab數(shù)據(jù)類型為占用8個字節(jié)的雙精度型,這除了會占用較多內(nèi)存,還可能拖慢程序的運(yùn)行速度 。其實常用的數(shù)據(jù)類型除了數(shù)值型,還有邏輯型(logical)、字符型(char)、結(jié)構(gòu)體型(struct)等等 。數(shù)值型包括整型、單精度型和雙精度型,整型又可分成多種 。
不同的數(shù)據(jù)類型在存儲和訪問效率上各不相同,選擇合適的數(shù)據(jù)類型除了可以節(jié)省內(nèi)存空間,還可以提升運(yùn)行速度 。另外,某一個變量在改變數(shù)據(jù)類型時會消耗額外的時間 , 因此還不如重新建一個新變量 。
預(yù)分配內(nèi)存我們知道Matlab可以在不定義變量時可以直接賦值,這種規(guī)則給我們帶來了方便,但同時也帶來了一些容易被忽視的問題 。在循環(huán)體中,如果沒有預(yù)先為某一矩陣分配內(nèi)存空間,而該矩陣會隨著循環(huán)變化 , 那么它將在每次循環(huán)時都浪費(fèi)額外的時間去尋找滿足需求的內(nèi)存空間 , 將改變大小后的矩陣整體移動到這個新的內(nèi)容空間中 , 并釋放原來的內(nèi)存空間,這除了會影響代碼的運(yùn)行效率,還容易形成內(nèi)存碎片,讓程序越來越難找到滿足條件的內(nèi)存 。
因此在循環(huán)前給矩陣預(yù)分配內(nèi)存是很一個良好的習(xí)慣,如果沒有這個習(xí)慣,你還可以通過Matlab自帶的代碼檢查器來查看是否存在類似問題 。
列優(yōu)先在Matlab中矩陣的存儲是按列優(yōu)先的,并且下標(biāo)是從1開始的,這二點(diǎn)是與C++是不同的 , 需要初學(xué)者稍加注意 。對于矩陣的操作,可以通過下標(biāo)索引,也可以通過線性索引來訪問元素,由于Matlab是按列優(yōu)先存儲的,則其線性索引是按列遞增的 。如果處理時按列操作會比按行操作提升程序的運(yùn)行效率哦 。
向量化編程代替“循環(huán)”矩陣運(yùn)算是Matlab的優(yōu)勢 , 因此能用矩陣就少用循環(huán)吧,即使Matlab對循環(huán)引入了加速技術(shù)JIT和accelerator 。當(dāng)然也不需要一味的追求矩陣運(yùn)算,循環(huán)可以用,但需要考慮循環(huán)體內(nèi)的代碼執(zhí)行方式 。例如循環(huán)次數(shù)多的盡量在內(nèi)層,少的在外層 , 每次循環(huán)做較多的數(shù)據(jù)處理,盡量減少循環(huán)次數(shù) 。
Matlab在矩陣運(yùn)算中極為快速,是因為其底層調(diào)用了BLAS庫和LAPACK庫 。LAPACK是高性能線性代數(shù)計算庫,用于求解科學(xué)與工程計算中常見的線性代數(shù)問題 , 例如矩陣乘法、線性最小二乘問題、特征值問題等 。BLAS庫是基礎(chǔ)線性代數(shù)程序集 。
并行編程并行處理大家并不陌生 , 這個將在后面重點(diǎn)介紹,今天就不展開了 。


    以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

    「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: