官术网_书友最值得收藏!

2.4 編程技巧

2.4.1 測定程序執行時間

測定程序執行時間通常是使用tic和toc函數,tic用于啟動秒表,toc用于停止秒表。

例2-16】 建立一個100×100的魔方矩陣,并測定運行時間。

運行后在命令行窗口觀察運行結果為:

由于計算機的運算速度不同,所耗時間會不同。

2.4.2 程序的優化

畢竟MATLAB是一種解釋性語言,同其他解釋性語言一樣,都存在著執行速度不夠理想的問題。下面是一些加快MATLAB程序執行的方法。

(1)避免使用循環

MATLAB的一個不足是對矩陣的單個元素進行循環操作時運算速度很慢,應盡量避免使用循環。編程時,盡量對矩陣或矢量編程,把循環矢量化,這樣不僅能夠縮短程序長度,而且能提高程序執行效率。在必須使用多重循環的情況下,若兩個循環執行的次數不同,則應在循環的內層執行次數多的,外層執行次數少的。

(2)對大型矩陣預先定義維數

在程序執行的過程中,有時要動態改變矩陣的維數,這將非常浪費時間。為此,應在定義大矩陣時,首先用函數(如zeros或ones)對矩陣定義好維數,然后再進行賦值,這樣會提高程序的運行效率。

(3)優先使用內層函數

矩陣運算要首先考慮使用MATLAB內層函數,因為內層函數是由更底層的 C 語言構成,執行速度快于使用循環的矩陣運算。

(4)考慮接口語言

MATLAB支持同其他語言進行編譯連接,如果已經采取了相應的措施,程序執行速度仍然很慢,則應考慮使用C語言或FORTRAN語言進行編程,然后編譯連接,這樣能顯著地提高程序的運行速度。

例2-17】 分別用循環和矩陣,計算1~10000整數的正弦值,并測定程序運行時間。

程序1:使用循環

運行后在命令行窗口觀察運行結果為:

程序2:使用矩陣

運行后在命令行窗口觀察運行結果為:

主站蜘蛛池模板: 长白| 通辽市| 乌兰察布市| 布尔津县| 肇庆市| 上蔡县| 灌南县| 红桥区| 鄂温| 河池市| 临泉县| 格尔木市| 廉江市| 伊春市| 富蕴县| 诸城市| 金坛市| 平昌县| 军事| 南投市| 兴山县| 永和县| 铜川市| 通山县| 离岛区| 七台河市| 永登县| 霍州市| 凤台县| 黄浦区| 遂昌县| 田林县| 云浮市| 大渡口区| 闵行区| 当阳市| 花莲市| 克拉玛依市| 三江| 宜宾市| 黑水县|