在前一節中,myTest.m 所在的目錄是「d:\matlabBook\MATLAB程式設計:入門篇\02-初探MATLAB」。如果不先進入這個目錄,MATLAB 就找不到您要執行的 M 檔案。如果希望 MATLAB 不論在何處都能執行 myTest.m,那麼就必需將「d:\matlabBook\MATLAB程式設計:入門篇\02-初探MATLAB」加入 MATLAB 的搜尋路徑(Search Path)上。
基本上,每次 MATLAB 遇到一個指令(例如 myTest)時,其處置程序為:
- 檢查 myTest 是否為使用者定義之變數。若是,則取用之;若不是,進入下個步驟。
- 檢查 myTest 是否為永久常數。若是,則取用之;若不是,進入下個步驟。
- 檢查 myTest 是否為目前目錄之的 M 檔案。若是,則取用之;若不是,進入下個步驟。
- 檢查 myTest 是否為搜尋路徑下的 M 檔案。若是,則取用之;若不是,進入下個步驟。
- 若不是,則 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 的預設搜尋路徑是定義在 matlabrc.m(在 MATLAB 的安裝目錄之下,依版本不同,也可能還放在子目錄之下,可用微軟檔案總管的搜尋功能來找此檔案),MATLAB 每次啟動後,即自動執行此檔案。因此您可以直接修改 matlabrc.m,以加入新的目錄於搜尋路徑之中。
- MATLAB 在執行 matlabrc.m 時,同時也會在預設搜尋路徑中尋找startup.m,若此檔案存在,則執行其所含的指令。因此我們可將所有 MATLAB 啟動時必需執行的指令(包含更改搜尋路徑的指令),放在此檔案中。
在 MATLAB 命令視窗下,輸入「command(‘string’)」和「command string」是完全等效的,因此「addpath('d:\matlabBook')」可以寫成「addpath d:\matlabBook」。此外,addpath 指令通常將目錄附加至搜尋路徑之前。若要將目錄附加於搜尋目錄之後,可使用「 addpath d:\matlabBook -end」。若要從搜尋路徑中移除目錄,可用 rmpath 指令,例如:「rmpath d:\matlabBook」。
除了使用命令列來增刪路徑外,您也可以由「路徑瀏覽器」(可由 MATLAB 的 pathtool 指令叫出)來進行搜尋路徑的新增或移除。
與目錄操作相關的指令,可列出如下:
- pwd 指令可傳回目前工作目錄(pwd = present working directory)。
- cd 指令可改變目錄。
- dir指令可顯示(或傳回)目前工作目錄下的內容。
欲呼叫 OS 的命令,可在 MATLAB 命令視窗下輸入驚嘆號及 OS 的命令。例如在微軟視窗作業系統下,「!dir」可將 DOS 命令「dir」的結果秀在 MATLAB 命令視窗內。
MATLAB程式設計:入門篇