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

38 views (last 30 days)
John
John on 2 Jul 2020
Answered: Steven Lord on 15 May 2022
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
John
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.

Products


Release

R2017a

Community Treasure Hunt

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

Start Hunting!