MATLAB(1)——基本除錯方法(Debug)
之前經常用MATLAB,卻不小心停留在了舒適區,連基本的除錯方法都沒有掌握。本文主要是對MATLAB程式除錯中的一般方法進行總結,也是自己學習的記錄。全文大致分為三個段落: 1)程式碼內除錯; 2)斷點除錯方法; 3)指令除錯方法; 本文主要為個人學習總結,並借鑑了前人的經驗,相應連結在最後一併附上。 |
一、程式碼內除錯
A-列印變數
1 2 3 |
z=hilbert(testdata'); %
希爾伯特變換 a= abs (z) %
包絡線
fnor=instfreq(z); %
瞬時頻率
|
上面的程式碼,如果希望檢查a是否正常:去掉末尾的分號;,即可在Command Window檢視到對應的輸出資訊,特別是當變量出現在function時,如果不輸出,則在Workspace中無法直接檢視,此時該操作較方便。
B-區域性執行
1 2 3 |
z=hilbert(testdata'); %
希爾伯特變換
a= abs (z); %
包絡線
fnor=instfreq(z); %
瞬時頻率
|
如果希望對某一部分程式碼,進行除錯,則完全沒有必要每次都從頭執行,這時區域性執行較方便。仍是這段程式碼,如果希望僅僅執行高亮部分,則箭頭選中並按F9,此時程式僅僅執行高亮部分,可利用這個方法除錯區域性程式碼。
C-配合繪圖(該操作可以配合以下各類方法使用)
圖形比資料更易於觀察,在除錯過程中開啟Workspace中的變數(快捷鍵:Crtl + D),然後選擇plot,即可根據需求對資料進行繪圖,便於觀察特性:
例如選擇需要觀察的資料,分別選擇bar以及surf指令,即可繪製對應圖形:
是不是也算方便?
二、斷點除錯方法
除錯程式碼最經典的就是利用設定斷點的方法,此處給出對應快捷鍵:
- F12:設定/取消 斷點
- F10:單步執行
- F11:單步執行,且碰到function跳入函式內執行,F10則不會跳入,這是二者的明顯區別
- Shift + F11:跳入function之後,通過該指令推出function
- F5:執行相鄰兩次斷點見的所有指令,如:斷點在for迴圈中,則F5一次,迴圈執行一次
- Shift + F5:退出斷點除錯
三、指令除錯方法
A-keyboard +(return)
經常碰到一些情況,如:矩陣相乘A*B時(假設A已知,B需要運算得出),矩陣B的size難以確定,是用A*B還是A'*B難以確定,可不可以先計算B,運算完之後觀察B的特性,再確定用A還是A‘?keyboard可以解決這個問題。
keyboard顧名思義,就是鍵盤的意思,即:把控制權交給鍵盤。執行程式的過程中,把控制權交給鍵盤,如何再重新返回程式呢?因此:
keyboard 與 return
通常聯合使用。如執行:
1 |
max_eig
= max ( eig (G '*pinv(F)*G)
); %此處難以確定,還是max_eig = max( eig(G*pinv(F)*G' )
)
|
1 |
P_tmp
= real (m+1
- max_eig);
|
但難以確定G還是G’,利用keyboard則可以修改為:
1 2 3 |
keyboard
P_tmp
= real (m+1
- max_eig);
|
在進入K>> 之後,此時已經可以觀察F、G的size,因此在Command Windows輸入:
1 2 |