how do I find where a function is defined (equivalent of "which" command in bash)

When I start Matlab on one of my work machines, I get the message:
"Warning: Function count has the same name as a MATLAB builtin.."
I know exactly what the message means, but I do not know how to fix it, because I can not find where I have defined the function "count". If this was in a bash shell I would type the command "which count". Is there a Matlab equivalent, which shows me where the function "count" has been redefined?

1 Comment

Thanks everyone. I feel a bit silly not trying all permutations. I tried:
which(count)
but not
which count
or
which("count")
which both worked. I was just a bit disoriented not being at my normal desk and without my glasses!

Sign in to comment.

 Accepted Answer

Yes, there is a which command in MATLAB. Note that count is an overloaded function, meaning it exists in several toolboxes. Here are the results in R2021a.
which -all count
built-in (/MATLAB/toolbox/matlab/strfun/count) count is a built-in method % Shadowed string method /MATLAB/toolbox/matlab/codetools/@mtree/count.m % Shadowed mtree method /MATLAB/toolbox/matlab/bigdata/@tall/count.m % Shadowed tall method /MATLAB/toolbox/parallel/parallel/@codistributed/count.m % Shadowed codistributed method

3 Comments

OK, sorry for my silliness at not trying "which count" (see my comment under the question), now a follow-up question: does this mean a user will always see this message on startup, at least in our configuration? It just seems needlessly confusing when the user has not written any "count" function:
>> Warning: Function count has the same name as a MATLAB builtin. We suggest you
rename the function to avoid a potential name conflict.
>> which -all count
built-in (C:\Program Files\MATLAB\R2020a\toolbox\matlab\strfun\count)
count is a built-in method % string method
C:\Program Files\MATLAB\R2020a\toolbox\matlab\codetools\@mtree\count.m % mtree method
C:\Program Files\MATLAB\R2020a\toolbox\matlab\bigdata\@tall\count.m % tall method
C:\Program Files\MATLAB\R2020a\toolbox\mbc\mbcdesign\@designdev\count.m % designdev method
C:\Program Files\MATLAB\R2020a\toolbox\parallel\parallel\@codistributed\count.m % codistributed method
C:\Program Files\MATLAB\R2020a\toolbox\local\count.m % Shadowed
>>
Yes, the user will always see that message on startup.
C:\Program Files\MATLAB\R2020a\toolbox\local\count.m
What is the point of that? It is shadowed with the current path settings, so it will not be invoked -- the strfun\count version will be invoked for datatypes other than the ones listed as having @ .
If the intent is to have it be active only for a particular data type, you should build it into the class for that datatype.
I didn't create it so I don't know what the intention was. (It's not the computer I usually use.) But thank you: now I know why it is giving the warning, and why I am getting a warning for the "count" function and not for anything else.

Sign in to comment.

Categories

Products

Release

R2020a

Asked:

on 14 Jul 2021

Edited:

on 14 Jul 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!