Which file Matlab selects if two different files with the same name are put under two folders, which are both added via addpath?

44 views (last 30 days)
Hi,
I have two functions with the same name. The contents of the functions are different although they share the same type of input and output. I put two functions (.m files) in 2 different folders and I add to Matlab path by calling addpath(genpath(folder_location)).
If I call this function, how does Matlab determine which m file to call? It seems to me that different Matlab versions handle differently. However, the way Matlab does is also not very clear. I am looking for the information for 2015a and 2017a.
Thanks,
  2 Comments
Walter Roberson
Walter Roberson on 2 Jul 2020
A far as I recall, R2015a and R2017a were both the same for .m files that are not part of classes and not import'd and not in + directories or 'private' directories. In both cases, the current directory would be searched first, and then the path would be searched in path order. Which is why addpath has specific -BEGIN and -END options, to permit you to tweak the order. (addpath defaults to adding at the beginning of the path.)
John
John on 2 Jul 2020
Edited: John on 2 Jul 2020
I just noticed the difference between 2015a and 2017a is this:
If I am add the current folder which as subfolder1 and subfolder2. I call the commands in the following order:
addpath(genpath(subfolder1));
addpath(genpath(subfolder2));
addpath(genpath(subfolder1));
For 2015a, if I open Matlab search path in "Set Path" button, the top path I see after the commands are subfolder1, subfolder2, and subfolder1, respectively
For 2017a, if I open Matlab search path in "Set Path" button, the top path I see after the commands are subfolder1, subfolder2, and subfolder2, respectively. That means 2017a doesn't move up/re-add on top if that path is already in the search path
I think that is causing me problem in 2017a when trying to use 2017a to run a model has been working well in 2015a.

Sign in to comment.

Accepted Answer

Monisha Nalluru
Monisha Nalluru on 8 Jul 2020
This is a known issue with addpath function in MATLAB R2017a and R2017b. This got fixed in R2018a. It is recommended to update the MATLAB version.
As a workaround for this issue is to remove the path and then add. This results in adding the path at top.
addpath(genpath('subfolder1'))
addpath(genpath('subfolder2'))
% Perform the required operations
% You can use restoredefaultpath command to set the path to default
rmpath('subfolder1')
addpath('subfolder1') % This will add the path on top again

More Answers (1)

Steven Lord
Steven Lord on 15 May 2022
See this documentation page for a discussion of the function precedence order.

Categories

Find more on Search Path in Help Center and File Exchange

Products


Release

R2017a

Community Treasure Hunt

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

Start Hunting!