Is There a Way to Find all Shadowed Functions on the matlabpath?

10 views (last 30 days)
I'm dealing with a code base of m-files all in one folder and sub-folders. I'm worried that different sub-folders contain files with the same name. If I put all of this on my matlabpath, is there any way to get a list of all shadowed functions, i.e., same-named function m-files in different subfolders? Or do I have to use a dir command and do some sort of count of each file name? Or some other way?

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 29 Jun 2021
Edited: Fangjun Jiang on 29 Jun 2021
I am not aware of any direct method. On the other hand, Files=dir('**/*.m') will give you all the M-file names including all sub-folders. Then it would be easy to run unique({Files.name}) to find out duplicated file names.
  2 Comments
Paul
Paul on 29 Jun 2021
I'm not sure how unique() helps. For example suppose I have run that dir() command and put all the filenames into one string vector:
str = ["abc";"defg";"defg";"hij";"klmn";"klmn"];
What I want is something like this:
for ii = 1:numel(str)
counts(ii) = sum(str(ii)==str);
end
str(counts>1)
ans = 4×1 string array
"defg" "defg" "klmn" "klmn"
Actually, I guess that code isn't too bad, but I was hoping for something a little cleaner.
Fangjun Jiang
Fangjun Jiang on 29 Jun 2021
Here is a way to find out duplicated names using unique()
str = ["abc";"defg";"defg";"hij";"klmn";"klmn"];
[UniqStr,IA]=unique(str);
index=setdiff(1:length(str),IA);
DuplicatedStr=str(index)

Sign in to comment.

More Answers (0)

Categories

Find more on File Operations in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!