第16章matlab程序調試、優(yōu)化和出錯處理_第1頁
第16章matlab程序調試、優(yōu)化和出錯處理_第2頁
第16章matlab程序調試、優(yōu)化和出錯處理_第3頁
第16章matlab程序調試、優(yōu)化和出錯處理_第4頁
第16章matlab程序調試、優(yōu)化和出錯處理_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、技術凝聚實力技術凝聚實力 專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版 第16章 程序調試、優(yōu)化和出錯處理 l程序調試的重要性毋庸置疑,有時調試工作所占用的時間甚至遠超 過程序設計、代碼編寫所用時間。MATLAB的程序調試功能強大,較 之于VS、BC等更加簡潔、方便,具有更好的所見即所得特性,這些 內容將在第16.1節(jié)作詳細介紹。 lMATLAB程序是能夠完成指定功能的代碼集合,完成指定的功能當然 是程序的重要目標之一,但往往還不是最重要的目標。在資源(時 間、內存及其他相關設備資源)有限的條件下,決定程序質量好壞 的標準往往是程序的性能,當然還包括程序界面等。程序的性能指 標主要是指完成指定功能所需的時間和內存

2、。第16.2節(jié)中給出了一 些MATLAB程序優(yōu)化應該遵循的原則及要注意的事項,這些都可以在 某種程度上提高MATLAB程序性能。另外本節(jié)還介紹了MATLAB的性能 分析工具,利用該工具可以更客觀地度量程序的性能。 技術凝聚實力技術凝聚實力 專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版 16.1 調試 lMATLAB是一種邊解釋邊執(zhí)行的程序語言,這為程序的調 試提供了眾多的便利,尤其要強調的是其良好的所見即 所得特性,更是VS、Eclipse等所不能比擬的。除了內 置的一系列調試函數(shù)之外,MATLAB還提供了專門的 MATLAB調試器(即M文件編輯器),通過該調試器、結 合調試函數(shù),用戶可以完成大部分的調試工作。

3、l本節(jié)首先介紹調試的基本任務,接著詳細討論調試函數(shù)、 MATLAB調試器及其相關的調試技術,最后對MATLAB中的 錯誤和警告及其相關的調試技術進行了簡要介紹,它們 在第16.3節(jié)出錯處理中有重要應用。 技術凝聚實力技術凝聚實力 專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版 16.1.1 調試的基本任務 l程序調試的概念源于英文術語“Debug”,意為找到、去除程序中的“bug”(bug 可以簡單地理解為錯誤)。對大部分程序,可能存在的bug可以大致分為如下三類。 語法錯誤 l邏輯錯誤 l異常 l語法錯誤是由于程序員疏忽等原因而造成代碼違背程序語言規(guī)則,這是初學者經常 犯的一類錯誤。一般地,編譯器能夠找到大部分的

4、語法錯誤,MATLAB編譯器更是如 此,在某種程度上這是由于MATLAB語言較C+、Java等語法相對簡單的緣故。 l邏輯錯誤主要是由于程序員對問題求解的程序流程或程序語言本身特性認識有誤差 而造成程序執(zhí)行結果(包括中間結果)出現(xiàn)錯誤。一般來說,編譯器對這類錯誤無 能為力,MATLAB編譯器也不例外。邏輯錯誤也是大部分程序調試的主要工作。 技術凝聚實力技術凝聚實力 專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版 16.1.2 調試函數(shù) lMATLAB內置了一系列的調試函數(shù),用于程序執(zhí)行過程相關的顯示、執(zhí)行中 斷、斷點設置、單步執(zhí)行操作等。通過在MATLAB命令窗口輸入以下指令: l help debug l用戶可以

5、查詢到這些調試函數(shù),它們均以db開頭, Debug函數(shù)及其說明 函 數(shù) 名功 能 dbstop設置斷點 dbclear清除斷點 dbcont重新執(zhí)行 dbdown變更本地工作空間上下文 dbmex使MEX文件調試有效 dbstack列出函數(shù)調用關系 dbstatus列出所有斷點 dbstep單步或多步執(zhí)行 dbtype列印M文件(包括行號) dbup變更本地工作空間上下文 dbquit退出調試模式 技術凝聚實力技術凝聚實力 專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版 16.1.3 MATLAB調試器 l但前面利用MATLAB調試函數(shù)對MATLAB程序進行調試還有一些不足之處: l不夠簡便,需要輸入過多的調試代碼

6、; 不夠直觀; 對具有多重函數(shù)調用的大 型程序不使適用。 l用戶也許希望擁有像VS類似的、具有圖形用戶界面的調試器,為此MATLAB提供了專 門的MATLAB程序調試器,該調試器很好集成在M文件編輯器之中,具有良好的所見 即所得特性,操作控制簡單方便,功能強大,下面將為用戶詳細介紹其特性及使用 方法。MATLAB調試器集成在文件編輯器的調試工具欄,包括7個調試按鈕和一個空 間堆棧下拉框, 技術凝聚實力技術凝聚實力 專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版 16.1.4 警告和錯誤 lMATLAB程序在執(zhí)行過程中若遇到語法錯誤或異常,則會拋出錯誤或 警告。錯誤和警告信息中包含了錯誤和警告發(fā)生的代碼行行號,由 此

7、可以迅速地找到MATLAB程序中的語法錯誤或異常,下面通過一個 簡單的例子說明警告、錯誤相關的除錯技術。 技術凝聚實力技術凝聚實力 專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版 16.2 性能優(yōu)化 l廣義上來說,程序性能的范疇不僅包括程序的時間效率 (即執(zhí)行效率)和空間效率(主要指內存使用效率), 還涉及程序的穩(wěn)定性、可靠性、適應性等多種指標。但 本節(jié)僅討論狹義的程序性能,即程序的執(zhí)行效率和內存 使用效率,及相關的性能優(yōu)化技術。 l從理論上分析程序的性能不是本節(jié)所要討論的內容,這 里首先介紹MATLAB的程序性能分析工具Profiler,用以 衡量程序的性能,并在后續(xù)的內容中驗證相關性能優(yōu)化 技術的效果;隨后的兩

8、節(jié)分別討論執(zhí)行效率優(yōu)化和內存 優(yōu)化相關的技術。 技術凝聚實力技術凝聚實力 專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版 16.2.1 性能分析 l查找程序性能瓶頸是提升程序性能的第一步。MATLAB提供的碼表 (stopwatch)能夠給出指定代碼運行的時間,通過比較不同代碼 的運行時間,用戶可以粗略分析程序的性能。下面是碼表的一個簡 單使用示例,通過該例子可以很容易地理解碼表的使用方法。 技術凝聚實力技術凝聚實力 專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版 16.2.2 效率優(yōu)化技術 l一般地,用戶在初次編寫代碼時,不需要過多地考慮效率問題,而是將精力更多地放在程序的 結構、可讀性等方面,大部分的程序優(yōu)化工作是在程序性能分析之后

9、完成的。本小節(jié)主要討論 程序的時間效率優(yōu)化技術,接下來的小節(jié)將討論內存優(yōu)化技術,當然兩者在某些方面是重疊的。 下面列出了一些讀者可以借鑒的效率優(yōu)化建議: l代碼向量化,即將for、while循環(huán)轉為矩陣的按位運算,更詳細的內容可以參考第7章7.3.5矩陣 按位運算; l預分配足夠大的數(shù)組,而不是在for、while循環(huán)中增加數(shù)組的空間大??; l對不可避免且耗時很大的循環(huán)操作可以嘗試在MEX文件內實現(xiàn),更詳細的內容可以參考第20章; l盡量避免更改變量的數(shù)據類型或維數(shù),如有需要,建議事先創(chuàng)建一個新的變量; l盡量避免實數(shù)和復數(shù)之間的相互賦值; l盡量采用實數(shù)運算,對復數(shù)運算可以轉換為多個實數(shù)運算,由此能夠提升效率; l合理使用邏輯運算,注意 y = 2x; 技術凝聚實力技術凝聚實力 專業(yè)創(chuàng)新出版專業(yè)創(chuàng)新出版 16.4 小結 l本章對MATLAB程序的調試、優(yōu)化和出錯處理進行了詳細的討論,這些內容 都是讀者容易忽視,但又非常重要的內容。在平常的練習和實踐過程中,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論