Изменение рабочего каталога в 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)