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
2 回答
我找到了解决方案(之前看错了方向) .
您可以使用
mfilename
获取当前脚本名称,cd(fileparts(mfilename))
应该更改为正确的目录 .如果您经常需要运行需要在其脚本目录中运行的脚本,则可以使用此功能:
要在定义
sin
的目录中运行sin(3)
,请使用run_in_dir(@sin,3)