3.Function definitions are not permitted at the prompt or in scripts
中文解釋:不能在命令視窗或者指令碼檔案中定義函式
出錯原因:一旦在命令視窗寫 function c = myPlus(a,b),此錯誤就會出現,因為函式只能定義在 m 檔案中。關於指令碼檔案和 m 檔案的區別請查閱 matlab 基礎書。簡言之: 1) 如果你寫成 function 的形式,那麼必須寫在 m 檔案中,且以 function 開頭(即 function 語句前不能包含其他語句,所有語句必須放在 function 中,當然,function 的定義可以有多個,各 function 之間是並列關係,不能巢狀);, 2) 如果你寫成指令碼的形式,則既可以寫在命令視窗中,也可以寫在 m 檔案中,但兩者均不能包含 function 語句(即不能進行函式的定義)
解決辦法:新建一個 m 檔案,然後再進行函式的定義
4.One or more output arguments not assigned during call to ”…”
中文解釋:在呼叫…函式過程中,一個或多個輸出變數沒有被賦值
出錯原因:函式如果帶有輸出變數,則每個輸出在返回的時候都必須被賦值。容易出現這個錯誤的兩個地方是:在部分條件判斷語句(如 if )中沒有考慮到輸出變數的返回值。
MATLAB常見語法錯誤分析及解決辦法
1.Subscript indices must either be real positive integers or logicals
中文解釋:下標索引必須是正整數型別或者邏輯型別
出錯原因:在訪問矩陣(包括向量、二維矩陣、多維陣列,下同)的過程中,下標索引要麼從 0 開始,要麼出現了負數。注:matlab 的語法規定矩陣的索引從 1 開始,這與 C 等程式語言的習慣不一樣。
解決辦法:自己除錯一下程式,把下標為 0 或者負數的地方修正。
2.Undefined function or variable “U”
中文解釋:函式或變數 U 沒有定義
出錯原因及解決辦法:可能變數名輸入錯誤,仔細檢查 3.Matrix dimensions must agree
中文解釋:矩陣的維數必須一致
出錯原因:這是由於運算子(= + - / * 等)兩邊的運算物件維數不匹配造成的,典型的出錯原因是錯用了矩陣運算子。matlab 透過“.”來區分矩陣運算和元素運算。
解決辦法:自己除錯一下程式,保證運算子兩邊的運算物件維數一致。
3.Function definitions are not permitted at the prompt or in scripts
中文解釋:不能在命令視窗或者指令碼檔案中定義函式
出錯原因:一旦在命令視窗寫 function c = myPlus(a,b),此錯誤就會出現,因為函式只能定義在 m 檔案中。關於指令碼檔案和 m 檔案的區別請查閱 matlab 基礎書。簡言之: 1) 如果你寫成 function 的形式,那麼必須寫在 m 檔案中,且以 function 開頭(即 function 語句前不能包含其他語句,所有語句必須放在 function 中,當然,function 的定義可以有多個,各 function 之間是並列關係,不能巢狀);, 2) 如果你寫成指令碼的形式,則既可以寫在命令視窗中,也可以寫在 m 檔案中,但兩者均不能包含 function 語句(即不能進行函式的定義)
解決辦法:新建一個 m 檔案,然後再進行函式的定義
4.One or more output arguments not assigned during call to ”…”
中文解釋:在呼叫…函式過程中,一個或多個輸出變數沒有被賦值
出錯原因:函式如果帶有輸出變數,則每個輸出在返回的時候都必須被賦值。容易出現這個錯誤的兩個地方是:在部分條件判斷語句(如 if )中沒有考慮到輸出變數的返回值。
在迴圈迭代過程中部分變數的維數發生了變化。
解決辦法:除錯程式,仔細檢視函式返回時各輸出變數的值。更好的方法是:在條件判斷或者執行迴圈之前對所使用的變數賦初值。
5.Index exceeds matrix dimensions.
中文解釋:索引超出矩陣的範圍
出錯原因:在引用矩陣元素的時候,索引值超出矩陣應有的範圍 解決辦法:檢查所定義陣列的維數,和引用的範圍。
6.In an assignment A(I) = B, the number of elements in B and I must be the same
中文解釋:在賦值語句 A(I) = B 中,B 和 I 的元素個數必須相同
出錯原因:I 和 B 的維數、大小不一樣。這正如“把 5 個水果放到 6 個籃子”、或者“把 6 個水果放到 5 個籃子”,均無法實現
解決辦法:自己設定斷點除錯一下,看看 I 和 B 的維數、大小是否相同,不同的話就要修改成兩者一致