我在Matlab版本之间切换。但是我有一个庞大的自定义路径列表,我需要转移到新版本。
有人知道怎么做吗?
似乎是命令
for i = 1:numPaths
path(path,myPathList{i})
end
只是暂时添加路径。此外,addpath
仅对一个matlab会话进行时间更改。
答案 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