将matlab中的工作目录更改为当前具有运行块的脚本目录

时间:2014-06-14 20:11:58

标签: matlab block working-directory

有没有办法将当前工作目录更改为当前脚本目录,并且只在一个脚本块内运行代码?脚本文件夹未添加到路径。

重新定义:有没有办法将当前工作目录更改为编辑器中当前处于活动状态的脚本?

2 个答案:

答案 0 :(得分:10)

我找到了解决方案(以前看错了方向)。

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

答案 1 :(得分:3)

您可以使用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)