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

45 visualizaciones (últimos 30 días)
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 comentarios
Walter Roberson
Walter Roberson el 2 de Jul. de 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 el 2 de Jul. de 2020
Editada: John el 2 de Jul. de 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.

Iniciar sesión para comentar.

Respuesta aceptada

Monisha Nalluru
Monisha Nalluru el 8 de Jul. de 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

Más respuestas (1)

Steven Lord
Steven Lord el 15 de Mayo de 2022
See this documentation page for a discussion of the function precedence order.

Categorías

Más información sobre Search Path en Help Center y File Exchange.

Productos


Versión

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by