Matlab 與檔案系統的關係,就如同文字操作介面一樣,
有 工作區 (current directory) 與可執行檔的 搜尋路徑 (path) 這些概念。
在 Matlab 中下指令 cd (current directory) 或 pwd (present working directory)
都會看到 Matlab 目前設定的工作區。
若在 cd 指令之後跟著寫檔案系統的相對或絕對檔案夾路徑名稱,
就會將工作區設定到那個檔案夾去。
至少目前就我所知,Matlab 尚未能正確接受中文檔名。
如果檔案名稱中含有空格,要用單引號將它括起來。
例如,在我的個人電腦裡面,原本的工作區在
C:\Matlab\bin,但是我將它改到 C:\My Documents 去
(通常在桌面上看到的資料夾名稱是【我的文件夾】)。
>> cd C:\MATLAB\bin >> cd 'C:\My Documents' >> cd C:\My Documents |
指令 ls 或 dir 都會列出工作區中的所有檔案。 而 what 只會列出 Matlab 認得的檔案,它們包括 M 檔案、MAT 檔案和 MEX 檔案。 所謂 M 檔案,就是副檔名為 M 的檔案;MAT 與 MEX 亦同。
如果在前述指令之後指定一個檔案夾,則 Matlab 會列出那個檔案夾裡面的檔案。每當我們要求 Matlab 讀或寫任何檔案的時候,它都在工作區中讀或寫。 除非在指令中額外規定檔案的路徑。 有關 Matlab 所讀寫的檔案,請看 輸出輸入 篇。
Matlab 的指令有一小部份由特殊符號組成,例如 + - * / \ ' ^ 和它們的逐項版本 (pointwise version)。 遇到這些符號的時候,Matlab 該做什麼,已經寫在 Matlab 的核心程式 (kernel) 裡面, 這是一個有 MathWorks 公司出售的可執行檔,以我的 PC 為例,這個檔案是
除了符號以外,其他的 Matlab 指令都以英文字串的形式出現。 這些字串就是 Matlab 的指令名。 指令的命名規則與變數的命名規則相同,請參考 變數 篇。 而 Matlab 的指令有分以下四種形式:
當 Matlab 拿到一個字串,它的解讀規則如下:
所謂搜尋路徑是一個序列的檔案夾,按照記錄的先後順序排序。
用指令 path 看到目前設定的路徑。
通常我們不需要刪改這個內定的路徑,只需要增添新的檔案夾進去。
例如想要增添 C:\My Documents\Matlab 進入路徑,說
>> path('c:\my documents\matlab', path) |
>> path(path, 'c:\my documents\matlab') |
當 Matlab 取得了路徑之後,就
??? Undefined function or variable |
那要怎樣知道一個字串是變數呢?還是內建指令?還是某個程式或函式呢?
用 which 指令來問。例如
>> which inv inv is a built-in function. >> which which which is a built-in function. >> which tic c:\matlab\toolbox\matlab\timefun\tic.m >> which ans ans is a variable. |
萬一有同名的指令呢?按照上面的規則,如果有同名的變數或指令, 則優先被認定為變數,其次是內建指令,依此類推。 由此可見,似乎優先權比較低的指令永無出頭之日。其實不然。 這種情況很少發生,我們只簡述一個例子。 看 help inv,得知還有其他同名的指令 (overloaded methods) sym/inv、ss/inv 等等。 用 which sym/inv 看看它是哪個程式, 再用 help sym/inv 看看它是做什麼的?
單維彰