首页 文章

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

提问于
浏览
3

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

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

2 回答

  • 2

    我找到了解决方案(之前看错了方向) .

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

    您可以使用 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 的目录中运行 sin(3) ,请使用 run_in_dir(@sin,3)

相关问题