Borrar filtros
Borrar filtros

persistence of path when using mfilename

1 visualización (últimos 30 días)
Brian
Brian el 3 de Ag. de 2018
Comentada: Image Analyst el 4 de Ag. de 2018
I have a script within a subfolder which is trying to reference the parent directory (two levels up), but am getting some unexpected behavior:
function varargout = myfun(varargin)
...
[myDir,~,~] = fileparts(mfilename('fullpath')); %this function directory
mainScriptDir = fullfile(myDir,'..','..'); %main script directory
...
%end myfun.m
end
the first time I run this I get something like
myDir = ...\parentDir\sub1\sub2 (myfun is located in sub2)
and the main script directory is '...\parentDir\..\..' which would be what I expect.
Subsequent calls yield:
myDir = ...\parentDir\sub1\sub2\..\..\sub1\sub2
myDir = ...\parentDir\sub1\sub2\..\..\sub1\sub2\..\..\sub1\sub2
etc.
Why does the path persist and continue to append with subsequent calls? Shouldn't the myfun workspace reset with each call? Is there a function I need to call to reset this behavior when using relative paths?
Thank you for your help!
Brian
  3 comentarios
Brian
Brian el 3 de Ag. de 2018
No, nor does it seem to matter whether I call myfun from sub2,mainScriptDir, or some other folder.
Walter Roberson
Walter Roberson el 4 de Ag. de 2018
Are you using mainScriptDir to construct a filename that you run() ?

Iniciar sesión para comentar.

Respuestas (1)

Image Analyst
Image Analyst el 3 de Ag. de 2018
You aren't calling cd() in your program anywhere are you?
  2 comentarios
Brian
Brian el 3 de Ag. de 2018
Not currently, but eventually yes.
Image Analyst
Image Analyst el 4 de Ag. de 2018
I wouldn't. And you'll probably have to attach the script that demonstrates the problem, because it doesn't make sense.

Iniciar sesión para comentar.

Categorías

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

Productos


Versión

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by