Изменение рабочего каталога в Matlab на текущий каталог скриптов с запущенными блоками

Есть ли способ изменить текущий рабочий каталог на текущий каталог скриптов с запущенным кодом только внутри одного блока скрипта? Папка скрипта не добавляется в путь.

Переопределено: есть ли способ изменить текущий рабочий каталог на скрипт, который в данный момент активен в редакторе?

2 ответа

Решение

Я нашел решение (смотрел в неправильном направлении раньше).

tmp = matlab.desktop.editor.getActive;
cd(fileparts(tmp.Filename));

Ты можешь использовать mfilename чтобы получить текущее имя скрипта, cd(fileparts(mfilename)) должен перейти в правильный каталог.

Если вам часто приходится запускать скрипты, которые нужно запускать в их каталоге скриптов, вы можете использовать эту функцию:

function varargout=run_in_dir(fun,varargin)
location=which(func2str(fun));
assert(exist(location,'file')~=0,'fun does not seem to be a m. file');
old_dir=pwd;
cd(fileparts(location));
try
if ~isempty(varargin)
    [varargout{1:nargout}]=fun(varargin{:});
else
    [varargout{1:nargout}]=fun();
end
catch ME
    cd(old_dir)
    rethrow(ME)
end
cd(old_dir)
end

Бежать sin(3) в каталоге где sin определяется, использовать run_in_dir(@sin,3)

Другие вопросы по тегам