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

12 visualizzazioni (ultimi 30 giorni)
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?

Risposta accettata

Fangjun Jiang
Fangjun Jiang il 29 Giu 2021
Modificato: Fangjun Jiang il 29 Giu 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 Commenti
Paul
Paul il 29 Giu 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 il 29 Giu 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)

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su File Operations in Help Center e File Exchange

Prodotti


Release

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by