不要使用現有函式名稱命名變數
已經有一個功能 sum()
。因此,如果我們為具有相同名稱的變數命名
sum = 1+3;
如果我們嘗試在變數仍然存在於工作空間中時使用該函式
A = rand(2);
sum(A,1)
我們會得到一個神祕的錯誤 :
Subscript indices must either be real positive integers or logicals.
clear()
首先變數然後使用該函式
clear sum
sum(A,1)
ans =
1.0826 1.0279
我們如何檢查一個函式是否已經存在以避免這種衝突?
使用 which()
和 -all
標誌:
which sum -all
sum is a variable.
built-in (C:\Program Files\MATLAB\R2016a\toolbox\matlab\datafun\@double\sum) % Shadowed double method
...
這個輸出告訴我們 sum
首先是一個變數,並且下面的方法(函式)被它遮蔽,即 MATLAB 將首先嚐試將我們的語法應用於變數,而不是使用該方法。