我在Matlab版本之间切换。然而,我有一个巨大的自定义路径列表,我需要移动到新版本。以编程方式向Matlab路径永久添加路径列表
有没有人知道如何做到这一点?
好像命令
for i = 1:numPaths
path(path,myPathList{i})
end
只添加路径时间。另外addpath
只对一个matlab会话进行时间变化。
我在Matlab版本之间切换。然而,我有一个巨大的自定义路径列表,我需要移动到新版本。以编程方式向Matlab路径永久添加路径列表
有没有人知道如何做到这一点?
好像命令
for i = 1:numPaths
path(path,myPathList{i})
end
只添加路径时间。另外addpath
只对一个matlab会话进行时间变化。
您可以使用savepath
的路径保存到一个文件pathdef.m
将MATLAB会话之间持续存在。凡本pathdef.m
文件的生活取决于你的当前配置:
savepath
保存到一个现有的pathdef.m
文件在当前文件夹中当前MATLAB®搜索路径。如果当前文件夹中没有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
,以便使用安装目录中的那个。
你是幸运的,我不得不处理在工作中确切的问题,人们会保持MATLAB和保存路径的verisions之间的切换可能会导致在某些情况下麻烦了。我写了一个小函数来启动我的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
因此,每次启动Matlab时都会调用此函数?这意味着我必须将函数'setPathForNewVersion'放在一些默认的Matlab路径中?我真的很惊讶,为什么不能简单地存储这些条目而不是在每个启动时都调用它们......也许它是Matlab 2014a中的一个错误... – mcExchange
如果你不在版本之间切换,并且这是一次性过渡,那么它的可以使用'savepath',但如果你经常从一个版本转到另一个版本,最好每次启动时都要这样做。你可以在'startup.m'中添加'setPathForNewVersion'作为子函数 –
这不幸的是似乎没有工作。即使我用sudo权利启动Matlab – mcExchange
@mcExchange那怎么办? – Suever
更改不是永久性的。但是真的很奇怪,因为即使使用gui来添加文件夹路径也不是永久性的。也许这是一个错误的Matlab 2014a ... – mcExchange