启动一个新的MATLAB会话,而不打开上一个会话中的编辑器窗口

启动一个新的MATLAB会话,而不打开上一个会话中的编辑器窗口,matlab,Matlab,当我在编辑器窗口中打开一些选项卡进行MATLAB会话时,我遇到了一个奇怪的问题。如果启动另一个MATLAB会话,它会在新的编辑器窗口中自动打开相同的选项卡。如何使用MATLAB首选项禁用此功能 我已经选中了首选项中的所有选项 首选项>编辑器/调试器-->禁用“重新启动时重新打开上一个MATLAB会话中的文件” 为什么此设置不持久?这是因为,当MATLAB打开时,它会跟踪加载到编辑器中的文件以及每个文件的显示参数。此信息存储在以下位置 fullfile(prefdir, 'MATLABDeskto

当我在编辑器窗口中打开一些选项卡进行MATLAB会话时,我遇到了一个奇怪的问题。如果启动另一个MATLAB会话,它会在新的编辑器窗口中自动打开相同的选项卡。如何使用MATLAB首选项禁用此功能

我已经选中了首选项中的所有选项

首选项>编辑器/调试器-->禁用“重新启动时重新打开上一个MATLAB会话中的文件”


为什么此设置不持久?

这是因为,当MATLAB打开时,它会跟踪加载到编辑器中的文件以及每个文件的显示参数。此信息存储在以下位置

fullfile(prefdir, 'MATLABDesktop.xml')
当前在活动MATLAB编辑器中打开的每个文件都有一个条目

<Client Class="com.mathworks.mde.editor.EditorViewClient" Dock="yes" Group="Editor" Guest="no" SelectionOrder="15" Show="yes" Singleton="no" StatusBarShowing="yes" TearOff="no" Title="C:\Users\user\AppData\Roaming\MathWorks\MATLAB\R2015a\MATLABDesktop.xml">
    <Location Context="docked" Maximized="yes" Type="floating"/>
    <Location Context="floatingIn" Maximized="yes" Type="floating"/>
    <ClientData EditorFileName="C:\Users\user\AppData\Roaming\MathWorks\MATLAB\R2015a\MATLABDesktop.xml"/>
</Client>

谢谢如何从启动文件修改此文件?这像是在MATLABDesktop.xml下刷新所有内容吗?我也向Mathworks询问过这个功能,但他们还没有回复。@Maddy我绝对不建议删除整个文件,因为它包含很多其他设置。我已经更新了我的帖子,加入了一个脚本,该脚本应该只能删除有问题的条目。您可以将其复制/粘贴到启动脚本中,也可以将其放在单独的函数中并从启动时调用它。
filename = fullfile(prefdir, 'MATLABDesktop.xml');
xml = xmlread(filename);

% Find ALL <Client> entries in the file and determine "Class" attribute
clients = xml.getElementsByTagName('Client');
clients = arrayfun(@(x)clients.item(x-1), 1:clients.getLength, 'uni', 0);
classes = cellfun(@(x)char(x.getAttribute('Class')), clients, 'uni', 0);

% Find all EditorViewClient <Client> entries
func = @(x)isempty(regexp(x, '\.EditorViewClient$', 'once'));
toremove = ~cellfun(func, classes);
clients = clients(toremove);

% Remove all client entries that need to be removed
for k = 1:numel(clients)
    parent = clients{k}.getParentNode();
    parent.removeChild(clients{k});
end

% Write the remaining data back to the file
xmlwrite(filename, xml);