Matlab 套裝軟體提供了一套程式語言, 而程式語言就是由
if | else | end | for |
---|---|---|---|
while | break |
還有一些保留字是我們現在不知道的,但是已經很少了。 程式語言的保留字並不太多。
算子都是以符號組成,我們現在知道不少算子,大致複習一下,有
= | + - * / | ^ | ; |
---|---|---|---|
( ) | [ ] | , | : |
' .' | .* ./ .^ | < > | <= >= |
== ~= | & | ~ |
還有一些算子是我們現在不知道的,但是已經很少了。 程式語言的算子也不太多。
Matlab 的函式就非常多了。 少部份最重要、最通用的函式放在「核心」裡面,稱為「內建函式」 (built-in function),其他的放在「工具箱」裡面,稱為「外掛函式」。 如何檢查一個函式是為內建還是外掛?用 which 後面跟著一個函式名,例如
which sin看到回應 sin is a built-in function. 所以知道 sin() 是內建函式。而
which trace或 which rank 或 which dot 得到一個檔案的絕對路徑, 這就表示 trace() 和 rank() 和 dot() 都是外部函式,外部函式寫在所謂的 M-file 裡面, 您看到的檔案全名也就是 M-file 的檔案名。
如果您在 [Matlab 的搜尋路徑] 那一節安裝了 foo.m 或是 eigshow.m, 那麼現在詢問
which foo會看到 Matlab 回應 foo.m 的絕對路徑。
當 Matlab 看到一個「字」,也就是像 if, sum, x 或 n 這樣的英文字串,它解讀這個「字」的優先順序是
if = 1;會造成錯誤訊息:if 是保留字,不能被定義成變數。
但是您卻可以將函式名 (不論內建還是外掛) 定義成變數,例如說
sum = 0;這是可以的,但是這樣做之後 sum 成了一口箱子,其值為 5050, 而如果您又要做
for n=1:100, sum = sum + n; end;
sum(1:100)就錯了,因為 sum() 函式的名字被變數名取代, Matlab 認為 sum 這個「字」代表一個變數,而不是一個函式。
萬一發生這種情況,只要清除那個同名變數即可。例如說
clear sum那麼 sum 這個「字」就恢復為內建函式 sum() 的名字。 但是,當然,剛才那個儲存 5050 的變數就不見了。
如果 Matlab 認定某個「字」是函式名字,那麼他按照以下順序去尋找那個函式
要如何自己寫函式?這是下一節的主題。 要如何知曉內建函式的名字? 那就只有多接觸 Matlab 了,使用久了就自然會知道更多。 必要的時候,用 which 問看看。
習題