使用者編寫完m檔案後,還有最後一項任務要完成:關閉檔案,刪除臨時檔案等。matlab提供了乙個函式用作後面的清理,有點類似於物件導向語言中的析構函式,這就是oncleanup
cleanupobj =oncleanup(cleanupfun)
其中cleanupfun是乙個函式控制代碼(無輸入值),當cleanupobj被清理時呼叫cleanupfun。因此cleanupobj必須有,如果沒有就會有警告(一般來說,這個函式是在m結束後呼叫,但是這個也不盡然,只要是這個cleanupfun被清理了,就會呼叫cleanupfun。因為在m檔案結束後,所有的臨時變數會被清理,所以m檔案結束後就會自動呼叫cleanupfun)
另外,在乙個m檔案中可以有多個oncleanup語句,當相應的變數被清理時,它們都會執行。由於變數清理的順序不能確定,所以它們執行的順序也不能確定。如果對執行順序有要求,最好把它們都放到乙個清理函式中吧。
function
y = add2
(x)y = x + 2;
c = oncleanup(@hello);
function
hello
fprintf
('hello\n');
執行
d=add(3);
輸出
hello
function [y,c] = add2
(x)y = x + 2;
c = oncleanup(@hello);
function
hello
fprintf
('hello\n');
「
執行
[d,c]=add(3);
無輸出
此時執行
clear c
輸出
hello
從例子2,大家明白了返回值得重要性了吧
清理函式(就是上面的那個cleanupfun)是乙個無輸入值得函式,如果大家想給清理函式傳遞引數,怎麼辦?
用匿名函式!
c = oncleanup( @() fclose('file.m'));
再比如
c = oncleanup(@()function
(input)
)
matlab 程式除錯
在程式除錯時,程式執行中變數的值是乙個重要的線索。因此,檢視變數值是程式除錯的重要線索,由於在函式呼叫時只返回最後的輸出引數,而不返回中間變數,因此,可以選擇下面的方法檢視程式執行中的變數值。1 通過分析,將可能出錯的語句後面的分號刪除,將結果顯示在命令視窗中,與預期值進行比較。2 利用函式disp...
matlab程式 入門
imshow uint8 xx title 重構圖 x imread flower.jpg image x colormap map title 原始影象 畫出原影象 x rgb2gray x hv rgb2hsv x 可以通過下面的程式看一幅圖的hsv三個通道 h hv 1 s hv 2 v hv...
matlab練習程式(c c 呼叫matlab)
就我目前了解的c 呼叫matlab有兩種方法。第一種是通過matlab引擎呼叫,也就是這裡用到的方法。第二種是用matlab將m檔案編譯為相應的h lib dll檔案再加以呼叫。使用engine所用到的h和lib檔案基本在d program files matlab r2010b extern裡面,...