1. 程式人生 > >除錯和執行matlab程式碼(源程式)的技巧和教程

除錯和執行matlab程式碼(源程式)的技巧和教程

本文主要給大家分享使用matlab編寫程式碼,完成課程設計、畢業設計或者研究專案時,matlab除錯程式的技巧和方法。

快速完成一個專案,最簡單的方法就是利用前人的開原始碼,然後根據自己專案的具體需求和引數,對已有程式碼進行除錯,並增加或刪減部分功能,最終實現自己專案的全部功能。所謂“站在前人的肩膀上”。

閒話少敘,我們先從最基本的matlab軟體安裝開始,已經成功安裝matlab軟體的可以直接跳過。

1. 正確安裝matlab軟體

下載matlab軟體

首先下載你想要安裝的matlab安裝檔案,建議不要下載過於陳舊的版本,至少應該是matlab2010之後的版本。因為隨著matlab版本的更新,增加了一些新的函式,並對不安全的函式使用進行了刪除。部分程式碼的除錯,可能由於過於陳舊的matlab版本,可能導致除錯報錯。

另外,請大家支援正版,在官網購買matlab軟體或者使用其30天免費試用版

當然購買官方正版比較適合商業應用,對於學生和科研用途,購買費用恐怕難以接受。請自行下載破解版。

安裝matlab軟體

下載軟體後的安裝方法比較簡單,這裡不再贅述,請大家移步百度經驗,搜尋“matlab安裝”,會有簡單明瞭的安裝教程。

安裝matlab的路徑,建議沒有中文字元或者空格。這樣可以盡最大可能減少程式執行時,由於中文路徑不識別導致的錯誤。

2. 下載的程式碼包裡的檔案都是幹什麼的?

當我們從網路上下載matlab的原始碼時(例如:專注matlab程式碼下載的網站www.downma.com),得到的通常是程式碼的壓縮包,裡面包括很多各種字尾的檔案。他們都是什麼檔案呢,都是幹什麼用的?

m字尾的檔案:這是matlab程式碼的最常用字尾,就像C++的常用字尾是cpp一樣。只要看到.m檔案,你就知道這個是matlab的程式碼。和C++不同的是,很多matlab的自定義函式,也是單獨定義在m檔案中的。

fig字尾的檔案:這個是matlab輸出的繪圖結果儲存的檔案,儲存著各種模擬結果的曲線。此外,GUI的圖形使用者介面也是以fig檔案的形式儲存的。

asv字尾的檔案:這個是matlab對使用者編輯時間較長的m檔案自動儲存的檔案。對程式碼的執行不起作用,是可以刪除的。

mdl字尾的檔案:Simulink是matlab的另外一個強大的模擬功能。與程式碼方式進行模擬的m檔案不同,mdl檔案主要是通過各種Simulink的模組,進行實時模擬的檔案。

mat字尾的檔案:mat檔案是用來儲存資料的,可以理解為matlab的小型資料庫。儲存形式類似於excel表格,可以直接載入到程式中,變成相應的變數,也可以作為程式輸出結果的儲存檔案。

p字尾的檔案:p檔案是為了保護智慧財產權設計的一種加密檔案,是不能檢視的。其作用和m檔案類似,封裝了自定義函式,不可以刪除。

txt、doc的檔案:有一些程式碼包會同時攜帶說明檔案,包括程式的用途和引數,還包括程式執行時的注意事項等。還有一些簡單的matlab程式碼,直接儲存到文件裡。可以直接複製到matlab中,儲存為m檔案,進行除錯和執行。

還要一些檔案不是程式碼部分,而是程式要處理的原始檔。例如,圖片檔案jpg,bmp,gif;視訊檔案avi;音訊檔案wav等。這些檔案的位置不要輕易改變,否則會影響到程式對這些原始檔的呼叫。

在有些情況下,程式碼包裡還有一些cpp、h字尾的C++檔案。這些程式碼通常是matlab和C++進行混合程式設計時使用。如果你的專案重點不是混合程式設計,忽略即可,但是不要刪除。

3. 怎麼正確啟動主程式?

Matlab的工作目錄設定

很多人都說,網上下載的程式碼怎麼都執行不起來,各種報錯?其實,是你的開啟方式不對

最重要一點:你的“matlab當前工作目錄”一定要是你下載的程式碼壓縮包解壓後的資料夾!因為通常matlab的預設工作目錄,並不是你的程式碼所在資料夾。當然,你也可以把所有程式碼都解壓到matlab的預設工作目錄裡。

matlab程式碼工作目錄

怎麼找到主程式檔案?

如果你下載的程式碼具有圖形使用者介面GUI,那麼通常情況下.fig檔案就是這個程式碼的主程式,你只要在確保工作路徑正確的情況下,在命令視窗輸入xxx.fig,然後回車即可。這樣使用者介面就會彈出來了。

如果你下載的是Simulink模型程式碼,確保mdl檔案在工作路徑,然後在命令視窗輸入Simulink,回車後即開啟Simulink軟體,開啟mdl檔案即可,然後點選除錯執行mdl檔案。此外,還直接執行mdl檔案,在命令視窗輸入sim(’xxxx.mdl’, Trange)其中Trange是模擬時間。

大多數情況下,你下載的是m檔案組成的matlab模擬程式碼。這個時候,只要找到主程式的m檔案,開啟點選除錯執行按鈕即可(或者直接按F5或F9)。或者在命令視窗輸入主程式的檔名,例如xxx.m或run xxx.m,回車即可執行。

當然,如何找到主程式m檔案就至關重要了:

首先,如果程式碼包裡提供了說明文件,請參照說明文件找到主程式。

如果程式碼包中沒有說明文件指出哪個程式碼是主程式,通常可以通過m檔案的命名方式判斷。例如以main.mtest.m或中文命名的m檔案就是主程式檔案。

如果上面的方法不能幫你找到主程式碼檔案,你就需要逐個m檔案開啟,通過程式碼的內容來判斷是否是主程式碼了:

如果有m檔案是以clear allclc等清空命令開始的,通常這個檔案就是主程式檔案;

如果有m檔案的開始包含很多關於引數和程式用途的註釋部分,通常這個檔案就是主程式檔案;

如果有m檔案不是自定義函式,即不是以function開頭的m檔案,通常這個檔案就是主程式。因為以function開頭的多數情況下是自定義函式,僅作為被呼叫使用;

如果所有的m檔案都是自定義函式,那就表示程式碼的主程式檔案是以自定義函式的形式出現的。這個時候那個沒有輸入引數的自定義函式檔案,就很有可能是主程式檔案了;

如果所有的m檔案都是自定義函式,而且都包含輸入引數,很有可能你下載到的是一個工具箱,沒有主程式,需要你根據需要自己編寫主函式,呼叫這些自定義函式檔案。

此外,使用自定義函式的m檔案,一定不是把程式碼全部貼上到命令視窗執行的,而是要使用引數呼叫的。

當然,主程式的m檔案可能不止一個,也就是說程式碼包裡包含多個不同功能的主程式。

4. 常見報錯及解決方法

錯誤1:圖片或聲音檔案不存在

當你執行主程式後,命令視窗提示類似unable to find file或者file xxx doesn’t exit的錯誤,通常是因為缺少圖片或聲音等原始檔導致的。

例如作者在上傳程式碼時,僅僅包含了程式碼部分,沒有包含要處理的圖片或聲音檔案,這時候會出現找不到檔案的錯誤。我們找到程式碼中載入圖片或聲音檔案的語句,例如imread、wavread等語句。然後根據需要的圖片或聲音檔案,自己補充這個原始檔。

錯誤2:函式不存在

當你執行主程式後,命令視窗提示類似Undefined function or method的錯誤,通過是某個自定義的函式檔案丟失或者工作路徑不正確導致的。你要反覆確認這個自定義函式的m檔案是否包含在matlab的工作路徑內,然後確認當前版本的matlab軟體是否自帶該函式。