2021-05-12 14:32:11
怎麼確定matlab變數及函數的優先順序
在使用matlab時,很容易出現相同的名稱的變數或函數,或者是不同工具包中存在同名的函數,那麼怎麼確定matlab呼叫的是哪個呢,這與matlab確定變數和函數的優先順序原理有關係,下面進行介紹。關於不同工具包中同名函數的呼叫問題可以參見: http://jingyan.baidu.com/article/1612d500a23a8ce20e1eee07.html
1
在matlab中,如果要呼叫一個函數,那麼這個函數必須在當前對談的matlab的可見範圍內(visible scope)。而且matlab在其可見範圍內按照一定的優先順序來確定呼叫哪個函數或變數。搜尋有限順序的關鍵是Matlab路徑(matlab path), matlab path是一個有序的資料夾路徑列表,你可以新增或刪除其中的某些路徑(關於怎麼新增刪除,可參見:http://jingyan.baidu.com/article/a3761b2ba6c1541577f9aa11.html)。matlab path對matlab的作用相當於windows系統中path環境變數對windows的作用。matlab從path裡面的第一個路徑根據被呼叫函數的函數名尋找函數,如果第一個路徑沒找到再去第二個路徑,直到找到為止。如果所有路徑都找完了,也沒找到,matlab就會報錯。如圖,我們在matlab命令視窗輸入任意一串字串aaaadfsgsdd,matlab會提示
Undefined function or variable 'aaaadfsgsdd'.
2
如圖是matlab幫助文件中給出的函數和變數的優先順序確定順序。順序如下:
1. matlab首先檢查給定的字串是不是當前工作空間的一個變來那個,如果是則停止搜尋;
2. 巢狀函數
3. 子函數
4. 私有函數
5. 類別建構函式(與以@開頭的資料夾中與@後面的字串相同的函數)
6. 過載函數
7. 當前路徑中的函數
8. 其他包含在matlab path路徑中的函數。
3
這裡需要指出的是matlab path中包含多個路徑,前面的比後面的路徑具有更高的優先順序,如圖,沿著箭頭方向,優先順序增加。可參見:http://jingyan.baidu.com/article/a3761b2ba6c1541577f9aa11.html
4
下面我們首先在matlab命令視窗中輸入下面的命令:
which ones
可以看見當前的ones是matlab預設提供的一個函數。
5
下面我們新建一個function(關於怎麼新建function請參見:http://jingyan.baidu.com/article/bad08e1ee102e409c8512107.html),並儲存到D槽的test資料夾下,取名為ones。程式碼如下:
function c=ones(a,b)
c=a+b;
end
再把當前路徑設定到D槽的test資料夾,如圖。
6
現在再次輸入命令
which ones
結果如圖。matlab顯示現在呼叫的ones是當前路徑中的ones函數,同時matlab會提示警告。
7
下面在在命令視窗輸入
ones=1
which ones
結果如圖,可以看出現在的ones就是一個變數了。
相關文章