matlab程式效能優化與混合程式設計技術介紹

2022-03-21 20:37:15 字數 1251 閱讀 4705

matlab程式**優化,效能優化

matlab是一種強大的計算工具,方便的矩陣運算與工具箱為程式設計人員提供了極大的便利。但是其效能的缺失使得處理一些大計算量問題時顯得效率不高,matlab程式的優化應從幾個方面展開:

1.矩陣提前分配空間,矩陣第一次使用之後避免改變矩陣的維數。

2.盡量使用矩陣運算,少使用迴圈。

3.呼叫多次的計算**寫成函式形式,而不是寫在指令碼程式中,因為matlab中,函式是被翻譯成微碼的,執行效率更高。

4.如果無法避免使用迴圈,可以使用混合程式設計技術實現該段**,這種方法在迴圈次數很大時可以將效能提公升數十倍甚至上百倍。

5.對於特定的演算法,首先想到的不應是自己編寫**,而是檢視matlab幫助文件,在matlab自帶函式庫中尋找是否存在現成函式。這樣做有兩個方面考慮,一方面matlab自帶函式很多並不是真正的指令碼檔案,而是使用其他高階程式語言編譯成的函式檔案(這種函式檔案的顯著特點是開啟該函式對應的m檔案,會發現內容中只有注釋而沒有實際的**,熟悉混合程式設計的同學看到這點會很熟悉,因為進行混合程式設計時,一般會建立乙個和對應函式名相同的m檔案用於儲存注釋資訊。matlab的開發者也使用了這一規範,使用者所看到的只是該函式的注釋而已,實際的計算**是保密的)使用這些函式,遠比自己編寫要高效;另一方面,使用自帶函式,可以顯著提高開發效率,減少程式設計者的工作量。

綜合以上考慮,開發高效的matlab計算程式的步驟是:

1.需求分析:首先對所要實現的演算法進行劃分,哪些部分可以使用matlab的指令碼語言進行處理,哪些部分可以使用混合程式設計技術實現。我個人傾向於對於核心的計算**使用混合程式設計技術實現,資料的初始化、最後結果的視覺化等使用matlab的指令碼語言實現。這樣選擇的依據是核心計算**使用混合程式設計技術實現後,真正的**可以保密,對於使用者,僅需提供其編譯好的mex檔案。另一方面,資料初始化需要很多資料處理**,如果使用c語言實現,意味著大量的迴圈,而使用matlab可以用矩陣的方式處理而避免使用迴圈,程式設計容易而且不易出錯。最後,結果的視覺化一般需要呼叫底層的庫,而使用c語言實現這些呼叫顯然不如直接使用matlab容易。

3.模組耦合。通過第二步,我們已經獲得了所有計算模組,且各個模組都已經沒有bug,可以獨立執行了,但是模組獨立執行並不代表整個程式可以很好的工作,這一步所做的工作就是將各個模組進行耦合、拼接、除錯,直到各個模組執行完好。前面第二步如果處理的好,這一步將會十分容易,即使存在bug,由於各個模組間隔離的很好,可以很方便的進行修正。

matlab程式效能優化與混合程式設計技術介紹

matlab是一種強大的計算工具,方便的矩陣運算與工具箱為程式設計人員提供了極大的便利。但是其效能的缺失使得處理一些大計算量問題時顯得效率不高,matlab程式的優化應從幾個方面展開 1.矩陣提前分配空間,矩陣第一次使用之後避免改變矩陣的維數。2.盡量使用矩陣運算,少使用迴圈。3.呼叫多次的計算 寫...

優化程式效能

編寫高效程式需要兩個活動 第一,我們必須選擇一組最好的演算法和資料結構 第二,我們必須編寫出編譯器能夠有效優化以轉換成高效可執行 的源 這裡,我們主要講述後者。首先,我們討論一下為什麼要編寫高效程式。不難想象,如果本來要用 天執行完的程式,經過優化只需要 天就可執行完,這是一件多麼令人振奮的 事啊。...

優化程式效能

l 消除迴圈的低效率 n 對於迴圈中的過程呼叫盡量移出迴圈外,例如 nfor i 0 i strlen s i strlen 函式為線性增長 在字串長度很大時 很消耗系統資源 n 減少不必要的儲存器引用,將儲存器引用儲存在臨時變數中.l 處理器優化 即充分利用儲存器流水線操作的吞吐量 n 迴圈展開,...