以编程方式永久地将路径列表添加到Matlab路径

时间:2016-08-22 14:47:00

标签: matlab

我在Matlab版本之间切换。但是我有一个庞大的自定义路径列表,我需要转移到新版本。

有人知道怎么做吗?

似乎是命令

for i = 1:numPaths
    path(path,myPathList{i}) 
end

只是暂时添加路径。此外,addpath仅对一个matlab会话进行时间更改。

2 个答案:

答案 0 :(得分:4)

您可以使用savepath保存pathdef.m文件的路径,该文件将在MATLAB会话之间保留。此pathdef.m个文件所在的位置取决于您当前的配置:

  

savepath将当前MATLAB®搜索路径保存到当前文件夹中的现有pathdef.m文件。如果当前文件夹中没有pathdef.m文件,则savepath会将搜索路径保存到当前路径上的第一个pathdef.m文件中。如果当前路径上没有此类文件,则savepath会将搜索路径保存到MATLAB启动时所在的pathdef.m文件中。   在启用了用户帐户控制(UAC)的Windows®系统上,系统可能会提示您允许更新操作,因为它需要管理员级别的权限。

% Add all paths in myPathList to the path
addpath(myPathList{:}) 

% Save it so that they are already added in new instances
savepath

<强>更新

savepath在用户的路径上找到pathdef.m个文件;但是,MATLAB的启动目录不是那个位置,因为应用程序是从命令行启动的,因此尽管已将更改的路径保存到pathdef.m文件,但在应用程序启动时它没有被读入。解决方案是删除这个“本地”pathdef.m,以便改为使用安装目录中的那个。

答案 1 :(得分:1)

你很幸运,我不得不处理工作中的确切问题,人们会在MATLAB的测试之间切换,在某些情况下,保存的路径会导致麻烦。我在startup.m中写了一个小函数,它确保所有自定义路径都添加到正在使用的特定MATLAB版本的默认路径之上。请注意,我假设MATLAB存在于C:\ Program Files中,您可以根据需要进行更改。

function setPathForNewVersion()
% Find all path strings which do not belong to toolbox folders
customFolders = regexp(strsplit(path,';'),...
    '^(?!C:\\Program Files(\s\(x86\))?\\MATLAB\\R\d{4}(?:a|b)\\toolbox\\\S*)(.*)','match');
customFolderCells = [customFolders{cellfun(@(x)~isempty(x),customFolders)}]; % Remove empty cells

restoredefaultpath; % Momentarily
newPath = sprintf('%s;',customFolderCells{:});
path(newPath, path); % Add the user's custom path to the top
savepath;
end

在你的startup.m然后你可以

function startup
setPathForNewVersion();
end