MATLAB Language Non nominare una variabile con un nome di funzione esistente


Esempio

Esiste già una funzione sum() . Di conseguenza, se denominiamo una variabile con lo stesso nome

sum = 1+3;

e se proviamo a usare la funzione mentre la variabile esiste ancora nell'area di lavoro

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

otterremo l' errore criptico:

Subscript indices must either be real positive integers or logicals.

clear() prima la variabile e poi usa la funzione

clear sum

sum(A,1)
ans =
       1.0826       1.0279

Come possiamo verificare se esiste già una funzione per evitare questo conflitto?

Usa which() con il flag -all :

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

Questo output ci dice che sum è prima una variabile e che i seguenti metodi (funzioni) sono ombreggiati da esso, cioè MATLAB proverà prima ad applicare la nostra sintassi alla variabile, piuttosto che usare il metodo.