1. 程式人生 > >MATLAB 中有哪些命令,讓人相見恨晚?

MATLAB 中有哪些命令,讓人相見恨晚?

Matlab裡面應該多用向量運算,把迴圈語句轉變為向量運算會省很多時間,程式也更簡潔易讀。
比方說,一個名叫array數組裡面,你要將裡面大於1的都變成0,就不必用到迴圈:
array(array>1)=0;
把大於1小於3的變成0。
array(and(array>1,array<3))=0;
當然,還可以使用find,這個也很好用。
—————————————————————————————
另一個重要的技巧是delete/clf-plot-pause
用plot可以畫圖(注意記錄控制代碼),然後用delete刪掉特定圖象,或用clf清圖,再繪製,這可以在figure視窗產生動畫。但是如果只plot,往往只會在全部程式執行結束時顯示,這時候需要用pause讓figure完成影象的更新。drawnow貌似也可以,但是我比較喜歡用pause,能夠簡單地控制動畫的速度。
這會方便除錯和展示。這個技巧尤其適合使用matlab的圖形使用者介面設計功能時構造一個顯示執行狀態等資訊的figure。
—————————————————————————————
mathworks 有一個fig函式(不是系統自帶的,是別人編寫的),可以很容易地調整字型、尺寸以及繪圖是否有邊框等等,不必畫出來再自己手動調整。這對於寫論文的人來說會很方便。
——————————————————————————————
善用eval,可以讓你的程式的靈活度大大加強。尤其是在變數名的問題上。當然,這可能會對程式碼維護和除錯帶來麻煩。很多情況可以用其他方法代替。
@王備
指出了一個連結,值得一讀Alternatives to the eval Function
—————————————————————————————
save、load可以將部分或全部變數、結構體等存入mat檔案或從mat匯入workspace
global可以將變數變為全域性變數,在各函式之間共享。不過這不太好用,儘量慎用吧。
——————————————————————————————
exist可以檢測某目標(如變數)是否存在,減少一些麻煩。
——————————————————————————————
surf、mesh都很漂亮,不過surf之後記得用shading interp,看起來更漂亮。
——————————————————————————————
對於一些重複性的矩陣賦值,比如:1、2、3、4、1、2、3、4
可以使用repmat,將一個矩陣重複擴充套件為更大的矩陣。
——————————————————————————————
很多函式都有高階的用法,當使用到了,但又覺得有點麻煩的時候,不妨help一下,看看其他的用法。
總而言之,還是多上網搜尋,一般問題總有很好的答案。