首頁 > 軟體

怎麼確定matlab變數及函數的優先順序

2019-12-25 05:19:20

在使用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就是一個變數了。



IT145.com E-mail:sddin#qq.com