2-6 jM|

在前一節中,myTest.m 所在的目錄是「d:\matlabBook\MATLAB程式設計:入門篇\02-初探MATLAB」。如果不先進入這個目錄,MATLAB 就找不到您要執行的 M 檔案。如果希望 MATLAB 不論在何處都能執行 myTest.m,那麼就必需將「d:\matlabBook\MATLAB程式設計:入門篇\02-初探MATLAB」加入 MATLAB 的搜尋路徑(Search Path)上。

基本上,每次 MATLAB 遇到一個指令(例如 myTest)時,其處置程序為:

  1. 檢查 myTest 是否為使用者定義之變數。若是,則取用之;若不是,進入下個步驟。
  2. 檢查 myTest 是否為永久常數。若是,則取用之;若不是,進入下個步驟。
  3. 檢查 myTest 是否為目前目錄之的 M 檔案。若是,則取用之;若不是,進入下個步驟。
  4. 檢查 myTest 是否為搜尋路徑下的 M 檔案。若是,則取用之;若不是,進入下個步驟。
  5. 若不是,則 MATLAB 發出錯誤訊息。

若要檢視 MATLAB 已設定的搜尋路徑,鍵入 path 指令即可:

>> path MATLABPATH C:\Users\RogerJang\Documents\MATLAB C:\MATLAB\SupportPackages\R2014a\appdata_496a640efaac0abd C:\MATLAB\SupportPackages\R2014a\webcam C:\MATLAB\SupportPackages\R2014a\webcam\private\win64 ......

當然,在螢幕上看到所有傳回的搜尋路徑內容,會依各別使用者所安裝的工具箱(Toolboxes)不同而有所差異。

若只要查詢某一特定指令所在的搜尋路徑,可用 which 指令,例如:

>> which demo C:\MATLAB\R2014a\toolbox\matlab\helptools\demo.m >> cd(matlabroot); % 跳到 MATLAB 的根目錄 >> which fact01 fact01 not found.

很顯然 「d:\matlabBook\MATLAB程式設計:入門篇\02-初探MATLAB」並不在 MATLAB 的搜尋路徑中,因此 MATLAB 找不到 fact01.m 這個 M 檔案:

要將目錄「d:\matlabBook\MATLAB程式設計:入門篇\02-初探MATLAB」加入 MATLAB 的搜尋路徑,可使用 addpath 指令:

>> addpath('d:\matlabBook\MATLAB程式設計:入門篇\02-初探MATLAB'); 此時目錄「d:\matlabBook\MATLAB程式設計:入門篇\02-初探MATLAB」已加入 MATLAB 搜尋路徑(請讀者自己鍵入 path 指令試看看!),因此 MATLAB 已經「看」得到 fact01.m: >> which fact01 d:\matlabBook\MATLAB程式設計:入門篇\02-初探MATLAB\fact01.m

現在我們就可以直接呼叫 fact01 這個函數,例如要計算 10!,可直接鍵入 fact01(10),而不必先進入 fact01.m 所在的目錄。

如果在每一次啟動 MATLAB 後,都要設定所需的搜尋路徑,將是一件很麻煩的事。有兩種方法,可以使 MATLAB 啟動後,即可載入使用者定義的搜尋路徑:

在 MATLAB 命令視窗下,輸入「command(‘string’)」和「command string」是完全等效的,因此「addpath('d:\matlabBook')」可以寫成「addpath d:\matlabBook」。此外,addpath 指令通常將目錄附加至搜尋路徑之前。若要將目錄附加於搜尋目錄之後,可使用「 addpath d:\matlabBook -end」。若要從搜尋路徑中移除目錄,可用 rmpath 指令,例如:「rmpath d:\matlabBook」。

除了使用命令列來增刪路徑外,您也可以由「路徑瀏覽器」(可由 MATLAB 的 pathtool 指令叫出)來進行搜尋路徑的新增或移除。

與目錄操作相關的指令,可列出如下:

欲呼叫 OS 的命令,可在 MATLAB 命令視窗下輸入驚嘆號及 OS 的命令。例如在微軟視窗作業系統下,「!dir」可將 DOS 命令「dir」的結果秀在 MATLAB 命令視窗內。


MATLAB程式設計:入門篇