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

9 vues (au cours des 30 derniers jours)
Paul
Paul le 29 Juin 2021
Commenté : Fangjun Jiang le 29 Juin 2021
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?

Réponse acceptée

Fangjun Jiang
Fangjun Jiang le 29 Juin 2021
Modifié(e) : Fangjun Jiang le 29 Juin 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 commentaires
Paul
Paul le 29 Juin 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 le 29 Juin 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)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur File Operations dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by