MATLAB Language Do not name a variable with an existing function name


Example

There is already a function sum(). As a result, if we name a variable with the same name

sum = 1+3;

and if we try to use the function while the variable still exists in the workspace

A = rand(2);
sum(A,1)

we will get the cryptic error:

Subscript indices must either be real positive integers or logicals.

clear() the variable first and then use the function

clear sum

sum(A,1)
ans =
       1.0826       1.0279

How can we check if a function already exists to avoid this conflict?

Use which() with the -all flag:

which sum -all
sum is a variable.
built-in (C:\Program Files\MATLAB\R2016a\toolbox\matlab\datafun\@double\sum)   % Shadowed double method
...

This output is telling us that sum is first a variable and that the following methods (functions) are shadowed by it, i.e. MATLAB will first try to apply our syntax to the variable, rather than using the method.